1. Laboratorio de Computación Gráfica
Facultad de
Ingeniería
Práctica 03 / CP
Ortiz Gómez Cristian
cris.org@gmx.com
Teoría: Grupo 4
Proyecciones y puerto
de vista
2. Proyecciones y puerto de vista
Objetivo
• El alumno observará las diferencias entre la proyección ortogonal y en perspectiva, y su implementación en OpenGL.
Cuestionario Previo
1. GLUT tiene un callback llamado glutSpecialFunc(), explique para qué se ocupa además liste los valores asociados
a los eventos que procesa (interesa los valores para el manejo de teclas especiales).
2. Tanto glutKeyboardFunc() como glutSpecialFunc() sirven para interactuar con el programa a través del
teclado. Hay teclas que no detecta el glutKeyboardFunc(), como las flechas, las teclas F1, F2... y otras.
glutSpecialFunc() sirve para asignar una función a ejecutar cuando se pulsa una tecla no alfanumérica.
int key, almacena la última tecla pulsada, según su código podemos usar:
• GLUT_KEY_F1
• GLUT_KEY_F2
• ... hasta el
• GLUT_KEY_F12
• GLUT_KEY_UP
• GLUT_KEY_DOWN
• GLUT_KEY_LEFT
• GLUT_KEY_RIGHT
• GLUT_KEY_PAGE_UP
• GLUT_KEY_PAGE_DOWN
• GLUT_KEY_HOME
• GLUT_KEY_END
• GLUT_KEY_INSERT
2. ¿Qué utilidad tienen las funciones de OpenGL: glOrtho y glFrustrum? Explique las diferencias entre ambos tipos
de proyecciones.
3. La función glOrtho multiplica la matriz actual por una matriz ortogonal que produce una proyección paralela,
mientras que la función glFrustrum multiplica la matriz actual por una matriz de perspectiva que produce una
proyección en perspectiva.
3. ¿Qué sucede si al código que funcionó en la Práctica 2, se le quita línea glutInitWindowPosition();? ¿El código
funciona? Explique.
4. glutInitWindowPosition();, establece la distancia horizontal y vertical con respecto de la esquina superior
izquierda del monitor donde la ventana deberá aparecer. El sistema de ventanas no está obligado a utilizar esta
información, por tanto, si se quitara esta línea el código aun funcionaría.
5. El valor inicial de la posición de ventana inicial GLUT es -1 y -1. Si en el componente X o Y a la posición inicial de la
ventana es negativo, la posición real de la ventana se deja al sistema de ventanas.
1
Proyeccionesypuertodevista
CÓDIGO:
glutSpecialFunc(void (*func) (int key, int x, int y))
3. 4. ¿Qué sucede si al código que funcionó en la Práctica 2, se le modifica la línea glutInitWindowSize(); y se le
ponen valores muy altos? Ejemplo glutInitWindowSize(30000, 5000); . Explique
5. Los programas GLUT no deben asumir que la ventana fue creada en el tamaño o posición especificada. Si se ponen
valores muy altos, el tamaño real de la ventana se deja al sistema de ventanas.
Conclusiones
• El callback glutSpecialFunc() nos sirve para asignar funciones a las teclas especiales, por ejemplo las flechas para
simular una cámara.
• glOrtho y glFrustrum son distintas en cuanto a que la primera nos ofrece una proyección paralela y la segunda una
proyección en perspectiva como si estuviera en 3D.
• glutInitWindowPosition(), establece la posición inicial de la ventana.
• glutInitWindowSize(500,500), establece el tamaño inicial de la ventana.
Bibliografía
[Tutorial] II.5 - glutSpecialFunc()
Posted by: HarZe, Jul 28, 2009
http://opengl-esp.superforo.net/t22-tutorial-ii-5-glutspecialfunc
GL Functions
Copyright 2018, Microsoft
https://docs.microsoft.com/en-us/windows/desktop/opengl/gl-functions
2.2 glutInitWindowPosition, glutInitWindowSize
Posted by: Mark Kilgard, Feb 23, 1996
https://www.opengl.org/resources/libraries/glut/spec3/node11.html
2
Proyeccionesypuertodevista