OpenGL:围绕3D空间中的一个点旋转

时间:2015-07-28 22:03:34

标签: android opengl-es 3d rotation

我一直在做一些类似问题的狩猎,但却找不到我想要的东西。

我正在尝试围绕(0,0,0)旋转对象,无论其x,y和z偏移如何。

举一个例子,考虑以下相关情况:

  

我有一个围绕以(0,0,0)为中心的行星旋转的月球。月亮的初始偏移量为(1,1,1)。我想在每个框架周围旋转月球和其他卫星。

为了做到这一点,我开始使用以下代码:

    for (GMoon moon : moonList)
    {
        Point offset = moon.getOffset();

        float newRot = moon.getRotation() + moon.getRotSpeed();
        moon.setRotation(newRot);

        // Return to the identity matrix
        gl.glLoadIdentity();

        // Translate and rotate the planet
        gl.glTranslatef(0.0f, 0.0f, OBJECT_DISTANCE);
        gl.glRotatef(newRot, 0, 0, 1);
        gl.glTranslatef(offset.getX(), offset.getY(), offset.getZ());

        // Draw the moon
        moon.draw(gl);
    }

(OBJECT_DISTANCE等于-10用于查看目的)。

不是在行星前面旋转,而是围绕行星旋转。

我做错了什么?

非常感谢你的时间。

编辑:我假设我需要根据月球的偏移将每个轴旋转一个特定的组件。我不太确定应该如何计算这样的组件。

1 个答案:

答案 0 :(得分:0)

我假设你想围绕地球以及它周围的中心点旋转月球。达到这个目的:

我认为还有类似的问题: Rotating an object around a fixed point in opengl