如何在 JOGL 中旋转两条独立于彼此轴的线?



下面是我使用 JOGL 创建的两行代码。其中一条沿 x 轴,而另一条线为 z。当我执行下面的代码时,沿 x 轴的线按预期绕 z 轴旋转,但是,沿 z 轴的线不仅绕 x 轴旋转,它还意外地绕 z 轴旋转(它自己的轴(。如何防止这种情况发生?

    public void display(GLAutoDrawable drawable){
    final GL2 gl = drawable.getGL().getGL2();
    gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
    gl.glRotatef(rtri, 0.0f, 0.0f, 1.0f);//rotation about z axis
    gl.glBegin (GL2.GL_LINES);
    gl.glColor3f( 0.0f, 1.0f, 0.0f );   
        gl.glVertex3f(-0.50f, 0.0f, 0);//vertex 1 of line 1
        gl.glVertex3f(0.50f, 0.0f, 0);//vertex 2 of line 1
        gl.glEnd();
        gl.glFlush();
    gl.glRotatef(rtri, 1.0f, 0.0f, 0.0f);//rotation about x axis
    gl.glBegin (GL2.GL_LINES);
    gl.glColor3f( 0.0f, 1.0f, 0.0f );   
        gl.glVertex3f(0.0f, 0, 0.5f);//vertex 1 of line 2
        gl.glVertex3f(0.0f, 0, -0.5f);//vertex 2 of line 2
        gl.glEnd();
        gl.glFlush();
    rtri+=0.30f;
}

>glRotate对当前活动矩阵进行更改,然后将其与顶点向量相乘。 glLoadIdentity重置此矩阵。如果你想让第二条线完全独立地旋转,你只需要在画第一条线后再次重置它:

gl.glLoadIdentity(); // reset matrix
gl.glRotatef(rtri, 0.0f, 0.0f, 1.0f); // change matrix
// draw a line...
gl.glLoadIdentity(); // reset matrix, ... again    
gl.glRotatef(rtri, 1.0f, 0.0f, 0.0f); // change matrix
// draw a line...

相关内容

  • 没有找到相关文章

最新更新