Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Conceptos
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
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:
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.
Se procede a dibujar un Cuadro usando esta proyeccin, con las siguientes coordenadas.
OBSERVE que no todos los vrtices del cuadro estn en la misma coordenada en Z
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.
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(); }
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.
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:
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.
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(); }
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.
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.
FIN