ManuelRomero/grafica/escena1/objeto

Coordenadadas del objeto: La matriz escena
Empezamos con dos tipos de coordenadas
 * 1) Coordenadas globales o del mundo
 * 2) Coordenadas locales o del objeto
 * Dibujamos un eje de coordenadas x,y,z.
 * Estará centrado en el punto 0,0,0

Coordenadadas del objeto

 * El código fuente

Veamos la imagen

 * A OpenGL le especificamos bien por puntos o por vectores estos valores
 * OpenGL rederiza en la pantalla y visualiza dichos puntos según le especifiquemos

Giramos

 * Lo giramos para ver la coordenada z. Esta parte luego la veremos
 * Para conseguirlo he girado 40º en el eje de X y 40º en el eje de Y

Coordenadas del objeto

 * Vemos lo que sería las coordenadas del objeto

Dibujando directamente
-
 * Quitamos el giro y dibujamos una tetera
 * Este eje de coordenadas que hemos dibujado representaría el eje de coordenadas del objeto
 * Ahora dibujamos un objeto en él, por ejemplo una tetera
 * Con la barra espaciadora podemos cambiar su representación, sólida o de alambres
 * Representación sólida
 * Represetnación en alambres


 * Representación girada
 * Giramos en torno al eje X 20º y entorno al eje y 45º para tener una visión más de 3D.
 * Posteriormente se detallan estas operaciones
 * Ahora hemos dibujado la tetera respecto al eje de coordenadas del mundo con centro 0,0,0

Eje de coordenadas del objeto

 * En realidad el objeto está en una posición del espacio con sus coordenadas
 * La idea es llevármelo a las coordenadas del mundo, para mi de referencia
 * Planteamos este nuevo eje de coordenadas
 * Podemos ver que respecto al eje de coordenadas del mundo (0,0,0), tiene los siguientes vectores

(10,10,10)- (15,15,10) (10,10,10)- (5,15,10) (10,10,10)- (10,10,15)

Coordenadas del objeto

 * Gráficamente lo podemos ver en la imagen (siempre respecto al eje de coordenadas de nuestro mundo (0,0,0) como centro

===Girando
 * Lo giramos para ver el componente Z (Se observa en diferente posición pues lo he rotado respecto a X e Y de las coordenadas del mundo no de ella misma



Ambos ejes

 * Vemos los dos ejes de coordenadas



Girando

 * Lo giramos para verlo un poco mejor
 * Vemos el objeto en el eje de coordenadas del mundo global y lo queremos pasar al eje de coordenadas del mundo local o del objeto



Paso de coordenadas
(X,Y,Z,W)Tpunto_de_vista=(X,Y,Z,W)Tobjeto * Mmundo*'
 * Vamos a ver como pasar el objeto a las coordenadas locales
 * Para ello vamos a multiplicar cada vértice del objeto por una matriz de escena 
 * Esta matriz permite realizar operaciones de rotación traslación y escalado
 * La operacion sería

La matriz de escena

 * Estas operaciones se realizan el OpenGL usando una matriz
 * Cada vez que realizamos una operación de rotación, o de traslación estamos multiplicando por la matriz correspondiente
 * En openGL especificamos que trabajamos con la matriz
 * Al principio la matriz tiene el valor identidad 1 o elemento neutro

Tipos de matrices

 * Tenemos dos tipos de matrices
 * Esta es la matriz Modelo Vista
 * Hasta ahora hemos especificado la parte del modelo o de la escena con rotaciones y traslaciones
 * Para realizar estas operaciones hemos usamos las primitivas de openGL

Operaciones pasa pasar de coordenadas

 * En nuestro caso queremos coger la tetera y
 * 1) Trasladarla al punto 10,10,10.
 * 2) trasladar 10 unidades en X
 * 3) trasladar 10 unidades en Y
 * 4) trasladar 10 unidades en Z
 * 5) Rotar 45 grados

Operaciones

 * Son en total 4 operaciones

Imagen:dosObjetos.png Imagen:dosObjetosDesplazados.png
 * Vemos ahora dos objetos y los desplazamos
 * Los desplazamos
 * Si solo queremos desplazar un objeto respecto a otro
 * Entonces debemos mantener diferentes matrices de transformación a difernetes objetos de nuestra escena
 * Dibujamos un objeto
 * Lo desplazamos con M1
 * Recuperamos la matriz anterior
 * La aplicamos a los nuevos objetos
 * Lo vemos en las imágenes

glPushMatrix;//Guarda la matriz en la pila acutal glPopMatriz;//Recupera la matriz de la pila.
 * OpenGL dispone de una pila para las matrices
 * Para guardar/recuperar matrices:
 * Estas funciones trabajan con la matriz actual.

(X,Y,Z)mundo =(X,Y,Z)objeto * Mescena
 * El código asociado