【发布时间】:2009-02-12 11:29:57
【问题描述】:
我有一个包含 4x4 矩阵的类,用于缩放和平移。我将如何为这个类实现旋转方法?我应该将旋转实现为单独的矩阵吗?
【问题讨论】:
标签: geometry rotation matrix graphics
我有一个包含 4x4 矩阵的类,用于缩放和平移。我将如何为这个类实现旋转方法?我应该将旋转实现为单独的矩阵吗?
【问题讨论】:
标签: geometry rotation matrix graphics
您可以将当前矩阵与旋转矩阵相乘。看看http://en.wikipedia.org/wiki/Rotation_matrix
【讨论】:
每当我需要查找 3D 转换的详细信息时,我都会使用一个名为 http://www.euclideanspace.com 的网站。矩阵旋转的特定页面可以找到here。
编辑:围绕给定轴旋转,查看axis & angle 表示。此页面还链接到有关如何将一种表示形式转换为另一种表示形式的说明。
如果您需要绕多个轴旋转,只需将相应的矩阵相乘即可。
【讨论】:
回答问题的后半部分,单个 4x4 矩阵完全能够进行缩放、平移和旋转。因此,除非您对可以处理的 4x4 矩阵类型设置了特殊限制,否则单个 4x4 就可以满足您的需求。
关于任意向量的旋转(正如您在 cmets 中所问的那样),请查看维基百科文章 yabcok 链接到的“关于任意向量的旋转”部分。您将希望通过用零填充它来将其扩展到 4x4 矩阵,除了 4,4(缩放)位置,它应该是 1。然后使用矩阵乘法和 4x4 缩放/平移来生成新的 4x4 矩阵。
【讨论】:
您要确保找到的参考资料介绍了用于计算机图形学的正确类型的矩阵(即使用 4x4 变换矩阵进行旋转/平移/倾斜的 3D 齐次坐标)。
查看计算机图形“圣经”,例如 Foley and Van Dam (pg. 213),或其中之一:
【讨论】:
【讨论】: