ActionScript 3 で、var "z" (下の画像を参照してください) を度単位で取得し、それをラジアンに変換する数式を記述しようとしています。
変数「x」と「y」の値はすでにわかっています。三角法を使用して、斜辺の長さ、したがって var z の可変角度を計算するにはどうすればよいですか? AS3 または疑似コードのソリューションは非常に役立ちます。ありがとう。
ActionScript 3 で、var "z" (下の画像を参照してください) を度単位で取得し、それをラジアンに変換する数式を記述しようとしています。
変数「x」と「y」の値はすでにわかっています。三角法を使用して、斜辺の長さ、したがって var z の可変角度を計算するにはどうすればよいですか? AS3 または疑似コードのソリューションは非常に役立ちます。ありがとう。
必要なものはこれです:
var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);
これでラジアン単位の角度が得られるはずです。x/y を交換し、場合によっては 90 度を追加または削除する必要がありますが、うまくいくはずです。( atan2 を使用している場合、zを取得するためにhも必要ないことに注意してください)
Math.pow() の代わりに乗算を使用します。これは、Math が非常に遅いためです。次のことができます。
var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
そして、それはまったく同じでなければなりません。
z は 180 - yH の角度に相当します。または:
180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians
また、actionscript の数学ライブラリにある場合は、x と y の両方を取り、符号を正しく処理する arctan2 を使用します。
必要な角度は、yとhの間の角度とは反対の角度と同じです。
a
との間の角度をy
と呼びましょうh
。必要な角度は、実際には、180 - a
または PI - a
単位(度またはラジアン)によって異なります。
ジオメトリは次のことを示しています。
cos(a) = y/h
sin(a) = x/h
tan(a) = x/y
tan()を使用すると、次のようになります。
a = arctan(x/y)
180-aを探しているので、次のように計算する必要があります。
180 - arctan(x/y)
@Patrickが言ったこと、また斜辺はsqrt(x^2 + y^2)
.