(3次元)2つのベクトル間の符号付き角度を計算する方法を探しています。 this questionで答えられるように、ベクトルが垂直である平面の法線が与えられると、符号付きの角度を計算するのは簡単です。しかし、私はその価値なしでこれを行う方法が見つけられません。参照平面のない2つのベクトル間の符号付き角度
私は2番目の結果が陰性であることが期待されるsigned_angle(x_dir, y_dir) == 90
signed_angle(y_dir, x_dir) == 90
:それは2つのベクトルの外積は、通常、私は上記の答えを使用して、次の矛盾に遭遇してきたを生成することは明らかです。
signed_angle(Va, Vb)
magnitude = acos(dot(Va, Vb))
axis = cross(Va, Vb)
dir = dot(Vb, cross(axis, Va))
if dir < 0 then
magnitude = -magnitude
endif
return magnitude
私はdirは、これまで以上のマイナスになると信じていない:これは外積cross(x_dir, y_dir)
がcross(y_dir, x_dir)
の反対方向にあることに起因する、正規化された入力と、次の擬似コードを与えられました。
提案されているatan2ソリューションで同じ問題が発生しました。
私が作るための方法を探しています:
signed_angle(a, b) == -signed_angle(b, a)
はこれではありません:http://www.jtaylor1142001.net/calcjat/Solutions/VDotProduct/VDPTheta3D.htmあなたが探しているのは? – Jack
上記のコメントのリンクは機能しません – ephere