Cer*_*rin 27 python java math trigonometry angle
你怎么能找到从矢量a到b的有角度θ?
是的,我知道theta = arccos((ab)/(| a || b |)).
但是,这不包含符号(即它不区分顺时针或逆时针旋转).
我需要能告诉我从a到b旋转的最小角度.正号表示从+ x轴向+ y轴的旋转.相反,负号表示从+ x轴向-y轴的旋转.
assert angle((1,0),(0,1)) == pi/2.
assert angle((0,1),(1,0)) == -pi/2.
Run Code Online (Sandbox Code Playgroud)
Der*_*ter 53
您想要使用的通常称为"perp点积",即找到垂直于其中一个向量的向量,然后找到带有另一个向量的点积.
if(a.x*b.y - a.y*b.x < 0)
angle = -angle;
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
angle = atan2( a.x*b.y - a.y*b.x, a.x*b.x + a.y*b.y );
Run Code Online (Sandbox Code Playgroud)
Spa*_*arr 33
如果您选择的数学库中有atan2()函数:
signed_angle = atan2(b.y,b.x) - atan2(a.y,a.x)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27877 次 |
| 最近记录: |