我需要一些小数学问题的帮助。
所以,我得到一个向量v,代表一个方向,两个点s和t。我该做什么,是找到应用于我的向量v的旋转,以使其与由两个给定点定义的向量平行。
目前我有点实现这一点,也就是说,我能够找到角度,而不是应用它的方式(顺时针或逆时针)。
目前我只是计算向量的点积的acos。
欢迎任何输入。
答案 0 :(得分:3)
假设acos
为您提供0到pi之间的值。
我们还要说s
到t
的向量称为u
。正如您已计算的那样,
acos((v . u)/(|v| * |u|))
为您提供角度alpha
。事实上,v
可以u
向alpha
方向旋转一个或另一个方向。
你可能需要2D,但我会先用3D继续。
旋转应围绕垂直于v
和u
的矢量。这个向量当然是两者的交叉乘积:u x v
让我们看一个例子:
/ v
/
/\ alpha
/ )
------------ u
在这种情况下,u x v
会向显示器外部提供一个向量。同时,您可以看到配给alpha
应该逆时针,以使v
与u
平行。
也就是说,在3D中,您必须计算w = u x v
并始终相对于v
逆时针旋转alpha
w
。或者,您可以v
顺时针alpha
相对于-w
(v x u
)进行轮播。
在2D中,我假设你想围绕z
旋转而你不知道哪个方向。您可以应用与上述相同的方法:
w = u x v
w
具有正z(x和y将为零)
v
应逆时针旋转。v
应顺时针旋转。