【问题标题】:Rotation & OpenGL Matrices旋转和 OpenGL 矩阵
【发布时间】:2009-02-12 11:29:57
【问题描述】:

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

【问题讨论】:

    标签: geometry rotation matrix graphics


    【解决方案1】:

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

    【讨论】:

    • 啊所以我只会生成一个旋转矩阵并与当前矩阵相乘而不是存储2?尽管给定向量 xyz 以 3 维旋转,我将如何生成旋转矩阵?
    • @Nowell,你什么意思?根据您的结构,创建一个用于旋转的矩阵并将其乘以您的源矩阵。或者,您可以直接在矩阵上应用乘法。
    • 我基本上是在尝试重新创建 glRotate 的功能
    • 等等!!!不幸的是,引用的维基百科页面没有讨论处理 3D 缩放+变换的标准 4x4 矩阵。
    • 触摸。 :) 但它仍然没有谈论齐次坐标。
    【解决方案2】:

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

    编辑:围绕给定轴旋转,查看axis & angle 表示。此页面还链接到有关如何将一种表示形式转换为另一种表示形式的说明。

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

    【讨论】:

    • hmm 告诉我如何在 x y 或 z 轴上旋转,或将矢量旋转一个角度,但不告诉我如何在给定矢量的情况下同时旋转 x y 和 z 方位角
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      查看计算机图形“圣经”,例如 Foley and Van Dam (pg. 213),或其中之一:

      【讨论】:

        【解决方案5】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-28
          • 1970-01-01
          相关资源
          最近更新 更多