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.

triangle

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top