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 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 ).
4th Anniversary : A Novel by Kevyn Wynn - Titanium Body Armor
ResponderEliminarA 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