我有一个四元数旋转,通常由 4 个值描述:a b c d
. 可以说它改变了 x 轴,以便我从前面看一些物体。现在我想改变这个旋转,所以我从后面看对象。所以基本上我想从前到后改变视点,但是使用这种旋转来做到这一点。
如何计算反向旋转?
我有一个四元数旋转,通常由 4 个值描述:a b c d
. 可以说它改变了 x 轴,以便我从前面看一些物体。现在我想改变这个旋转,所以我从后面看对象。所以基本上我想从前到后改变视点,但是使用这种旋转来做到这一点。
如何计算反向旋转?
从wikipedia page学习,似乎如果您想围绕z轴执行 180° 旋转,那么相应的四元数旋转将只是:
0 0 0 1
这里的关键是公式,其中 (w,x,y,z) = (a,b,c,d)。
实际上,由于 cos(90°) = 0 且 sin(90°) = 1,然后将 alpha 替换为 180° 并将u替换为 (0, 0, 1),得到 (0, 0, 0, 1)。
编辑:正如 Christian 所指出的,向上方向不必是z,而可以是任何单位向量u = (x,y,z) (否则通过除以其范数对其进行归一化)。在这种情况下,相应的 180° 四元数旋转将是
0 x y z
现在应用此旋转以围绕对象移动,假设您拥有相机的方向向量c_pos
和的位置c_dir
,然后简单地(左)将其与 共轭q = (0 x y z)
,并相应地移动相机位置。就像是
c_dir = q * c_dir * q^-1
c_pos = 2 * o_pos - c_pos
whereo_pos
是对象的位置,c_dir
应转换为实部为 0 的四元数。
在我的情况下,帮我这个..
原始quat (xyzw) 反向quat (y -xw -z)