是否可以使用四元数旋转任意原点周围的对象?

时间:2017-05-17 19:54:04

标签: opengl-es three.js glsl

我想知道是否可以定义对象的旋转不是围绕自身而是围绕任意原点,有效地消除了将XYZ位置向量传递给GPU的需要。因此,我们可以预先计算一个仅仅定义对象位置和旋转的四元数而不是XYZ位置+ XYZW四元数?

1 个答案:

答案 0 :(得分:2)

纯四元数是不可能的。四元数只有四个自由度。如果将其用于变换,则旋转为3度,缩放为1度。只有四元数才能提供。

但是,

Dual Quaternions可以表示平移(因此也可以表示任意轴的旋转)。这需要存储四个数字的成本,通常不值得麻烦。双四元数的优点是刚体变换可以用合适的方式表达,具有良好的代数背景。它通常用于动画以一致的方式在多个变换之间进行插值。

在大多数情况下,双四元数的优点并不比它们的复杂性大。因此,使用简单的偏移向量在大多数情况下更合理。