JOGL - Transformation

OpenGL fournit plus de fonctionnalités telles que l'application de couleurs à un objet, la mise à l'échelle, l'éclairage, la rotation d'un objet, etc. Ce chapitre décrit certaines des transformations sur des objets à l'aide de JOGL.

Déplacer un objet sur la fenêtre

Dans les chapitres précédents, nous avons discuté des programmes permettant de dessiner une ligne et de dessiner diverses formes à l'aide de lignes simples. Les formes ainsi créées peuvent être affichées à n'importe quel endroit de la fenêtre. Cela se fait en utilisant la méthodeglTranslatef (float x, float y, float z).

Cette méthode appartient à la GLMatrixFunc interface, qui est dans le javax.media.opengl.fixedfunc paquet.

Interface GLMatrixFunc

interface - GLMatrixFunc

package - javax.media.opengl.fixedfunc

Le tableau suivant répertorie quelques méthodes importantes de cette interface -

N ° Sr. Méthodes et description
1

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

Fait pivoter la matrice actuelle.

2

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

Utilisé pour mettre à l'échelle la matrice actuelle.

3

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

Utilisé pour traduire la matrice actuelle.

4

void glLoadIdentity()

Charge la matrice actuelle avec la matrice d'identité.

le glTranslate() déplace l'origine du système de coordonnées vers le point spécifié par les paramètres (x, y, z), transmis au glTranslate() méthode comme

argument. Pour enregistrer et restaurer le système de coordonnées non traduit,glPushMatrix() et glPopMatrix() des méthodes sont utilisées.

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

N'importe quand glTranslate()est utilisé, cela change la position du composant sur l'écran. D'où lereshape() méthode de GLEventListener l'interface doit être remplacée et la fenêtre OpenGL et la matrice de projection doivent être initialisées.

Le code suivant montre le modèle pour initialiser un port de vue et une matrice de projection -

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