gpt4 book ai didi

math - 四元数旋转矩阵竟然有相反的意义

转载 作者:行者123 更新时间:2023-12-01 16:03:50 25 4
gpt4 key购买 nike

我对四元数有一些理解上的问题。

为了让我的世界对象以正确的方式旋转,我需要在刷新对象世界矩阵的同时反转它们的四元数旋转。

我用这段代码创建对象旋转:

Rotation = Quaternion.RotationMatrix(
Matrix.LookAtRH(Position,
Position + new Vector3(_moveDirection.X, 0, _moveDirection.Y),
Vector3.Up)
);

然后像这样刷新对象世界矩阵:

Object.World = Matrix.RotationQuaternion(Rotation) 
* Matrix.Translation(Position);

这是行不通的;它使对象以与其应该旋转的方向相反的方式旋转!

这是使我的对象正确旋转的方法:

Object.World = Matrix.RotationQuaternion(Quaternion.invert(Rotation))
* Matrix.Translation(Position);

为什么我必须反转对象旋转?

最佳答案

这不是四元数问题,而是您正在使用的 DirectX 调用的用法和/或文档问题。调用提供的转换是移动相机时发生的转换。如果你保持相机固定并移动世界,你就是在交换移动的和固定的。这些坐标变换是彼此的逆变换,这就是为什么对你进行逆变换的原因。

不过,您不需要进行显式逆运算。只需交换前两个参数的顺序即可。

关于math - 四元数旋转矩阵竟然有相反的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7477006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com