miércoles, 29 de febrero de 2012


Preguntas



¿Puede diferenciar entre los dos tipos de proyección?

Si por que la proyección perspectiva realiza un tipo de ilusión óptica; ya que depende de el Angulo en que se observa el objeto, mientras que la otra se observa de una sola forma.



¿Para que se usan las matrices y como las maneja OpenGL?

Se utilizan para tener puntos de referencia sobre los giros del mismo punto, y llevan acabo gracias a los métodos ya hechos para el programa.



¿Que es la matriz identidad y para que se utiliza en OpenGL?

La matriz identidad cumple con la propiedad de ser el elemento neutro del producto de matrices, esto quiere decir que el producto de cualquier matriz por la matriz identidad no tiene ningún efecto.



Proyección Ortogonal

Coordenadas oculares

Las coordenadas oculares se sitúan en el punto de vista del observador, sin importar las transformaciones que tengan lugar. Por tanto, estas coordenadas representan un sistema virtual de coordenadas fijo usado como marco de referencia común


Las transformaciones son las que hacen posible la proyección de coordenadas 3D sobre superficies 2D. También son las encargadas de mover, rotar y escalar objetos. En realidad, estas transformaciones no se aplican a los modelos en sí, si no al sistema de coordenadas, de forma que si se quiere rotar un objeto, no lo se le rota, sino que se rota el eje sobre el que se sitúa

Transformaciones del observador


La transformación del observador es la primera que se aplica a la escena, y se usa para determinar el punto más ventajoso de la escena. Por defecto, el punto de vista está en el origen (0,0,0) mirando en dirección negativa del eje z. La transformación del observador permite colocar y apuntar la cámara donde y hacia donde se quiera. Todas las transformaciones posteriores tienen lugar basadas en el nuevo sistema de coordenadas modificado.

Transformaciones del modelo


Estas transformaciones se usan para situar, rotar y escalar los objetos de la escena. La apariencia final de los objetos depende en gran medida del orden con el que se hayan aplicado las transformaciones. Por ejemplo, en la ilustración 4.2 podemos ver la diferencia entre aplicar primero un rotación y luego una translación, y hacer esto mismo invirtiendo el orden.

Transformaciones de la proyección


La transformación de proyección se aplica a la orientación final del modelador. Esta proyección define el volumen de visualización y establece los planos de trabajo. A efectos prácticos, esta translación especifica cómo se traslada una escena finalizada a la imagen final de la pantalla

Transformaciones de la vista


En el momento en que se ha terminado todo el proceso de transformaciones, solo queda un último paso: proyectar lo que hemos dibujado en 3D al 2D de la pantalla, en la ventana en la que estamos trabajando. Esta es la denominada transformación de la vista.

Matrices


Las matemáticas que hay tras estas transformaciones se simplifican gracias a las matrices. Cada una de las transformaciones de las que se acaba de hablar puede conseguirse multiplicando una matriz que contenga los vértices por una matriz que describa la transformación. Por tanto todas las transformaciones ejecutables con ogl pueden describirse como la multiplicación de dos o más matrices.

El canal de transformaciones


Para poder llevar a cabo todas las transformaciones de las que se acaba de hablar, deben modificarse dos matrices: la matriz del Modelador y la matriz de Proyección. OpenGL proporciona muchas funciones de alto nivel que hacen muy sencillo la construcción de matrices para transformaciones. Éstas se aplican sobre la matriz que este activa en ese instante. Para activar una de las dos matrices utilizamos la función glMatrixMode. Hay dos parámetros posibles:

glMatrixMode(GL_PROJECTION);

activa la matriz de proyección, y

glMatrixMode(GL_MODELVIEW);

activa la del modelador. Es necesario especificar con que matriz se trabaja, para poder aplicar las transformaciones necesarias en función de lo que se desee hacer

Rotación


Para rotar, tenemos también una función de alto nivel que construye la matriz de transformación y la multiplica por la matriz activa, glRotate. Lleva como parámetros el ángulo a rotar (en grados, sentido horario), y después x, y y z del vector sobre el cual se quiere rotar el objeto. Una rotación simple, sobre el eje y, de 10º sería

glRotatef(10, 0.0f, 1.0f, 0.0f);

Escalado


Una transformación de escala incrementa el tamaño de nuestro objeto expandiendo todos los vértices a lo largo de los tres ejes por los factores especificados. La función glScale lleva como parámetros la escala en x, y y z, respectivamente. El valor 1.0f es la referencia de la escala, de tal forma que la siguiente línea:

glScalef(1.0f, 1.0f, 1.0f);

