(3 次元) 2 つのベクトル間の符号付き角度を計算する方法を探していますが、これらのベクトル以外の情報はありません。この質問で回答されているように、ベクトルが垂直である平面の法線が与えられた場合、符号付き角度を計算するのは簡単です。しかし、その価値がなければこれを行う方法が見つかりません。2 つのベクトルの外積がそのような法線を生成することは明らかですが、上記の答えを使用して次の矛盾に遭遇しました。
signed_angle(x_dir, y_dir) == 90
signed_angle(y_dir, x_dir) == 90
2番目の結果が負になると予想されます。これは、正規化された入力を使用した次の疑似コードを考えると、外積cross(x_dir, y_dir)
が の反対方向にあるという事実によるものです。cross(y_dir, x_dir)
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 が負になることはないと思います。
提案されたatan2ソリューションで同じ問題を見てきました。
私は作る方法を探しています:
signed_angle(a, b) == -signed_angle(b, a)