(在三維中)我正在尋找一種方法來計算兩個向量之間的帶符號夾角,除非是這些向量,否則不給出任何信息。如在this question中回答的那樣,在給定矢量垂直的平面的法線的情況下計算符號角是足夠簡單的。但是如果沒有這個價值,我無法找到辦法。很顯然,兩個向量的叉積產生這樣一個正常的,但我已經使用上面的答案碰上以下矛盾:沒有參考平面的兩個向量之間的符號夾角
signed_angle(x_dir, y_dir) == 90
signed_angle(y_dir, x_dir) == 90
在那裏我希望第二個結果爲陰性。這是由於這樣的事實,叉積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
我不相信目錄將永遠是負面的上方。
我看到了與建議的atan2解決方案相同的問題。
我正在尋找一種方法,使:
signed_angle(a, b) == -signed_angle(b, a)
是不是這個:http://www.jtaylor1142001.net/calcjat/Solutions/VDotProduct/VDPTheta3D.htm你在找什麼? – Jack 2012-04-13 01:05:03
以上評論中的鏈接不起作用 – ephere 2013-08-16 13:11:40