|
|
Línea 141: |
Línea 141: |
| '''(X,Y,Z)'''<sub>mundo</sub> ='''(X,Y,Z)'''<sub>objeto</sub> * '''M'''<sub>escena</sub> | | '''(X,Y,Z)'''<sub>mundo</sub> ='''(X,Y,Z)'''<sub>objeto</sub> * '''M'''<sub>escena</sub> |
| | | |
− | {{Recursos de la Web|
| |
− | http://asanchez.cs.buap.mx/arreglos_vertices.pdf
| |
− | }}
| |
| </div> | | </div> |
Revisión de 23:01 12 jun 2013
INFORMÁTICA GRÁFICA
¡Disfrutar aprendiendo ......!
El arte de modelar ...."
Coordenadadas del objeto
- Coordenadas globales o del mundo
- Coordenadas locales o del objeto
- Dibujamos un eje de coordenadas x,y,z.
- Estará centrado en el punto 0,0,0
</div>
Coordenadadas del objeto
- El código fuente
void dibujaCoordenadas(void){
porFlechitas();
glLineWidth(2);
glBegin(GL_LINES);
glLineWidth(3);
glColor3f(1,0,0);//Eje X
glVertex3f(0,0,0);
glVertex3f(15,0,0);
glColor3f(0,1,0);//Eje Y
glVertex3f(0,0,0);
glVertex3f(0,15,0);
glColor3f(0,0,1);//Eje Z
glVertex3f(0,0,0);
glVertex3f(0,0,15);
glLineWidth(1);
glEnd();
glFlush();
}
Coordenadadas del objeto
- 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
Coordenadadas del objeto
- giramos para ver mejor
- 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
.. .. ..
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(40.0f,1,0,0);
glRotatef(40.0f,0,1,0);
glutPostRedisplay();
.. .. ..
Coordenadas del objeto
- 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
- Represetnación en alambres
- Ahora hemos dibujado la tetera respecto al eje de coordenadas del mundo
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)
- Gráficamente lo podemos ver en la imagen (siempre respecto al eje de coordenadas de nuestro mundo (0,0,0) como centro
- 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
- Vemos los dos ejes de coordenadas
- 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
===Vamos a ver como pasar el objeto a las coordenadas locales
- Para ello vamos a multiplicar cada vétice del objeto por una matriz de escena
- Esta matriz permite realizar operaciones de rotación traslación y escalado
- En nuestro caso queremos coger la tetera y
- Trasladarla al punto 10,10,10.
- trasladar 10 unidades en X
- trasladar 10 unidades en Y
- trasladar 10 unidades en Z
- Rotar 45 grados
Son en total 4 operaciones
.. ... ..
//Roto la tetera para llegar al eje de coordenadas del objeto
glTranslatef(10,10,10);
glRotated(45,0,0,1);
glutWireTeapot(3);
glFlush();
.. .. ..
Resumen
- En la escena tengo unos objetos
- Cada uno tiene sus coordenadas coordenadas del objeto
- Paso estas coordenadas a las coordenadas del mundo
- Para ello multiplico por la matriz M que llamaremos matriz de escena
- Sistema de coordenadas en que se define la escena. Define cómo se colocan los diferentes objetos en la escena.
- La matriz de escena lleva movimientos de rotación traslación, giro, simetria, ...
|
(X,Y,Z)mundo =(X,Y,Z)objeto * Mescena