JOGL - Trasformazione

OpenGL fornisce più funzionalità come l'applicazione di colori a un oggetto, il ridimensionamento, l'illuminazione, la rotazione di un oggetto, ecc. Questo capitolo descrive alcune delle trasformazioni sugli oggetti utilizzando JOGL.

Spostare un oggetto sulla finestra

Nei capitoli precedenti, abbiamo discusso i programmi per disegnare una linea e disegnare varie forme usando linee semplici. Le forme create in questo modo possono essere visualizzate in qualsiasi posizione all'interno della finestra. È fatto usando il metodoglTranslatef (float x, float y, float z).

Questo metodo appartiene a GLMatrixFunc l'interfaccia, che si trova in javax.media.opengl.fixedfunc pacchetto.

Interfaccia GLMatrixFunc

interface - GLMatrixFunc

package - javax.media.opengl.fixedfunc

La tabella seguente elenca alcuni metodi importanti di questa interfaccia:

Sr.No. Metodi e descrizione
1

void glRotatef(float angle, float x, float y, float z)

Ruota la matrice corrente.

2

void glScalef(float x, float y, float z)

Utilizzato per scalare la matrice corrente.

3

void glTranslatef(float x, float y,float z)

Utilizzato per tradurre la matrice corrente.

4

void glLoadIdentity()

Carica la matrice corrente con la matrice identità.

Il glTranslate() Il metodo sposta l'origine del sistema di coordinate nel punto specificato dai parametri (x, y, z), passati al glTranslate() metodo come

discussione. Per salvare e ripristinare il sistema di coordinate non tradotto,glPushMatrix() e glPopMatrix() vengono utilizzati metodi.

gl.glTranslatef(0f, 0f, -2.5f);

Ogni volta glTranslate()viene utilizzato, cambia la posizione del componente sullo schermo. Quindi ilreshape() metodo di GLEventListener l'interfaccia dovrebbe essere sovrascritta e la vista OpenGL e la matrice di proiezione dovrebbero essere inizializzate.

Il codice seguente mostra il modello per inizializzare una porta di visualizzazione e una matrice di proiezione:

public void reshape(GLAutoDrawable drawable, int x,  int y, int width, int height) { 
  
   // TODO Auto-generated method stub 
   final GL2 gl = drawable.getGL().getGL2();  
            
   // get the OpenGL 2 graphics object   
   if(height <= 0) height = 1; 
       
   //preventing devided by 0 exception height = 1; 
   final float h = (float) width / (float) height; 
            
   // display area to cover the entire window 
   gl.glViewport(0, 0, width, height); 
            
   //transforming projection matrix 
   gl.glMatrixMode(GL2.GL_PROJECTION); 
   gl.glLoadIdentity(); 
   glu.gluPerspective(45.0f, h, 1.0, 20.0); 
      
   //transforming model view gl.glLoadIdentity(); 
   gl.glMatrixMode(GL2.GL_MODELVIEW); 
   gl.glLoadIdentity(); 
}