2008-09-11 11 views
7

Próbuję napisać formułę w języku ActionScript 3, która da mi var "z" (patrz rysunek poniżej) w stopniach, który następnie zamienię na radiany.Trygonometria trójkąta (ActionScript 3)

Już znam wartość vars "x" i "y". Korzystając z trygonometrii, w jaki sposób mogę obliczyć długość przeciwprostokątnej, a tym samym zmienny kąt zmiennej z? Roztwór w AS3 lub psuedokodzie byłby bardzo pomocny. Dzięki.

triangle

Odpowiedz

6

Co jest potrzebne:

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

To powinno dać kąt w radianach, może być konieczne zamianowanie x/y i ewentualnie dodanie lub usunięcie 90 stopni, ale powinno wystarczyć! (Zauważ, że nie trzeba nawet h dostać oo gdy używasz atan2)

używam mnożenia zamiast Math.pow() tylko dlatego, że matematyka jest dość powolne, można zrobić:

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

I powinno być dokładnie tak samo.

4

oo odpowiada 180 - kąt yh. Lub:

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

Ponadto, jeśli biblioteki ActionScript matematyczne mają go używać arctan2, która trwa zarówno X i Y i zajmuje się znaki poprawnie.

0

Co powiedział @Patrick, również przeciwprostokątna to sqrt(x^2 + y^2).

1

Kąt, który chcesz, jest taki sam, jak kąt przeciwny do kąta y pomiędzy y i h.

nazwijmy a kąt pomiędzy y i h kąt chcesz faktycznie 180 - aPI - a lub w zależności od jednostki (stopniach lub radianach).

Teraz geometria mówi nam, że:

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

Korzystanie tan(), otrzymujemy:

a = arctan(x/y) 

Jak szukamy 180 - a, należy obliczyć:

180 - arctan(x/y) 
Powiązane problemy