使用方向向量的3D旋转

时间:2014-12-08 05:17:22

标签: c++ math

我有一个物体在3D空间中移动(原点位于中心)。我正在计算方向向量,因为它移动并使用它来在对原点对象进行任何变换之前应用旋转。

      direction vector (position, previousPos): positionX-previousPosX/mag etc

      transformation

      rX = acos(direction_vector_x); etc
      rY = acos(direction_vector_y);
      rZ = acos(direction_vector_z);

      rotate(rZ, rX,rY) // axis rotation 

      draw object

物体首先处于适当的位置,然后随机出现在对角线上并且方向错误。之后旋转平稳,但有时会倒退或颠倒?有人能让我知道如何计算吗?谢谢。

1 个答案:

答案 0 :(得分:1)

你是从单个矢量创建3D坐标系还不够......

  • 您至少需要一个其他向量,例如Up或North vectpr,它与方向不平行<​​/ li>
  • 然后使用交叉乘积生成彼此和方向的2个垂直向量
  • 从那里你有3个轴,原点也应该知道...
  • 所以构造变换矩阵并使用它而不是欧拉角
  • 请参阅transform matrix anatomy