javascript - google - Obtener distancia entre dos puntos en el lienzo
calcular distancia entre dos puntos google maps api (5)
Tengo una pestaña de dibujo de lienzo y quiero que lineWidth se base en la distancia entre dos últimas actualizaciones de coordenadas de mousemove. Haré la traducción de la distancia al ancho yo solo, necesito saber cómo obtener distancia entre esos puntos (ya tengo las coordenadas de esos puntos).
La distancia entre dos coordenadas xey x1 y y1 es el primer punto / posición, x2 y y2 es el segundo punto / posición!
function diff (num1, num2) {
if (num1 > num2) {
return (num1 - num2);
} else {
return (num2 - num1);
}
};
function dist (x1, y1, x2, y2) {
var deltaX = diff(x1, x2);
var deltaY = diff(y1, y2);
var dist = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
return (dist);
};
Puedes hacerlo con el teorema de Pitágoras
Si tiene dos puntos (x1, y1) y (x2, y2), entonces puede calcular la diferencia en xy la diferencia en y, así los llamaremos a y b.
var a = x1 - x2;
var b = y1 - y2;
var c = Math.sqrt( a*a + b*b );
// c is the distance
Tenga en cuenta que Math.hypot
es parte del estándar ES2015. También hay un buen polyfill en el documento MDN para esta característica.
Así que obtener la distancia se vuelve tan fácil como Math.hypot(x2-x1, y2-y1)
.
tiendo a usar mucho este cálculo en las cosas que hago, así que me gusta agregarlo al objeto Math:
Math.dist=function(x1,y1,x2,y2){
if(!x2) x2=0;
if(!y2) y2=0;
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
Math.dist(0,0, 3,4); //the output will be 5
Math.dist(1,1, 4,5); //the output will be 5
Math.dist(3,4); //the output will be 5
Actualizar:
Este enfoque es especialmente feliz cuando terminas en situaciones similares a esto (a menudo lo hago):
varName.dist=Math.sqrt( ( (varName.paramX-varX)/2-cx )*( (varName.paramX-varX)/2-cx ) + ( (varName.paramY-varY)/2-cy )*( (varName.paramY-varY)/2-cy ) );
esa cosa horrible se vuelve mucho más manejable:
varName.dist=Math.dist((varName.paramX-varX)/2, (varName.paramY-varY)/2, cx, cy);
http://en.wikipedia.org/wiki/Euclidean_distance
Si tiene las coordenadas, use la fórmula para calcular la distancia:
var dist = Math.sqrt( Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2) );