【问题标题】:Opengl rotation at a pointOpengl在一点旋转
【发布时间】:2011-10-03 06:56:18
【问题描述】:

我想在 opengl 中旋转一个形状,但我想在某个点旋转它。即我有一个圆柱体,我想旋转它,使它看起来像在底部旋转并且旋转“大小”增加,直到物体掉到地上。我将如何在 opengl 中进行这种旋转?

【问题讨论】:

    标签: opengl rotation


    【解决方案1】:
    1. 翻译到原点
    2. 旋转
    3. 向后翻译

    因此,如果您想围绕 (a,b,c) 旋转,您将在步骤 1 中平移 (-a,-b,-c),在步骤 3 中平移 (a,b,c)。

    (顺便说一句,不要害怕操作的数量。在内部你所做的只是将变换矩阵乘以三倍,但是变换顶点的管道与你做了多少操作无关,它仍然只是使用最后一个矩阵。使用矩阵进行转换的魔力。)

    【讨论】:

    • 但我希望物体旋转一个角度,所以它看起来像是在物体点上旋转。这有意义吗?
    • 等一下,我一时糊涂了……我想说些蠢话。
    • API 为您提供的(除非您在 OpenGL 3.x 及更高版本中维护自己的矩阵堆栈)是沿原点轴的平移和旋转。因此,要围绕 某个其他点 旋转,例如物体的点,你首先变换到原点,旋转,然后变换回来。这应该就是你想要的。
    • 关于“增加旋转大小并掉到地上”,我不是100%确定你的意思,但基本上是一样的。对于“下降”,您可能希望在对象的质心点上使用平移,这也是在应用您想要的任何旋转旋转之前您将转换到原点并返回的点。物体下落时移动质心。或者,您是在说“跌倒”,就像最后倒下的旋转器(儿童玩具)一样?在这种情况下,您将需要一个小型物理模拟,基本上覆盖两个旋转。 OpenGL 部分保持不变。
    • 好的,这是我感兴趣的迷你物理样式。所以我将转换为原点,以便可以围绕该点旋转它。谢谢。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2010-09-06
    相关资源
    最近更新 更多