JOGL - Transformación

OpenGL proporciona más funciones como aplicar colores a un objeto, escalar, iluminar, rotar un objeto, etc. Este capítulo describe algunas de las transformaciones en objetos usando JOGL.

Mover un objeto en la ventana

En capítulos anteriores, discutimos los programas para dibujar una línea y dibujar varias formas usando líneas simples. Las formas creadas de esta manera se pueden mostrar en cualquier lugar dentro de la ventana. Se hace usando el métodoglTranslatef (float x, float y, float z).

Este método pertenece al GLMatrixFunc interfaz, que se encuentra en la javax.media.opengl.fixedfunc paquete.

Interfaz GLMatrixFunc

interface - GLMatrixFunc

package - javax.media.opengl.fixedfunc

La siguiente tabla enumera algunos métodos importantes de esta interfaz:

No Señor. Métodos y descripción
1

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

Gira la matriz actual.

2

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

Se utiliza para escalar la matriz actual.

3

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

Se utiliza para traducir la matriz actual.

4

void glLoadIdentity()

Carga la matriz actual con matriz de identidad.

los glTranslate() El método mueve el origen del sistema de coordenadas al punto especificado por los parámetros (x, y, z), pasado al glTranslate() método como

argumento. Para guardar y restaurar el sistema de coordenadas sin traducir,glPushMatrix() y glPopMatrix() se utilizan métodos.

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

Cuando glTranslate()se utiliza, cambia la posición del componente en la pantalla. Por lo tanto, lareshape() método de GLEventListener La interfaz debe anularse y la ventana de visualización OpenGL y la matriz de proyección deben inicializarse.

El siguiente código muestra la plantilla para inicializar un puerto de visualización y una matriz de proyección:

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