Graphics 为什么四元数是由[vector,w]定义的?为什么不是由[point,w]定义的?

Graphics 为什么四元数是由[vector,w]定义的?为什么不是由[point,w]定义的?,graphics,vector,rotational-matrices,quaternions,Graphics,Vector,Rotational Matrices,Quaternions,四元数旋转定义三维空间中的点以及围绕该点轴的旋转。 我试图理解为什么四元数旋转需要向量和旋转,为什么不仅仅是空间中的一个3d点和旋转 在下图中,一只手指向三维空间中的一个点,该点可以绕其轴旋转。 实际上,四元数的x、y和z分量定义了一个指向旋转轴方向的向量。w分量定义了沿该轴的旋转量。所以,x,y和z实际上并不代表一个点。随着旋转量的变化,x、y、z矢量的长度将发生变化,但矢量始终指向同一方向。因此,认为这是空间中的一点是没有意义的。这仅仅是一个方向和围绕这个轴的旋转 我曾经定义了一个新类,其

四元数旋转定义三维空间中的点以及围绕该点轴的旋转。 我试图理解为什么四元数旋转需要向量和旋转,为什么不仅仅是空间中的一个3d点和旋转

在下图中,一只手指向三维空间中的一个点,该点可以绕其轴旋转。


实际上,四元数的x、y和z分量定义了一个指向旋转轴方向的向量。w分量定义了沿该轴的旋转量。所以,x,y和z实际上并不代表一个点。随着旋转量的变化,x、y、z矢量的长度将发生变化,但矢量始终指向同一方向。因此,认为这是空间中的一点是没有意义的。这仅仅是一个方向和围绕这个轴的旋转


我曾经定义了一个新类,其中包括一个四元数来定义对象的变换以及一个向量来描述对象的平移。然后,该对象可以表示3D空间中的完整变换,类似于3x4变换矩阵。

我不确定是否理解其区别:向量由点定义。向量是一个点,即3D空间(也称为方向)和幅值,而点只是3D空间中的一个点(无幅值)。谢谢David,为您的时间和投入。如果你能澄清另外两个问题,我将不胜感激:1。正如您提到的,幅值是缩放因子,它是应用四元数值的对象的缩放因子,如果是这种情况,那么它是一个统一的缩放因子(一个值将定义scale-x、scale-y和scale-z)还是其他对象的缩放因子?2。正如您所解释的,随着旋转量的变化,x、y、z矢量的长度将发生变化,但矢量始终指向同一方向。如果您的意思是沿轴旋转将发生变化;它不是只影响w值吗?沿轴旋转将如何改变矢量的长度?谢谢你让我纠正我原来帖子中的一个错误。四元数的大小对变换没有任何影响。因为四元数的大小是不相关的,让我们假设我们总是使用一个单位四元数,即x^2+y^2+z^2+w^2=1。在这个四元数中,向量表示空间中按sin(1/2θ)缩放的向量,w是cos(1/2θ)。没有相应的轮换。绕X轴旋转180度是非常必要的。绕Y轴旋转90度会很好。谢谢大卫!我很感激。很抱歉找到一个旧帖子,但这是一个轴角度旋转,不是四元数。四元数的直观性要差得多。可以将x、y、z和w视为围绕x轴、y轴、z轴和无旋转(w)按比例混合旋转。所以(x:1,y:0,z:0,w:1)是沿x轴旋转180度和完全不旋转之间的一半,所以结果是沿x旋转90度。同时,它需要归一化,所以(1,0,0,1)实际上应该是(0.707,0,0,0.707)。