Vous êtes sur la page 1sur 2

Transformaciones en OpenGL

La matriz con la cual se harn las operaciones de transformacin, se especifica con la funcin
glMatrixMode(Glenum mode) , la cual tiene como argumento alguna de las siguientes constantes:
GL_MODEL_VIEW: Matriz que contiene las transformaciones originadas por los cambios de
modelado y posicin de la cmara. Define como son transformados los objetos (traslacin
escalamiento y rotacin)
GL_PROJECTION: Matriz con las transformaciones que realizan la proyeccin de la escena de 3 a 2
dimensiones. Propiedades de la cmara que ve los objetos
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,20,0,20,0,1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
MATRIZ DE TRANSFORMACION ACTUAL (CMT): Esta matriz se comporta como un estado, por
tanto hasta que se especifique un nuevo estado todas las transformaciones se realizan sobre la
ultima matriz especificada.
PILA O STACK
La matriz de transformacin se debe entender como una pila o stack. Cada transformacin que se
anade entra a la pila como la ultima y por tanto al salir ser la primera.
Para salvar el estado de la pila en cualquier momento y poder recuprarlo se utilizan:
glPushMatrix(): Funcin que realiza una copia de la matriz superior y la pone encima de la pila, de
tal forma que las dos matrices superiores son iguales, al llamar a la funcin glPushMatrix() se
duplica la matriz superior. Las siguientes transformaciones que se realicen se aplicaran solo en la
matriz superior de la pila, quedando la anterior con los valores que tena en el momento de llamar
a glPushMatrix.
glPopMatrix(): Funcin que elimina la matriz superior, quedando en la parte superior de la pila la
matriz que estaba en el momento de llamar a la funcin glPushMatrix().
Esto sirve en el caso de que se tengan que aplicar algunas transformaciones a una pequea parte
de la geometra, permitiendo no afectar al resto.

%Color Verde
dibujarCuadro(10.0);
glPushMatrix();
glTranslatef(0.0,2.0,0.0);
%ColorAzul
dibujarCuadro(5.0);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0,-2.0,0.0);
%Color Rojo
dibujarCuadro(5.0);
glPopMatrix();
1. Programe en OpenGL lo anterior:
a). Sin utilizar PushMatrix y PopMatrix
b). Utilizando las dos funciones anteriores
Reporte lo observado.
Nota: El mtodo dibujarCuadro debe dibujar un cuadro con la esquina inferior izquierda en el
origen y un lado de tamao proporcionado como argumento.
2. Defina un objeto 2D con al menos 4 vrtices.
Rote el objeto en torno al origen con incremento de 15 grados, hasta completar una
vuelta completa.
3. Escale el mismo objeto a la mitad de su tamao original
4. Escale el objeto al doble de su tamao original, sin modificar su posicin en el plano de
coordenadas
5. Rote el objeto en incrementos de 20 grados pero en torno a alguna de sus aristas
6. Refleje el objeto respecto a los ejes cartesianos X y Y

Vous aimerez peut-être aussi