我现在用directx玩了一段时间,并且无法弄清楚如何旋转它而不会一直旋转它(0,0,0)。我离世界中心越远,旋转时就会产生更大的圆圈。
答案 0 :(得分:0)
如果你需要一个旋转α,围绕位于(x 0,y 0,z 0)的点p,你创建矩阵:
T(-x₀,-y₀,-z₀) * R(α) * T(x₀,y₀,z₀)
T表示翻译,R表示旋转。此外,根据您的约定,例如行或列矩阵,您可能必须恢复操作顺序。
答案 1 :(得分:0)
不要忘记矩阵变换适用于坐标系。假设您希望将对象在xy平面上向上移动20个单位,并将其旋转90度。如果先旋转90度,则将整个平面旋转90度。这意味着当您向上平移y轴时,90度是新的“向上”。
所以,我们首先翻译,以便我们的对象的中心是0,0。现在当我们旋转时,我们应该围绕物体的中心旋转。当然,不要忘记翻译,或以某种方式清除矩阵。
顺序在进行矩阵变换时很重要,我相信你知道。通常,您应该翻译,缩放,然后旋转。