2008-09-11 33 views
7

Estoy tratando de escribir una fórmula en ActionScript 3 que me proporcione var "z" (vea la imagen a continuación) en grados, que luego convertiré en radianes.Trigonometría triangular (ActionScript 3)

Ya sabré el valor de vars "x" y "y". Usando la trigonometría, ¿cómo puedo calcular la longitud de la hipotenusa y, por lo tanto, el ángulo variable de var z? Una solución en AS3 o psuedocode sería muy útil. Gracias.

triangle

Respuesta

6

Lo que necesita es esto:

var h:Number = Math.sqrt(x*x + y*y); 
var z:Number = Math.atan2(y, x); 

Eso debería darle el ángulo en radianes, puede que tenga que cambiar x/y y posiblemente agregar o eliminar 90 grados, ¡pero debería hacer el truco! (Tenga en cuenta que ni siquiera necesita h para obtener z cuando se está utilizando atan2)

que usar la multiplicación en lugar de Math.pow() sólo porque matemática es bastante lenta, se puede hacer:

var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); 

Y debe ser exactamente lo mismo.

4

z es equivalente a 180 - ángulo de yH. O:

180 - arctan(x/y) //Degrees 
pi - arctan(x/y) //radians 

Además, si las bibliotecas matemáticas de ActionScript tienen, utilizar arctan2, que toma correctamente tanto el X e Y y se ocupa de signos.

0

Lo que dijo @Patrick, también la hipotenusa es sqrt(x^2 + y^2).

1

El ángulo que desea es el mismo que el ángulo opuesto al que se encuentra entre y y h. llamada

Vamos a el ángulo entre y y h, el ángulo que desea es en realidad 180 - aPI - a o dependiendo de su unidad (grados o radianes).

Ahora geometría nos dice que:

cos(a) = y/h 
sin(a) = x/h 
tan(a) = x/y 

Utilizando tan(), obtenemos:

a = arctan(x/y) 

Como estamos buscando 180 - A, debe calcular:

180 - arctan(x/y)