Directx11绕世界中心旋转

Directx11 rotation around center of world?

本文关键字:旋转 世界中心 Directx11      更新时间:2023-10-16

我已经用directx玩了一段时间了,不知道如何在不旋转的情况下旋转一些东西(0,0,0)。我离我的世界中心越远,它在旋转过程中形成的圆圈就越大。

不要忘记矩阵变换适用于坐标系。假设你想把物体在xy平面上向上移动20个单位,然后旋转90度。如果你先旋转90度,你会把整个平面旋转90度。这意味着当你向上平移y轴时,90度是新的"向上"。

我们先平移,使对象的中心为(0,0)当我们旋转时,我们应该绕着物体的中心旋转。当然,不要忘记转换回来,或者以某种方式清除矩阵。

在做矩阵变换时,顺序很重要,我相信你知道。通常,你应该平移,缩放,然后旋转。

如果您需要围绕位于(x 0,y 0,z 0)的点p旋转α,则创建矩阵:

T(-x₀,-y₀,-z₀) * R(α) * T(x₀,y₀,z₀)

T表示平移,R表示旋转。此外,根据您的约定,例如行矩阵或列矩阵,您可能必须恢复操作顺序。