sábado, 10 de marzo de 2012

Investigación

Proyección Ortogonal
lo importante del concepto es que las lineas que se proyectan sobre el plano en que estamos dibujando (papel o la ventana de nuestro programa) son perpendiculares a este mismo plano y por tanto paralelas entre si.



Esta proyeccion nos serviria, por ejemplo, para un juego en isometrica (un caso de proyeccion ortogonal) o para graficos en 2D en los que las cordenadas X e Y de los vertices coincidirian con los pixels de nuestra ventana Windows y la coordenada Z seria siempre la misma (en el caso de nuestro codigo ejemplo, 0 ).

Ahora modificamos nuestro programa.
El meollo del asunto sera en la funcion IniciaGL()

Usaremos algo de programacion Windows para ajustar bien el tamaño del viewport al de nuestra ventana: 


Y ahora la funcion glOrtho(...) correspondiente:
glOrtho(xwmin, xwmax, ywmin, ywmax, pcerca, plejos);

Despues viene una parte de codigo para poder ver el tamaño que tiene finalmente nuestro viewport y nuestra proyeccion (ya que los valores dependen del area cliente de la ventana):
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
.
.
.
// Definimos una cadena de caracteres para poner en
// el titulo de nuestra ventana el tamaño del area
// cliente (a mi me gusta saber el tamaño de mi 
// ventana de dibujo)
char cad[50]; // 50 seran suficientes caracteres.
// Relleno mi cadena con lo que voy a poner en la ventana.
sprintf(cad,"USW %i x %i",rect.right,rect.bottom);
// Modifico el titulo de mi ventana.
SetWindowTextA(IdVentana,cad);

Finalmente nos vamos a la funcion Pinta() y modificamos todas las coordenadas para ajustarlas a la nueva proyeccion.
Pongo de ejemplo solo el triangulo principal:

1
2
3
4
5
6
7
8
glBegin(GL_TRIANGLES); 
// Primer vertice de mi triangulo:
glVertex3f(0,350, 0); 
// El segundo vertice de mi triangulo:
glVertex3f(600,350 , 0); 
// El tercer vertice de mi triangulo:
glVertex3f(300, 0, 0);
glEnd();  

Notaras que la esquina derecha del triangulo se sale de la ventana. Esto es porque el lado inferior es de 600 pixels de longitud, lo mismo que la ventana, y el area cliente de la venana es un poco mas pequeña al ser la ventana menos el borde.

El programa se veria asi:




Ejemplo de traslación

Se llama traslación de una figura a la transformación en otra figura mediante un desplazamiento. Para definir una traslación es necesario conocer un vector y un punto.
Ejemplo de traslación de un vector

Ejemplo de rotación

Es por esto que debemos convertir las coordenadas del satélite a un sistema común para conocer cómo se movió en realida. En este ejemplo, si tenemos el tiempo transcurrido y conocemos la velocidad angular de rotación de la Tierra), sabremos el ángulo con el cual difieren ambos sistemas (note que la rotación sólo sucede alrededor del eje Z ).

Figura:Rotación alrededor del eje 
\begin{figure}\centerline{\epsfig{file=img/nulo.ps, width=1, height=1}}
\end{figure}
 Z
























1 comentario:

  1. 4th Anniversary : A Novel by Kevyn Wynn - Titanium Body Armor
    A novel by Kevyn Wynn. titanium legs Featuring two new characters and titanium alloy nier replicant a columbia titanium boots surprise appearance for ceramic or titanium flat iron this summer, the final two of the season babyliss pro nano titanium curling iron

    ResponderEliminar