Trigonometria del triangolo (ActionScript 3)
-
09-06-2019 - |
Domanda
Sto cercando di scrivere una formula in ActionScript 3 che mi darà var "z" (vedi immagine sotto) in gradi, che poi convertirò in radianti.
Conoscerò già il valore delle variabili "x" e "y".Usando la trigonometria, come posso calcolare la lunghezza dell'ipotenusa e quindi l'angolo variabile di var z?Una soluzione in AS3 o pseudocodice sarebbe molto utile.Grazie.
Soluzione
Ciò di cui hai bisogno è questo:
var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);
Questo dovrebbe darti l'angolo in radianti, potresti dover scambiare x/y ed eventualmente aggiungere o rimuovere 90 gradi ma dovrebbe bastare!(Nota che non ti serve nemmeno H ottenere z quando usi atan2)
Uso la moltiplicazione invece di Math.pow() solo perché Math è piuttosto lenta, puoi fare:
var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
E dovrebbe essere esattamente lo stesso.
Altri suggerimenti
z è equivalente a 180 - angolo di yH.O:
180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians
Inoltre, se le librerie matematiche di actionscript ce l'hanno, usa arctan2, che accetta sia x che y e gestisce correttamente i segni.
L'angolo desiderato è uguale all'angolo opposto a quello compreso tra y e h.
Chiamiamo a
l'angolo tra y
E h
, l'angolo desiderato è effettivamente 180 - a
O PI - a
a seconda dell'unità (gradi o radianti).
Ora la geometria ci dice che:
cos(a) = y/h
sin(a) = x/h
tan(a) = x/y
Usando tan(), otteniamo:
a = arctan(x/y)
Poiché stiamo cercando 180 - a, dovresti calcolare:
180 - arctan(x/y)
Quello che ha detto @Patrick, lo è anche l'ipotenusa sqrt(x^2 + y^2)
.