如何绕任意轴旋转?

时间:2011-07-10 20:21:30

标签: algorithm math graphics 3d

吉文斯

1- X,y和Z世界协调系统 2-i,j,k另一个协调系统。 3 - 余弦,其中i,j和k各自与X,Y,Z组合。

问题

  • 如何围绕i或j或k ??
  • 旋转i,j,k系统

2 个答案:

答案 0 :(得分:5)

如果你有通过将i,j,k中的每一个与xhat,yhat和zhat(总共9个角度)中的每一个配对而形成的角度的余弦,那么你就有方向余弦矩阵的素数。例如,请参阅http://www.ae.illinois.edu/~tbretl/ae403/handouts/06-dcm.pdf(或只是谷歌方向余弦矩阵)。方向余弦矩阵只是变换或旋转矩阵的另一个名称。

小心,但是!
没有单一的标准方案。您需要知道情况并仔细阅读文献。

  • 您是在旋转物体还是转换坐标?旋转和变换是共轭操作。有些人(很多人!)当他们的意思是“转换矩阵”时使用术语“旋转矩阵”,反之亦然。
  • 您是将向量表示为列向量还是行向量?这里有更多的一致性;大多数人使用列向量而不是行向量来表示位置,速度等等。但是,对于正确属于双空间的事物,有很好的理由使用行向量(或列向量,如果你是其中一个反向对象)。
  • 四元数的表示比矩阵更加模糊。这没有什么不对(我一直使用四元数),但是当你阅读一篇论文或书籍,查看其他人的代码或交换数据时,你必须要注意这些含糊之处。
  • 最后,矩阵和四元数只是SO(3)中许多图表中的两个。有很多方法可以表示3空间的旋转。

答案 1 :(得分:1)

您可以先创建旋转矩阵或四元数。然后你用它来转换你的矢量。

您可以在几乎任何3d数学库中找到创建旋转矩阵或四元数的代码。

如果我没记错的话,你计算了旋转四元数(假设归一化轴):

q.x=axis.x*sin(alpha)
q.y=axis.y*sin(alpha)
q.y=axis.z*sin(alpha)
q.w=cos(alpha)
相关问题