JOGL - Transformação

OpenGL fornece mais recursos, como aplicação de cores a um objeto, dimensionamento, iluminação, rotação de um objeto, etc. Este capítulo descreve algumas das transformações em objetos usando JOGL.

Movendo um objeto na janela

Nos capítulos anteriores, discutimos os programas para desenhar uma linha e desenhar várias formas usando linhas simples. As formas criadas desta forma podem ser exibidas em qualquer local da janela. É feito usando o métodoglTranslatef (float x, float y, float z).

Este método pertence ao GLMatrixFunc interface, que está no javax.media.opengl.fixedfunc pacote.

Interface GLMatrixFunc

interface - GLMatrixFunc

package - javax.media.opengl.fixedfunc

A tabela a seguir lista alguns métodos importantes dessa interface -

Sr. Não. Métodos e Descrição
1

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

Gira a matriz atual.

2

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

Usado para dimensionar a matriz atual.

3

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

Usado para traduzir a matriz atual.

4

void glLoadIdentity()

Carrega a matriz atual com a matriz de identidade.

o glTranslate() método move a origem do sistema de coordenadas para o ponto especificado pelos parâmetros (x, y, z), passado para o glTranslate() método como

argumento. Para salvar e restaurar o sistema de coordenadas não traduzido,glPushMatrix() e glPopMatrix() métodos são usados.

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

Sempre que glTranslate()for usado, ele altera a posição do componente na tela. Portanto, oreshape() método de GLEventListener a interface deve ser substituída e a janela de visualização OpenGL e a matriz de projeção devem ser inicializadas.

O código a seguir mostra o modelo para inicializar uma porta de visualização e matriz de projeção -

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