Del flash de AS3 - ¿Cómo expresar la diferencia entre dos coordenadas xy como un número entre 0 y 1?

StackOverflow https://stackoverflow.com/questions/4123074

Pregunta

He creado una clase de reproductores clip de película y animador de clases que animan clips de película a lo largo de un conjunto de x, puntos y. He usado TweenMax de Greensock para llevar a cabo la animación y he puesto la velocidad a ser de 1 segundo entre cada punto. El problema es que cuando la distancia entre dos puntos es pequeña se ve demasiado lento.

Lo que me gustaría hacer es de alguna manera calcular la distancia entre los dos puntos y la salida una velocidad en el rango de 0 a 1 segundos, por lo que la velocidad es ser correcta para las distancias más cortas, así como las distancias más largas.

Cualquier ayuda o consejo sería muy apreciada.

Gracias,

eb_dev

¿Fue útil?

Solución

Me lo segundo Matti Dicho esto, pero se puede hacer más rápido - por un costo de alrededor de 48 a 64 bits de memoria (Whoah tanto !!! ...)

var dX:Number = x1 - x2;
var dY:Number = y1 - y2;
var dist:Number = Math.sqrt(dX * dX + dY * dY);
var animTime = dist / state.stageWidth;

Y para explicar que el eb Dev 's solicitud, la raíz cuadrada no es una parte del teorema de Pitágoras:

a^2 + b^2 = c^2

Líneas de ejes X e Y se puede ver como dos catetos de un triángulo en ángulo recto, y por lo tanto la hipotenusa sería la distancia entre dos puntos específicos (que necesitamos).

En primer lugar restar los puntos (x1 - x2, y1 - y2). Todavía tenemos dos puntos, sin embargo, la parte de ángulo recto del triángulo se encuentra ahora en 0, 0 - el punto en ejes X e Y cruz. Para poder aplicar esto a teorema de Pitágoras, vamos a ver qué tamaño son a y b va a ser - la longitud de la pierna a es la distancia entre 0, 0 y el punto 1. Restando 0, 0 todavía nos deja con el punto 1 solo - sin embargo, sabemos que va a estar en algún lugar en el eje X - Y por lo tanto su será 0. podemos decir que la longitud de iguales X parte del punto 1.

Lo mismo va para b de la pierna y el punto 2. Esta vez, sin embargo, se obtiene simplemente Y parte de ella.

Y para calcular c , primero resumir las segundas potencias de a y < em> b (a ^ 2 + b ^ 2). Ahora tenemos c ^ 2, por lo que para obtener el c -. hipotenusa, vamos a calcular su raíz cuadrada (que es Math.sqrt () en AS3.0)

c es la distancia.

Espero que esto explica esto.

scroll top