代码之家  ›  专栏  ›  技术社区  ›  Robin Rodricks

四元数旋转是什么?

  •  19
  • Robin Rodricks  · 技术社区  · 14 年前

    四元数旋转是否只是一个向量,其中x,y,z是对象将向其旋转的方向,而roll是旋转对象的轴?

    就这么简单吗?

    如果x=0,z=0,y=1,物体会朝上吗?
    如果你有y=0,z=0,x=1,物体会朝右边吗?

    (假设X向右、Y向上和Z深度)

    2 回复  |  直到 11 年前
        1
  •  42
  •   kennytm    14 年前

    四元数有四个分量,它们可以与角度θ和轴矢量相关。 n . 旋转将使对象绕轴旋转 n 以角度^。

    例如,如果我们有一个类似立方体的

     ______
    |\  6  \
    | \_____\     z
    |5 |    | : y ^
     \ | 4  |    \|
      \|____|     +--> x
    

    然后围绕轴(x=0,y=0,z=1)旋转90°将使“5”面从左向前旋转。

     ______
    |\  6  \
    | \_____\      z
    |3 |    | :  x ^
     \ | 5  |     \|
      \|____|  y<--+
    

    (注意:这是旋转的轴/角度描述,这是OP混淆的地方。有关如何将四元数应用于旋转,请参见 http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation )

        2
  •  18
  •   LarsH    11 年前

    quaternion 一般来说,是将复数扩展为4维。所以不,它们不仅是x,y,和z,还有一个角度,但它们很接近。下面…

    四元数可用于 represent rotation ,因此它们对图形很有用:

    单位四元数提供了方便 数学表示法 物体的方向和旋转 在三维空间。与Euler相比 角度,他们更容易组合和 避免万向节锁的问题。 与旋转矩阵相比,它们是 数值上更稳定,可能 效率更高。

    那么这4个部分是什么 how do they relate to the rotation?

    [单位四元数]点(w,x,y,z)表示 绕轴旋转 以α角表示的矢量(x,y,z) =2 COS - 1 W=2罪 - 1 X射线衍射(X) +Y +Z )

    回到你的问题上来,

    意思是如果x=0,z=0,y=1 物体会朝上吗?

    不。。。对象将围绕此旋转 <0,1,0> 矢量,也就是说,如果图形系统使用右手旋转,它将围绕Y轴旋转,如上图所示逆时针旋转。(如果我们插入w=sqrt(1-(0+1+0)),你的单位四元数是(0,0,1,0),它将以角2 cos旋转。 - 1 0,=2*90度=180度或π弧度。)

    如果你有y=0,z=0,x=1,物体会朝右边吗?

    这将围绕向量旋转 <1,0,0> ,X轴,因此从正X方向(如右)看,它将逆时针旋转。所以顶部会向前转(180度,所以它会旋转,直到它朝下)。