可能的重复:
找到向量之间的符号角
我需要一些数学问题的帮助。
所以,我得到了一个向量 v,代表一个方向,以及两个点 s 和 t。我要做的是找到应用于我的向量 v 的旋转,以使其与两个给定点定义的向量平行。
目前我在某种程度上实现了这一点,也就是说,我能够找到角度,而不是应用它的方式(顺时针或逆时针)。
目前我只是在计算向量点积的 acos。
欢迎任何意见。
可能的重复:
找到向量之间的符号角
我需要一些数学问题的帮助。
所以,我得到了一个向量 v,代表一个方向,以及两个点 s 和 t。我要做的是找到应用于我的向量 v 的旋转,以使其与两个给定点定义的向量平行。
目前我在某种程度上实现了这一点,也就是说,我能够找到角度,而不是应用它的方式(顺时针或逆时针)。
目前我只是在计算向量点积的 acos。
欢迎任何意见。
假设acos
给你一个介于 0 和 pi 之间的值。
假设向量 from s
tot
被称为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
应顺时针旋转。