Distância Do Ponto à Reta //Repositório JavaScript
Descrição
Distância de um ponto a uma reta/semi-reta.
Criado: 2005.08.19
Criado: 2005.08.19
Código (Download)
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/math/dot-line-length [rev. #1]
dotLineLength = function(x, y, x0, y0, x1, y1, o){
function lineLength(x, y, x0, y0){
return Math.sqrt((x -= x0) * x + (y -= y0) * y);
}
if(o && !(o = function(x, y, x0, y0, x1, y1){
if(!(x1 - x0)) return {x: x0, y: y};
else if(!(y1 - y0)) return {x: x, y: y0};
var left, tg = -1 / ((y1 - y0) / (x1 - x0));
return {x: left = (x1 * (x * tg - y + y0) + x0 * (x * - tg + y - y1)) / (tg * (x1 - x0) + y0 - y1), y: tg * left - tg * x + y};
}(x, y, x0, y0, x1, y1), o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1))){
var l1 = lineLength(x, y, x0, y0), l2 = lineLength(x, y, x1, y1);
return l1 > l2 ? l2 : l1;
}
else {
var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1;
return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b);
}
};
Exemplo (Exemplo)
<script type="text/javascript">
//<![CDATA[
alert(dotLineLength(20, 0, 0, 0, 10, 0, true));
alert(dotLineLength(20, 0, 0, 0, 10, 0));
//]]>
</script>
Ajuda
- dotLineLength(x: Integer, y: Integer, x0: Integer, y0: Integer, x1: Integer, y1: Integer, [overLine: Boolean = False]): Double
-
Distância de um ponto até uma reta.
- x
- coordenada x do ponto
- y
- coordenada y do ponto
- x0
- coordenada x do ponto A da reta
- y0
- coordenada y do ponto A da reta
- x1
- coordenada x do ponto B da reta
- y1
- coordenada y do ponto B da reta
- overLine
- especifica se o cálculo deve respeitar os limites do segmento de reta (overLine = true) ou se ele deve considerar a reta como uma linha infinita (overLine = false), ou seja, se setado em false retorna a distância do ponto a reta, se setado em true retorna a distância do ponto ao segmento
Ranque (Votos: 30)
3.77