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

De WikiEducator
Saltar a: navegación, buscar
(Eje de coordenadas del objeto)
Línea 1: Línea 1:
{{:Usuario:ManuelRomero/grafica/escena1/nav}}
+
{{:Usuario:ManuelRomero/grafica/escena1/nav}} <br>  
<br>
+
  
===Coordenadadas del objeto===
+
=== Coordenadadas del objeto ===
#Coordenadas globales o del mundo
+
 
 +
#Coordenadas globales o del mundo  
 
#Coordenadas locales o del objeto
 
#Coordenadas locales o del objeto
  
*Dibujamos un eje de coordenadas x,y,z.
+
*Dibujamos un eje de coordenadas x,y,z.  
 
*Estará centrado en el punto 0,0,0
 
*Estará centrado en el punto 0,0,0
</div>
+
 
 +
&lt;/div&gt;
 
<div class="slide">
 
<div class="slide">
===Coordenadadas del objeto===
+
=== Coordenadadas del objeto ===
 +
 
 
;El código fuente
 
;El código fuente
<source lang=cpp>
+
 
 +
<source lang="cpp">
 
void dibujaCoordenadas(void){
 
void dibujaCoordenadas(void){
 
porFlechitas();
 
porFlechitas();
Línea 32: Línea 35:
 
glFlush();
 
glFlush();
 
}
 
}
</source>
+
</source>  
</div>
+
</div> <div class="slide">
<div class="slide">
+
=== Coordenadadas del objeto ===
===Coordenadadas del objeto===
+
 
*A OpenGL le especificamos bien por puntos o por vectores estos valores
+
*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
 
*OpenGL rederiza en la pantalla y visualiza dichos puntos según le especifiquemos
[[Imagen:CoordenadasOpenGLBásico.png|200px]]
+
 
</div>
+
[[Image:CoordenadasOpenGLBásico.png|200px]]  
<div class="slide">
+
</div> <div class="slide">
===Coordenadadas del objeto===
+
=== Coordenadadas del objeto ===
 +
 
 
;giramos para ver mejor
 
;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  
+
*Lo giramos para ver la coordenada z. Esta parte luego la veremos  
<source lang=cpp>
+
*Para conseguirlo he girado 40º en el eje de x y 40º en el eje de y
 +
 
 +
<source lang="cpp">
 
   .. .. ..
 
   .. .. ..
 
     glMatrixMode(GL_MODELVIEW);
 
     glMatrixMode(GL_MODELVIEW);
Línea 53: Línea 59:
 
     glutPostRedisplay();
 
     glutPostRedisplay();
 
   .. .. ..
 
   .. .. ..
</source>
+
</source>  
</div>
+
</div> <div class="slide">
<div class="slide">
+
=== Coordenadas del objeto ===
===Coordenadas del objeto===
+
 
[[Imagen:CoordenadasOpenGL.png|200px]]
+
[[Image:CoordenadasOpenGL.png|200px]]  
*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
+
*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
 
*con la barra espaciadora podemos cambiar su representación, sólida o de alambres
</div>
+
</div> <div class="slide">
<div class="slide">
+
 
*Representación sólida
 
*Representación sólida
[[Imagen:tetera1.png]]
+
 
</div>
+
[[Image:Tetera1.png|RTENOTITLE]]  
<div class="slide">
+
</div> <div class="slide">
 
*Represetnación en alambres
 
*Represetnación en alambres
[[Imagen:tetera2.png]]
+
 
</div>
+
[[Image:Tetera2.png|RTENOTITLE]]  
<div class="slide">
+
</div> <div class="slide">
 
*Representación girada
 
*Representación girada
[[Imagen:tetera3.png]]
+
 
 +
[[Image:Tetera3.png|RTENOTITLE]]  
 +
 
 
*Ahora hemos dibujado la tetera respecto al eje de coordenadas del mundo
 
*Ahora hemos dibujado la tetera respecto al eje de coordenadas del mundo
</div>
+
</div> <div class="slide">
<div class="slide">
+
=== Eje de coordenadas del objeto ===
  
===Eje de coordenadas del objeto===
+
*En realidad el objeto está en una posición del espacio con sus 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  
*La idea es llevármelo a las coordenadas del mundo, para mi de referencia
+
 
*Planteamos este nuevo eje de coordenadas  
 
*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)
 
  (10,10,10)- (5,15,10)
 
  (10,10,10)- (5,15,10)
 
  (10,10,10)- (10,10,15)
 
  (10,10,10)- (10,10,15)
</div>
+
</div> <div class="slide">
<div class="slide">
+
 
