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
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:
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