Sei sulla pagina 1di 19

Practica 17 Proyecciones

OBJETIVO: Aprender la diferencia entre Proyeccin en Perspectiva y Proyeccin Ortogrfica.

Conceptos

Concepto: Definicin: Tipos:

Transformaciones
Son las que hacen posible la proyeccin de coordenadas 3D sobre superficies 2D. Transformacin de Proyeccin Transformacin del Observador Transformacin del Modelo Transformacin de Vista

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Tipos de Transformaciones de Proyeccin


Concepto: Definicin:

ProyeccinOrtogrfica
Una proyeccin ortogrfica es cuadrada en todas sus caras. Esto produce una proyeccin paralela, til para aplicaciones de tipo CAD o dibujos arquitectnicos, o tambin para tomar medidas, ya que las dimensiones de lo que representan no se ven alteradas por la proyeccin. Slo puede haber un tipo de proyeccin activo en el LIENZO. La definicin del tipo de Transformacin de Proyeccin se hace comnmente en init, puesto que es una accin que se realiza una sola vez.

Nota:

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Representacin de Proyeccin Ortogrfica

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodos: Definir el uso de Proyeccin Ortogrfica

Mtodo:

gl.glOrthof(left,right,bottom,up,near,far);

Descripcin: Mtodo empleado en OpenGL para definir como transformacin de proyeccin, la proyeccin ortogrfica. La llamada a esta funcin slo puede llevarse a cabo con xito si se activa la matriz de proyeccin previamente con el comando [gl.glMatrixMode(GL2.GL_PROJECTION)], y se inicializa con la matriz de identidad [gl.glLoadIdentity()]. Parmetros: left, right bottom, up near, far Flotantes que describen los lmites del eje X. Flotantes que describen los lmites del eje Y. Flotante que describen los lmites del eje Z.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Ejemplo de Uso de glOrthof(...)


Descripcin

Se muestra cmo se debe inicializar la proyeccin Ortogrfica.

publicvoidinit(GLAutoDrawableglad){ GL2gl=glad.getGL().getGL2(); gl.glClearColor(1.0f,1.0f,1.0f,0.0f); gl.glMatrixMode(gl.GL_PROJECTION); gl.glLoadIdentity();

Cambios en la matriz de transformacin activa.

gl.glOrthof(1.0f,1.0f,1.0f,1.0f,1.5f,100.0f); gl.glMatrixMode(gl.GL_MODELVIEW); glu.gluLookAt(0,0,1.50,0,0,0,0,1,0); }

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Ejemplo 1 de Uso de glOrthof(...)


Descripcin

Se procede a dibujar un Cuadro usando esta proyeccin, con las siguientes coordenadas.

publicvoiddisplay(GLAutoDrawableglad){ GL2gl=glad.getGL().getGL2(); gl.glClear(GL2.GL_COLOR_BUFFER_BIT);

gl.glBegin(GL2.GL_QUADS); gl.glColor3f(1.0f,0.0f,0f); gl.glVertex3f(0.5f,0.5f,0.0f); gl.glVertex3f(0.5f,0.5f,0.0f); gl.glVertex3f(0.5f,0.5f,1.0f); gl.glVertex3f(0.5f,0.5f,1.0f); gl.glEnd(); }

OBSERVE que no todos los vrtices del cuadro estn en la misma coordenada en Z

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Resultado Ejemplo 1
Descripcin

Este tipo de proyeccin no se ve afectado por la profundidad. En otras palabras sin importar cuan lejos est el objeto, la dimensin aparente del mismo ser siempre la misma.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Ejemplo 2 de Uso de glOrthof(...)


Descripcin

Se procede a dibujar ahora dos cuadros, misma longitud de lados, pero ubicados en diferentes coordenadas en Z.
publicvoiddisplay(GLAutoDrawableglad){ GL2gl=glad.getGL().getGL2(); gl.glClear(GL2.GL_COLOR_BUFFER_BIT);

OBSERVE que no todos los vrtices del cuadro gl.glBegin(GL2.GL_QUADS); estn en la misma gl.glColor3f(1.0f,0.0f,0f); coordenada en Z
gl.glVertex3f(0.75f,0.25f,0.0f); gl.glVertex3f(0.75f,0.25f,0.0f); gl.glVertex3f(0.25f,0.25f,1.0f); gl.glVertex3f(0.25f,0.25f,1.0f); gl.glVertex3f(0.25f,0.25f,10.0f); gl.glVertex3f(0.25f,0.25f,10.0f); gl.glVertex3f(0.75f,0.25f,5.0f); gl.glVertex3f(0.75f,0.25f,5.0f); gl.glEnd(); }

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Resultado Ejemplo 2
Descripcin OBSERVE que a pesar de los cuadros difieren enormemente en el valor de su coordenada Z, la profundidad no afecta la dimensin, y siguen vindose del mismo tamao, caracterstica de la Proyeccin Ortogrfica.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Tipos de Transformaciones de Proyeccin


Concepto: Definicin:

