2008-09-11 3 views
7

Ich versuche, eine Formel in ActionScript 3 zu schreiben, die mir var "z" (siehe Bild unten) in Grad geben wird, die ich dann in Radiant umwandeln werde.Dreieck Trigonometrie (ActionScript 3)

Ich werde bereits den Wert von Vars "X" und "Y" kennen. Wie kann ich mit der Trigonometrie die Länge der Hypotenuse und damit den variablen Winkel von var z berechnen? Eine Lösung in entweder AS3 oder Pseudocode wäre sehr hilfreich. Vielen Dank.

triangle

Antwort

6

Was Sie brauchen, ist dies:

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

Das sollte Ihnen den Winkel im Bogenmaß geben, Sie müssen möglicherweise x/y tauschen und möglicherweise 90 Grad hinzufügen oder entfernen, aber es sollte den Trick tun! (Beachten Sie, dass Sie auch h zu bekommen z nicht brauchen, wenn Sie verwenden atan2)

Ich benutze Multiplikation statt Math.pow(), nur weil Mathe ziemlich langsam ist, können Sie tun:

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

Und es sollte genau das gleiche sein.

4

z bis 180 Äquivalent - Winkel von yH. Oder:

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

Auch wenn Action der Mathematikbibliotheken es haben, verwenden Sie arctan2, was nimmt sowohl die x- und y und beschäftigt sich mit Zeichen korrekt.

0

Was @Patrick sagte, auch die Hypotenuse ist sqrt(x^2 + y^2).

1

Der gewünschte Winkel ist derselbe wie der Winkel, der dem Winkel zwischen y und h gegenüberliegt.

Nennen wir a der Winkel zwischen y und h, der Winkel Sie wollen, ist eigentlich 180 - a oder PI - a abhängig von Ihrem Gerät (Grad oder Radiant).

Jetzt Geometrie sagt uns, dass:

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

Mit tan(), erhalten wir:

a = arctan(x/y) 

Da wir für 180 suchen - ein, sollten Sie berechnen:

180 - arctan(x/y)