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