(在三维中)我正在寻找一种方法来计算两个向量之间的带符号夹角,除非是这些向量,否则不给出任何信息。如在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