2009-02-12 211 views
1

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

回答

3

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

+0

啊,所以我只会产生一个旋转矩阵,并与目前的矩阵乘法而不是存储2?我怎么会产生一个旋转矩阵,虽然给了一个向量xyz旋转三维? – 2009-02-12 12:25:08

+0

@Nowell,你是什么意思?根据您的结构,创建一个旋转矩阵并将其乘以源矩阵。或者,您可以将乘法直接应用于矩阵。 – strager 2009-02-12 13:24:38

1

有一个网站,我每次使用时,我需要查找3D转换的细节,称为http://www.euclideanspace.com。矩阵旋转中的特定页面可以找到here

编辑:围绕给定坐标轴旋转,请查看axis & angle表示法。此页面还链接到如何将一个表示法翻译为另一个表示法的说明。

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

1

回答问题的后半部分时,单个4x4矩阵完全有能力进行缩放,平移和旋转。所以,除非你对可以处理的4x4矩阵有特别的限制,否则一个4x4就可以满足你的要求。

至于关于任意矢量的旋转(如您在评论中所要求的),请查看yabcok链接到的维基百科文章中的“旋转关于任意矢量”部分。你会想通过用零填充4x4矩阵,除了4,4(缩放)位置,它应该是一个。然后使用矩阵乘法与缩放/平移4x4生成一个新的4x4矩阵。