1

我在沿着自己的轴而不是任意位置旋转立方体时遇到问题。该多维数据集是其他 27 个多维数据集的集合,我成功地设法旋转了这组多维数据集,但方式不正确。我的意思是当我在 x 轴上旋转立方体时,它围绕输入 (0,0,0) 而不是在它自己的轴上形成一个轨道。我怎样才能让立方体围绕自己的轴旋转?

public void onDrawFrame(GL10 gl) 
{
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
    gl.glScalef(0.8f, 0.8f, 0.8f);  
    int k=0;

    gl.glPushMatrix();
    gl.glRotatef(cubeRotX, 0.0f, 0.0f , 1.0f);
    gl.glRotatef(cubeRotY, 0.0f, 1.0f , 0.0f);
    for(int l=0; l<3; l++)
    {
        if(l == 2)  //To rotate only the first front polygon in 1.7f angle
        {
            gl.glPushMatrix();
            gl.glRotatef(rot, 0.0f, 0.0f, 1.0f);
        }
        for(int i=0; i<3; i++)
        {               
            for(int j=0; j<3; j++)
            {
                gl.glPushMatrix();
                gl.glTranslatef(-2.1f+(2.1f*i), -2.1f+(2.1f*j), -23.1f+(2.1f*l));
                cube[k++].draw(gl);
                gl.glPopMatrix();
            }

        }
        if(l ==2)
        {
            gl.glPopMatrix();
            if(rot >= 90.0f)
                rot = 90.0f;
            else
                rot += 4.0f;  
        }
    }
    gl.glPopMatrix();
    cubeRotX -= 5.0f;
    cubeRotY -= 5.0f;
}
4

1 回答 1

0

要旋转每个单独的立方体,请在内部 glPushMatrix 内应用旋转。

编辑:我误解了你。询问更多信息。

在你澄清之后:

  • 加载身份
  • 对所有对象应用一般变换
  • 推矩阵
  • 为围绕太阳和太阳本身的所有子立方体应用旋转(围绕太阳的所有立方体的一般旋转,可能这可能根本没有旋转,具体取决于您要存档的内容)
  • 推矩阵
  • 为你的“太阳”应用革命。
  • 画太阳
  • 流行矩阵
  • 对于每个内部/子立方体:
    • 推矩阵
    • 应用腐烂
    • 绘制立方体
    • 弹出矩阵
  • 流行矩阵
于 2013-05-07T10:31:41.133 回答