2024-05-14 03:11:51 发布
网友
从向量a到向量b的有符号角θ是怎么找到的?
是的,我知道theta=arccos((a.b)/(| a | b |)。
但是,这不包含符号(即,它不区分顺时针或逆时针旋转)。
我需要一些能告诉我从a到b旋转的最小角度的东西。一个正号表示从+x轴到+y轴的旋转。相反,负号表示从+x轴向-y轴的旋转。
assert angle((1,0),(0,1)) == pi/2. assert angle((0,1),(1,0)) == -pi/2.
如果在数学库中选择了atan2()函数:
signed_angle = atan2(b.y,b.x) - atan2(a.y,a.x)
要使用的通常称为“perp点积”,即找到垂直于其中一个向量的向量,然后找到与另一个向量的点积。
if(a.x*b.y - a.y*b.x < 0) angle = -angle;
您也可以这样做:
angle = atan2( a.x*b.y - a.y*b.x, a.x*b.x + a.y*b.y );
如果在数学库中选择了atan2()函数:
要使用的通常称为“perp点积”,即找到垂直于其中一个向量的向量,然后找到与另一个向量的点积。
您也可以这样做:
相关问题 更多 >
编程相关推荐