Diferencia entre revisiones de «ManuelRomero/grafica/escena1/objeto»

De WikiEducator
Saltar a: navegación, buscar
(Eje de coordenadas del objeto)
Línea 78: Línea 78:
  
 
===Eje de coordenadas del objeto===
 
===Eje de coordenadas del objeto===
*Planteamos un nuevo eje de coordenadas  
+
*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
 
*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)- (15,15,10)
Línea 111: Línea 113:
 
##trasladar 10 unidades en Z
 
##trasladar 10 unidades en Z
 
#Rotar 45 grados  
 
#Rotar 45 grados  
 +
 +
Son en total 4 operaciones
 
[[Imagen:CoordenadasMundoObjeto.png]]
 
[[Imagen:CoordenadasMundoObjeto.png]]
 
<source lang=cpp>
 
<source lang=cpp>
Línea 121: Línea 125:
 
.. .. ..  
 
.. .. ..  
 
</source>
 
</source>
 +
{{Resumen|En la escena tengo unos objetos
 +
Cada uno tiene sus coordenadas
 +
Paso estas coordenadas a las coordenadas del mundo
 +
Para ello multiplico por la matriz M de escena
 +
(x,y,z)mundo = (x,y,z)objeto M escena
 +
<math>(x,y,z)_{mudo}=(X,Y,Z)_{objeto} * M_{escena}</math>
  
Son en total 4 operaciones
+
Sistema de coordenadas en que se define la escena. Define cómo se colocan los diferentes objetos en la escena.
 +
 
 +
 
 +
(x, y, z, w)T mundo = (x, y, z, w)Tobjeto ·Mescena
 +
 
 +
 
 +
 +
Mescena pasa de coordenadas objeto a coordenadas mundo (rotaciones, translaciones, escalados… )
 +
}}
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">

Revisión de 11:25 12 jun 2013



Coordenadadas del objeto

  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

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

CoordenadasOpenGLBásico.png

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

CoordenadasOpenGL.png

  • 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

Tetera1.png

  • Represetnación en alambres

Tetera2.png

  • Representación girada

Tetera3.png

  • 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

CoordenadasObjeto1.png

  • 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

CoordenadasObjeto2.png

  • Vemos los dos ejes de coordenadas

CoordenadasObjeto3.png

  • 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

CoordenadasObjeto4.png

===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
  1. Trasladarla al punto 10,10,10.
    1. trasladar 10 unidades en X
    2. trasladar 10 unidades en Y
    3. trasladar 10 unidades en Z
  2. Rotar 45 grados

Son en total 4 operaciones CoordenadasMundoObjeto.png

.. ... .. 
  //Roto la tetera para llegar al eje de coordenadas del objeto
		  glTranslatef(10,10,10);
		  glRotated(45,0,0,1);
		  glutWireTeapot(3);
		  glFlush();
.. .. ..


Icon summary.gif

Resumen

{{{1}}}