Tengo una pestaña de dibujo de lienzo y quiero que lineWidth se base en la distancia entre las dos últimas actualizaciones de coordenadas de mousemove. Yo mismo haré la traducción de la distancia al ancho, solo necesito saber cómo obtener la distancia entre esos puntos (ya tengo las coordenadas de esos puntos).
javascript
canvas
Anagmate
fuente
fuente
x1 - x2, y1 - y2
ox2 - x1, y2 - y1
?7 - 5 = 2
o5 - 7 = -2
no importará.-2 * -2 = 4
2 * 2 = 4
Tenga en cuenta que
Math.hypot
es parte del estándar ES2015. También hay un buen polyfill en el documento MDN para esta función.Así que conseguir la distancia se vuelve tan fácil como
Math.hypot(x2-x1, y2-y1)
.fuente
http://en.wikipedia.org/wiki/Euclidean_distance
Si tiene las coordenadas, use la fórmula para calcular la distancia:
Si su plataforma es compatible con el
**
operador , puede usar eso:fuente
¡La distancia entre dos coordenadas xey! x1 e y1 es el primer punto / posición, x2 e y2 es el segundo punto / posición.
fuente
Math.abs
lugar dediff
.diff
ya que elevar un número al cuadrado siempre dará como resultado un número positivo. Six1 - y1
es negativo,(x1 - y1) ^ 2
sigue siendo positivo.Tiendo a usar mucho este cálculo en las cosas que hago, así que me gusta agregarlo al objeto Math:
Actualizar:
este enfoque es especialmente feliz cuando terminas en situaciones similares a esto (a menudo lo hago):
esa cosa horrible se vuelve mucho más manejable:
fuente