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();
}