【问题标题】:OpenGL rotate around a spotOpenGL围绕一个点旋转
【发布时间】:2023-04-03 05:58:01
【问题描述】:

我想以圆周运动围绕固定点旋转gluSphere,就像行星围绕太阳运行一样。

最好使用 glRotatef 还是 glTranslate?如果是这样,我应该按什么顺序打电话给他们?

【问题讨论】:

    标签: opengl rotation


    【解决方案1】:

    你必须同时做一点:

    • 确保gluSphere“面向”固定点,以便相对于球体向前平移使您更接近其轨道中心
    • glTranslatef gluSphere 前进到您希望它围绕其旋转的点
    • glRotatef 您希望球体运行的方向
    • glTranslatef 就在你往前的位置上

    这样,您的球体与中心的距离保持不变,但会在一个不错的轨道上“围绕”平移。

    【讨论】:

      【解决方案2】:

      从中心平移,然后一直旋转

      【讨论】:

        【解决方案3】:

        glRotatef 将当前矩阵乘以一个旋转矩阵。这可以(给定正确的向量)做你正在尝试的事情。

        glTranslatef 将当前矩阵乘以一个平移矩阵,这将有效地“移动”对象,而不是旋转它,因此它不会是您想要的。

        【讨论】:

        • 那么对于圆周运动,我应该使用什么 glRotatef 来围绕设定点旋转?
        • 我认为说他需要一个是正确的 - 将对象从原点平移,然后围绕原点旋转。 (其中“原点”是您要旋转的中心)
        猜你喜欢
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 2015-10-19
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多