我对四元数有一些理解问题。
为了让我的世界对象以正确的方式旋转,我需要在刷新对象世界矩阵的同时反转它们的四元数旋转。
我使用以下代码创建对象旋转:
Rotation = Quaternion.RotationMatrix(
Matrix.LookAtRH(Position,
Position + new Vector3(_moveDirection.X, 0, _moveDirection.Y),
Vector3.Up)
);
并像这样刷新对象 World 矩阵:
Object.World = Matrix.RotationQuaternion(Rotation)
* Matrix.Translation(Position);
这是行不通的;与应有的方式相比,它使对象以相反的方式旋转!
这是使我的对象正确旋转的方式:
Object.World = Matrix.RotationQuaternion(Quaternion.invert(Rotation))
* Matrix.Translation(Position);
为什么我必须反转对象旋转?