ProyeccinPerspectiva
Una proyeccin perspectiva reduce y estira los objetos ms alejados del observador. Es importante saber que las medidas de la proyeccin de un objeto no tienen por qu coincidir con las del objeto real, ya que han sido deformadas. Esta proyeccin es con la que habitualmente se relaciona nuestra visin. Slo puede haber un tipo de proyeccin activo en el LIENZO. La definicin del tipo de Transformacin de Proyeccin (ortogrfica o perspectiva) se hace comnmente en init, puesto que es una accin que se realiza una sola vez.

Nota:

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Representacin de Proyeccin Perspectiva


OBSERVE que se debe definir la posicin de la cmara convenientemente, para visualizar el espacio especificado.

OBSERVE la estructura piramidal, que da lugar a la deformacin en la imagen.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodos: Definir el uso de Proyeccin Ortogrfica

Mtodo:

gl.glFrustum(left,right,bottom,up,near,far);

Descripcin: Mtodo empleado en OpenGL para definir como transformacin de proyeccin, la proyeccin perspectiva. La llamada a esta funcin slo puede llevarse a cabo con xito si se activa la matriz de proyeccin previamente con el comando [gl.glMatrixMode(GL2.GL_PROJECTION)], y se inicializa con la matriz de identidad [gl.glLoadIdentity()]. Tambin deber situar uno el origen de la visin a travs de la funcin [glu.gluLookAt(0,0,1.50, 0,0,0, 0.0,1.0,0);], la cul se analizar como parte de la Transformaciones de Visin (o ubicacin de la cmara), posteriormente. Parmetros: left, right bottom, up near, far Valores flotantes que describen los lmites del eje X. Valores flotantes que describen los lmites del eje Y. Valores flotante que describen los lmites del eje Z.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Ejemplo de Uso de glOrthof(...)


Descripcin

Se muestra cmo se debe inicializar la proyeccin perspectiva.

publicvoidinit(GLAutoDrawableglad){ GL2gl=glad.getGL().getGL2(); gl.glClearColor(1.0f,1.0f,1.0f,0.0f); gl.glMatrixMode(gl.GL_PROJECTION); gl.glLoadIdentity();

Cambios en la matriz de transformacin activa.

gl.glFrustumf(1.0f,1.0f,1.0f,1.0f,1.5f,100.0f); gl.glMatrixMode(gl.GL_MODELVIEW); glu.gluLookAt(0,0,1.50,0,0,0,0.0,1,0); }

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Ejemplo 1 de Uso de glFrustum(...)


Descripcin

Se procede a dibujar ahora dos cuadros, misma longitud de lados, pero ubicados en diferentes coordenadas en Z.
publicvoiddisplay(GLAutoDrawableglad){ GL2gl=glad.getGL().getGL2(); gl.glClear(GL2.GL_COLOR_BUFFER_BIT);

OBSERVE que no todos los vrtices del cuadro gl.glBegin(GL2.GL_QUADS); estn en la misma gl.glColor3f(1.0f,0.0f,0f); coordenada en Z
gl.glVertex3f(0.75f,0.25f,0.0f); gl.glVertex3f(0.75f,0.25f,0.0f); gl.glVertex3f(0.25f,0.25f,1.0f); gl.glVertex3f(0.25f,0.25f,1.0f); gl.glVertex3f(0.25f,0.25f,10.0f); gl.glVertex3f(0.25f,0.25f,10.0f); gl.glVertex3f(0.75f,0.25f,5.0f); gl.glVertex3f(0.75f,0.25f,5.0f); gl.glEnd(); }

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Resultado Ejemplo 2
Descripcin OBSERVE que ahora, los cuadros reflejan la deformacin derivada de la lejana entre ellos, debido a los diferentes valores en la coordenada en Z.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

P17. Proyecciones
Detalle

1. Usando proyeccin ortogrfica, cree una aplicacin en Java que dibuje los 4 Tringulos siguientes, y reporte el resultado: Tringulo 1: Vrtice 1: (-4, -4, 0) Vrtice 2: (-2, -4, 0) Vrtice 3: (-3, -2, 0) Tringulo 2: Vrtice 1: ( 2, -4, -10) Vrtice 2: ( 4, -4, -10) Vrtice 3: ( 3, -2, -10) Tringulo 3: Vrtice 1: (-4, 2, -5) Vrtice 2: (-2, 2, -5) Vrtice 3: (-3, 4, -5) Tringulo 4: Vrtice 1: ( 2, 2, -1) Vrtice 2: ( 4, 2, -1) Vrtice 3: ( 3, 4, -1)
Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

P17. Proyecciones
Detalle

2. Cambie la proyeccin a perspectiva, y reporte el resultado. 3. Manteniendo la proyeccin en perspectiva, agregue el tringulo,observe el resultado: Tringulo 5: Vrtice 1: ( -1, -1, 1) Vrtice 2: ( 1, -1, 1) Vrtice 3: ( 0, 1, 1) 4. Cambie la proyeccin a ortogrfica, y observe el resultado, explique la razn por la cul el quinto tringulo no aparece. 5. Modifique los parmetros de la funcin glu.gluLookAt(), para hacer visible el quinto tringulo. Reporte.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

FIN

Potrebbero piacerti anche