1

組み込み関数を使用して2つのベクトル間の角度を見つけるのに苦労している奇妙な問題

var v1:Vector3D = new Vector3D(0, 0, 0);
var v2:Vector3D = new Vector3D(50, 0, 50);
//Vector3D(0, 0, 0) Vector3D(50, 0, 50)
var angle1:Number = Vector3D.angleBetween(v1,v2) * 180 / Math.PI;
var angle2:Number = Vector3D.angleBetween(v2,v1) * 180 / Math.PI;

trace(angle1,angle2);

これは angle1 と angle2 の両方に対して NaN を返します

ただし、ゼロ以外の値 (0.00001 などの小さい数値) を y プロパティとしてベクターのいずれかに渡すと、数値/角度が取得されます。

このため、このメソッドを呼び出す前に、ベクトルを複製し、y に小さな数値 (0.00001) を追加しています。

私が何か間違ったことをしているのか、そこにバグがあるのか​​ わかりません。誰かが助けることができますか?

4

1 に答える 1

4

Vector(0,0,0) の角度は無限大で、サイズは 0 (定義より) です。間に角度がないのはそのためです。あなたは付け加えられます

if(angle1 == NaN) {
  //fix
}

希望どおりに機能させるために。

于 2013-01-10T10:58:27.987 に答える