*Gráficamente lo podemos ver en la imagen (siempre respecto al eje de coordenadas de nuestro mundo (0,0,0) como centro
 
*Gráficamente lo podemos ver en la imagen (siempre respecto al eje de coordenadas de nuestro mundo (0,0,0) como centro
[[Image:coordenadasObjeto1.png]]
+
 
</div>
+
[[Image:CoordenadasObjeto1.png|RTENOTITLE]]  
<div class="slide">
+
</div> <div class="slide">
*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
+
*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
[[Image:coordenadasObjeto2.png]]
+
 
</div>
+
[[Image:CoordenadasObjeto2.png|RTENOTITLE]]  
<div class="slide">
+
</div> <div class="slide">
 
*Vemos los dos ejes de coordenadas
 
*Vemos los dos ejes de coordenadas
[[Image:coordenadasObjeto3.png]]
+
 
</div>
+
[[Image:CoordenadasObjeto3.png|RTENOTITLE]]  
<div class="slide">
+
</div> <div class="slide">
 
*Lo giramos para verlo un poco mejor  
 
*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
+
*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
[[Image:coordenadasObjeto4.png]]
+
 
</div>
+
[[Image:CoordenadasObjeto4.png|RTENOTITLE]]  
<div class="slide">
+
</div> <div class="slide">
===Vamos a ver como pasar el objeto a las coordenadas locales
+
===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
+
*Para ello vamos a multiplicar cada vétice del objeto por una matriz de escena  
*En nuestro caso queremos coger la tetera y  
+
*Esta matriz permite realizar operaciones de rotación traslación y escalado  
#Trasladarla al punto 10,10,10.
+
*En nuestro caso queremos coger la tetera y
##trasladar 10 unidades en X
+
 
##trasladar 10 unidades en Y
+
#Trasladarla al punto 10,10,10.  
##trasladar 10 unidades en Z
+
##trasladar 10 unidades en X  
#Rotar 45 grados  
+
##trasladar 10 unidades en Y  
 +
##trasladar 10 unidades en Z  
 +
#Rotar 45 grados
  
Son en total 4 operaciones
+
Son en total 4 operaciones [[Image:CoordenadasMundoObjeto.png|RTENOTITLE]] <source lang="cpp">
[[Imagen:CoordenadasMundoObjeto.png]]
+
<source lang=cpp>
+
 
.. ... ..  
 
.. ... ..  
 
   //Roto la tetera para llegar al eje de coordenadas del objeto
 
   //Roto la tetera para llegar al eje de coordenadas del objeto
Línea 124: Línea 131:
 
  glFlush();
 
  glFlush();
 
.. .. ..  
 
.. .. ..  
</source>
+
</source> {{Resumen|
{{Resumen|En la escena tengo unos objetos
+
*En la escena tengo unos objetos
Cada uno tiene sus coordenadas
+
*Cada uno tiene sus coordenadas ''coordenadas del objeto''
Paso estas coordenadas a las coordenadas del mundo
+
*Paso estas coordenadas a las coordenadas del mundo
Para ello multiplico por la matriz M de escena
+
*Para ello multiplico por la matriz '''''M''''' que llamaremos ''matriz de escena''
(x,y,z)mundo = (x,y,z)objeto M escena
+
'''(X,Y,Z)'''<sub>mundo</sub> ='''(X,Y,Z)'''<sub>objeto</sub> * '''M'''<sub>escena</sub>
 
Sistema de coordenadas en que se define la escena. Define cómo se colocan los diferentes objetos en la escena.
 
Sistema de coordenadas en que se define la escena. Define cómo se colocan los diferentes objetos en la escena.
Mescena pasa de coordenadas objeto a coordenadas mundo (rotaciones, translaciones, escalados… )
+
La matriz de escena lleva movimientos de rotación traslación, giro, simetria, ...
 
}}
 
}}
<math>(x,y,z)_{mudo}=(X,Y,Z)_{objeto} * M_{escena}</math>
+
 
</div>
+
<div class="slide">
+
 
{{Recursos de la Web|
 
{{Recursos de la Web|
 
http://asanchez.cs.buap.mx/arreglos_vertices.pdf
 
http://asanchez.cs.buap.mx/arreglos_vertices.pdf
}}
+
}}  
 
</div>
 
</div>

Revisión de 10:31 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

RTENOTITLE

  • Represetnación en alambres

RTENOTITLE

  • Representación girada

RTENOTITLE

  • 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

RTENOTITLE

  • 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

RTENOTITLE

  • Vemos los dos ejes de coordenadas

RTENOTITLE

  • 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

RTENOTITLE

===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 RTENOTITLE
.. ... .. 
  //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}}}