1

我有一个类,它包含一个用于缩放和平移的 4x4 矩阵。我将如何为这个类实现旋转方法?我应该将旋转实现为单独的矩阵吗?

4

5 回答 5

3

您可以将当前矩阵与旋转矩阵相乘。看看http://en.wikipedia.org/wiki/Rotation_matrix

于 2009-02-12T11:47:20.400 回答
1

每当我需要查找 3D 转换的详细信息时,我都会使用一个名为http://www.euclideanspace.com的网站。可以在此处找到有关矩阵旋转的特定页面。

编辑:围绕给定轴旋转,查看轴和角度表示。此页面还链接到有关如何将一种表示形式转换为另一种表示形式的描述。

如果您需要围绕多个轴旋转,只需将相应的矩阵相乘即可​​。

于 2009-02-12T12:38:49.840 回答
1

回答问题的后半部分,单个 4x4 矩阵完全能够保持缩放、平移和旋转。因此,除非您对可以处理的 4x4 矩阵类型设置了特殊限制,否则单个 4x4 就可以满足您的需求。

至于关于任意向量的旋转(正如您在评论中询问的那样),请查看维基百科文章 yabcok 链接中的“关于任意向量的旋转”部分。您将希望通过用零填充它来将其扩展到 4x4 矩阵,除了 4,4(缩放)位置,它应该是 1。然后使用矩阵乘法与您的缩放/平移 4x4 生成一个新的 4x4 矩阵。

于 2009-02-12T13:38:57.340 回答
0

您要确保找到一个参考,其中讨论了用于计算机图形学的正确类型的矩阵(即使用 4x4 变换矩阵进行旋转/平移/倾斜的 3D 齐次坐标)。

请参阅计算机图形“圣经”,例如Foley 和 Van Dam第 213 页),或其中之一:

于 2009-02-12T14:16:22.307 回答
0

这个页面有很多有用的信息: http:
//knol.google.com/k/matrices-for-3d-applications-translation-rotation

于 2010-10-31T20:51:18.597 回答