簡體   English   中英

如何在JOGL中旋轉彼此獨立的兩條線?

[英]How do i rotate two lines independent of each other's axes in 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...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM