0

可能的重复:
找到向量之间的符号角

我需要一些数学问题的帮助。

所以,我得到了一个向量 v,代表一个方向,以及两个点 s 和 t。我要做的是找到应用于我的向量 v 的旋转,以使其与两个给定点定义的向量平行。

目前我在某种程度上实现了这一点,也就是说,我能够找到角度,而不是应用它的方式(顺时针或逆时针)。

目前我只是在计算向量点积的 acos。

欢迎任何意见。

4

1 回答 1

3

假设acos给你一个介于 0 和 pi 之间的值。

假设向量 from stot被称为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旋转。或者,您可以相对于(即)顺时针旋转。alphawvalpha-wv x u

在 2D 中,我假设您想要旋转z并且您不知道哪个方向。您可以应用与上述相同的方法:

  • 计算w = u x v
  • 如果w具有正 z(x 和 y 将为零)
    • 然后,v应逆时针旋转。
    • 否则,v应顺时针旋转。
于 2012-05-08T23:01:20.053 回答