no modificaría el objeto en absoluto. Un valor de 2.0f sería el doble, y 0.5f sería la mitad. Por ejemplo, para ensanchar un objeto a lo largo de su eje z, de tal forma que quedase cuatro veces más “alargado” en este eje, sería:

glScalef(1.0f, 1.0f, 4.0f);

Rotación


Para rotar, tenemos también una función de alto nivel que construye la matriz de transformación y la multiplica por la matriz activa, glRotate. Lleva como parámetros el ángulo a rotar (en grados, sentido horario), y después x, y y z del vector sobre el cual se quiere rotar el objeto. Una rotación simple, sobre el eje y, de 10º sería

glRotatef(10, 0.0f, 1.0f, 0.0f);

Escalado


Una transformación de escala incrementa el tamaño de nuestro objeto expandiendo todos los vértices a lo largo de los tres ejes por los factores especificados. La función glScale lleva como parámetros la escala en x, y y z, respectivamente. El valor 1.0f es la referencia de la escala, de tal forma que la siguiente línea:

glScalef(1.0f, 1.0f, 1.0f);

no modificaría el objeto en absoluto. Un valor de 2.0f sería el doble, y 0.5f sería la mitad. Por ejemplo, para ensanchar un objeto a lo largo de su eje z, de tal forma que quedase cuatro veces más “alargado” en este eje, sería:

glScalef(1.0f, 1.0f, 4.0f);

--------------------------------------------------------------------------------------------------------------------------

Transformaciones geométricas

Es una rama la cual estudia como realizar despliegues visuales en el monitor de la computadora, dispositivos móviles y otros artefactos, se aplica a objeto s de 2 y 3 dimensiones.

      Dos dimensiones son (x,y)

      Tres dimensiones son (x,y,z)

      Dos dimensiones :

       Escalación

      Traslación

      Rotación 


Tres dimensiones
Escalación

     Traslación

     Rotación en torno en cada eje


Escalacion en 2D

Requiere 2 parámetros:

Sx = Factor de escalación en X

Sy = Factor de escalación en Y

Sx,Sy > 1 = Aumenta la dimensión

Sx,Sy < 1 = Disminuye la dimensión

Sx,Sy = 1 =Se mantiene la dimensión


Traslación en 2D

Nos permitirá cambiar la posición de un objeto, moviéndolo en línea recta desde una posición inicial a la posición final.

Requiere 2 parámetros:

      Tx = Desplazamiento en X

      Ty = Desplazamiento en Y

      Tx, Ty > 0 = Desplazamiento positivo

      Tx, Ty < 0 = Desplazamiento negativo

     Tx,Ty = 0 = No hay desplazamiento


Rotación en 2D

      Nos permite rotar o girar un objeto en torno al origen un ángulo dado.
Requiere 1 parámetro:

      q = Ángulo de rotación

      q > 0 = Rotación contraria a sentido de las manecillas del reloj

       q < 0 = Rotación en el sentido de las manecillas del reloj

      q = 0 = Sin rotación


 Escalacion en 3D

     Nos permitirá cambiar las dimensiones de un objeto.

     Requiere 3 parámetros:

     Sx = Factor de escalación en X

     Sy = Factor de escalación en Y

    Sz = Factor de escalación en Z

    Sx,Sy,Sz > 1 = Aumenta la dimensión

    Sx,Sy,Sz < 1 = Disminuye la dimensión

    Sx,Sy,Sz = 1 = Se mantiene la dimensión



Traslación 3D

      Nos permitirá cambiar la posición de un objeto, moviéndolo en línea recta desde una posición inicial a la posición final.

      Requiere 3 parámetros:

     Tx = Desplazamiento en X

     Ty = Desplazamiento en Y

     Tz = Desplazamiento en Z

    Tx, Ty,Tz > 0 = Desplazamiento positivo

    Tx, Ty,Tz < 0 = Desplazamiento negativo

    Tx,Ty,Tz = 0 = No hay desplazamiento



Representación matricial

Facilita el cómputo de las transformaciones a simples multiplicaciones matriciales.

Se requiere representar las coordenadas en forma homogénea:

(x,y) se representa como (x,y,1)

(x,y,z) se representa como (x,y,z,1)



Coordenadas Homogéneas

Las coordenadas homogéneas agregan un elemento o dimensión más al que tenemos, para representar puntos y vectores.

Existe una relación lineal entre un punto en 2D y su representación en coordenadas homogéneas. Al extender un punto en 2D a uno en 3D, éste se convierte en una línea recta de la forma, P = ( tx, ty, tw ).

No hay comentarios:

Publicar un comentario