lunes, 26 de marzo de 2012

Resumen unidad III


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.



La matriz identidad
El “problema” del uso de estas funciones surge cuando se tiene más de un objeto en la escena. Estas funciones tienen efectos acumulativos.

La matriz de proyección 
La matriz de proyección especifica el tamaño y la forma del volumen de visualización. El volumen de visualización es aquel cuyo contenido es el que se representa en pantalla. Está delimitado por una serie de planos de trabajo. De estos planos, los más importantes son los planos de corte, que son los que nos acotan el volumen de visualización por delante y por detrás. En el plano más cercano a la cámara (znear) es donde se proyecta la escena para luego pasarla a la pantalla. Todo lo que esté más adelante del plano de corte más alejado de la cámara (zfar) no se representa.


Transformaciones
Las transformacion en OPENGL no sirven para poder tener funciones que permitan acceder directamente a las matrices que representen los estados de las transformaciones.


Algunas matrices como:
Void glMatrixMode( enum mode ); Permite seleccionar la matriz sobre la cual se realizaran las operaciones, los posibles valores de mode son TEXTURE, MODELVIEW, COLOR o PROJECTION . 

Void glLoadMatrix{fd} (T m[16]); Recibe una matriz de 4×4 que reemplaza la actual seleccionada. El arreglo es ordenado en forma de una matriz que tiene orden Y, a diferencia de las matrices convencionales que tienen orden X.

Void glMultMatrix{fd}( T m[16] ); Multiplica la matriz actual por la matriz m[16] y reemplaza la matriz actual con el resultado de la operación. La operación resultante sería algo así como A’ = AM, donde A es la matriz actual, M es la matriz suministrada y A’ es la nueva matriz que resulta de la operación y que reemplaza a A. 

Void glLoadTransposeMatrix{fd}( T m[16] ); Realiza una función similar a LoadMatrix(), con la diferencia que trabaja sobre una matriz en orden X. 


Estas operaciones afectan directamente las matrices mencionadas anteriormente, debido a que las operaciones de “alto nivel” (trasladar, rotar, escalar) que existen mas adelante se concatenan, es decir su efecto se acumula sobre matriz actual, existen dos operaciones que permiten guardar la matriz actual en una pila y restaurarla cuando sea necesario, estas son:


void glPushMatrix( void ); Coloca una copia de la matriz actual en la parte superior de la pila correspondiente.


void glPopMatrix( void ); Saca el elemento superior de la pila, que pasa a reemplazar a la matriz actual.


Proyección
Una proyección es la forma en la que se pueden ver las cosas las cuales dependiendo de la forma en la que la veamos pueda cambiar lo que realmente es, tanto como sus dimensiones.
Hay dos formas de vistas las cuales son:


ORTOGRAFICA. La cual se maneja con la funciones glOrtho() y solo se ve el dibujo sin tener tamaños reales.


PERSPECTIVA la cual se ocupa con la libreria glFrustum() y otras funciones, esta ayuda para tener una profundidad y tamaño de las cosas reales.
La función es es void gluPerspective(GLdouble fov, GLdouble aspect, GLdouble near, GLdouble far);


Dentro de ellas existen transformaciones y modificaciones.


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

Transformaciones ModelView
Para las transformaciones modelview se necesita mas que el conocimiento de las coordenadas x,y,z si no tambien de conocimientos matematicos para hacer distintas funciones, lo bueno es que ya estan realizadas en bibliotecas y solo basta utilizarlas


Modelado: Sirven para manipular los objetos en la escena, permitiendo trasladarlos, rotarlos y deformarlos (escalarlos).


Modelo-Vista: Son la combinación de las dos transformaciones anteriores, que desde un punto de vista práctico son semejantes.


Rotacion
void glRotate[fd](GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
Realiza una rotación del espacio coordenado por una medida de (angle) tomados en grados a lo largo del vector determinado por (x,y,z)


Traslacion
void glTranslate[fd](GLfloat x, GLfloat y, GLfloat z);
Esta función traslada el espacio coordenado en x, y, z unidades sobre sus respectivos ejes coordenados X, Y, Z.


Escalacion
void glScalef(GLfloat x, GLfloat y, GLfloat z);
Cambia la proporción de los objetos respecto a los ejes coordenados, lo que es equivalente a decir que los estira o encoge una cantidad determinada por los parámetros de la función x,y,z.


Es importante aprender a utilizar correctamente glPushMatrix(), glPopMatrix() y otras operaciones que permitan salvar y restaurar estados de matriz, debido a que permiten realizar translaciones y rotaciones especificas para un cierto objeto, sin alterar los otros.


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.


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.


Propiedades del producto escalar usual.
1.  Conmutativa.  u · v = v  · u 
2.  Distributiva.  u · ( v + w)  = u · v  +  u · w 
3.  Reubicación del escalar. a (u · v) = (a u) · v = u · (a v) 
4.  Definida positiva: v · v = 0, y se da la igualdad v · v = 0 solamente para el vector v =  0 .
Vectores ortogonales lo son cuando su producto escalar es cero:  u · v = 0. Se denota u? v. 
Diremos que un conjunto de vectores es un conjunto ortogonal si cada uno de ellos es ortogonal a todos los demás. (Exigimos además que ninguno de los vectores sea el G0 ). 


Módulo de un vector
El módulo de un vector es la longitud del segmento orientado que lo define.
El módulo de un vector es un número siempre positivo y solamente el vector nulo tiene módulo cero.


Distancia entre dos puntos
La distancia entre dos puntos es igual al módulo del vector que tiene de extremos dichos puntos.

No hay comentarios:

Publicar un comentario