jueves, 4 de octubre de 2012

Transformaciones geometricas traslacion, rotacion y escalacion en OpenGL


2. Transformaciones Geométricas en OpenGL (traslación, rotación y escalación).

    *Traslación:
      glTranslatef(0.0f, 0.0f, 0.0f); //glTranslatef(unidadesdetrasladoen X, traslado en Y, traslado en Z);


    *Rotación: Rota en sentido contrario a las manecillas del reloj.
      glRotatef(0.0f, 0.0f, 0.0f, 0.0f); //ángulos en grados


    *Escalación: Nos permite expandir o contraer los objetos de un vértice.
      glScalef(0.0f, 0.0f, 0.0f);



3. Uso de matrices en OpenGL

*Matriz de proyección: Especifica el tamaño y la forma de volumen de visualizacion, el cual es aquel cuyo contenido es el que se muestra en pantalla. Está delimitado por una serie de planos de trabajo. Los planos más importantes sol los de corte porque acotan el volumen de visualizacion por delante y atras. En el plano más proximo a la cáamara, se proyecta la escena para después mostrarla en pantalla. Lo que está más adelante de la cámara, no se representa.


glMatrixMode(GL_PROJECTION);


*Matriz de modelado: Es una matriz de 4x4 que representa el sistema de coordenadas transformado que está siendo utilizado para colocar y orientar los objetos.


glMatrixMode(GL_MODELVIEW);



4. Operaciones con Matrices: Dibujando el Camino

A partir de las matrices de transformación y las coordenadas de modelado del objeto, se realiza la transformación de las coordenadas en OpenGL. Sin embargo, es necesario realizar la transformación de la coordenada de la posición actual de la tortuga para representar el trayecto que dibuja al desplazarse. De manera que se actúa directamente en la matriz de transformación.

*La Pila de Matrices
Existe una función denominada display() en la que se pueden encontrar las funciones de glPushMatrix() y glPopMatrix(), las cuales nos permiten guardar una determinada matriz en OpenGL para luego recuperarla.
glPushMatrix() saca una copia exacta de la matriz superior, llevándola encima de             la pila.
glPopMatrix() elimina la matriz superior, dejando en la parte alta de la pila a la matriz que estaba en el momento de llamar a la función glPushMatrix().
glGetDoublev() nos permite obtener la matriz actual de una de las pilas. A esta función se le indica la matriz que se requiere obtener, GL_MODELVIEW y un puntero de 16 posiciones donde se rellenaran los valores de la matriz.
Es necesario cargar la pila de matrices de GL_MODELVIEW, para utilizar la matriz mModel, luego de utilizar la función PushMatrix(), de manera que no se altere la matriz actual.         
glMultMatrixd() multiplica la matriz que se encuentra sobre la pila por la matriz que tiene como argumento. En este caso, al multiplicarse por la matriz identidad, mModel queda en el top de la pila.

No hay comentarios:

Publicar un comentario