Transformaciones Geométricas
(Héctor Daniel Garnica Ayala)
A continuación se aplicará la transformación gemétrica de translación a 2 objetos (una mesa y una silla) con las teclas de dirección izquierda y derecha.Obteniedo como resultado lo siguiente:
Objetos en su estado inicial |
Aplicando la Translación |
/*
** ELABORADO POR: HECTOR DANIEL GANICA AYALA
** TRANSFORMACIONES GEOMETRICAS
Se aplica la matriz pop y push para la transformaciones de geometrias haciendo que la mesa y objetos se
muevan con las teclas de direccion izquierda y derecha
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
float Pi=3.141516;
int band=0;
void Tecla(int tecla, int x, int y)
{
switch(tecla)
{
case(27):
exit(0);
case(GLUT_KEY_LEFT):
band=1;
break;
case(GLUT_KEY_RIGHT):
band=0;
break;
default:
break;
}
glutPostRedisplay();//indica que la ventana actual necesita ser redibujada
}
void dibujarMesa()
{
//MESA
glColor3f( 0.60,0.40,0.12);
glBegin(GL_QUADS);
glVertex2i(-4,0);
glVertex2i(-4,3);
glVertex2i(-3,3);
glVertex2i(-3,0);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(-4,0);
glVertex2i(-4,3);
glVertex2i(-3,3);
glVertex2i(-3,0);
glEnd();
glColor3f( 0.60,0.40,0.12);
glBegin(GL_QUADS);
glVertex2i(4,0);
glVertex2i(4,3);
glVertex2i(3,3);
glVertex2i(3,0);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(4,0);
glVertex2i(4,3);
glVertex2i(3,3);
glVertex2i(3,0);
glEnd();
glColor3f( 0.60,0.40,0.12);
glBegin(GL_QUADS);
glVertex2i(-4,3);
glVertex2i(-4,4);
glVertex2i(4,4);
glVertex2i(4,3);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(-4,3);
glVertex2i(-4,4);
glVertex2i(4,4);
glVertex2i(4,3);
glEnd();
//FRUTA
glBegin(GL_POLYGON);
glColor3f(1.0, 0.8, 0.0);
for(int i=0; i<100; i++)
{
float x = 0.7*cos(i*2*Pi/100);
float y = 0.7*sin(i*2*Pi/100);
glVertex2f(x-0.5, y+5.3);
}
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
for(int i=0; i<100; i++)
{
float x = 0.7*cos(i*2*Pi/100);
float y = 0.7*sin(i*2*Pi/100);
glVertex2f(x-0.5, y+5.3);
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
for(int i=0; i<100; i++)
{
float x = 0.7*cos(i*2*Pi/100);
float y = 0.7*sin(i*2*Pi/100);
glVertex2f(x+0.5, y+5.3);
}
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
for(int i=0; i<100; i++)
{
float x = 0.7*cos(i*2*Pi/100);
float y = 0.7*sin(i*2*Pi/100);
glVertex2f(x+0.5, y+5.3);
}
glEnd();
//FRUTERO
glColor3f( 0.0,1.0,0.0);
glBegin(GL_QUADS);
glVertex2i(-2,4);
glVertex2i(-2,5);
glVertex2i(2,5);
glVertex2i(2,4);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(-2,4);
glVertex2i(-2,5);
glVertex2i(2,5);
glVertex2i(2,4);
glEnd();
}
void dibujarSilla()
{
glColor3f( 0.0,0.6,1.0);
glBegin(GL_QUADS);
glVertex2i(8,0);
glVertex2i(8,7);
glVertex2i(9,7);
glVertex2i(9,0);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(8,0);
glVertex2i(8,7);
glVertex2i(9,7);
glVertex2i(9,0);
glEnd();
glColor3f( 0.0,0.6,1.0);
glBegin(GL_QUADS);
glVertex2i(6,0);
glVertex2i(6,2);
glVertex2i(7,2);
glVertex2i(7,0);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(6,0);
glVertex2i(6,2);
glVertex2i(7,2);
glVertex2i(7,0);
glEnd();
glColor3f( 0.0,0.6,1.0);
glBegin(GL_QUADS);
glVertex2i(6,2);
glVertex2i(6,3);
glVertex2i(8,3);
glVertex2i(8,2);
glEnd();
glColor3f( 0.0,0.0,0.0);
glBegin(GL_LINE_STRIP);
glVertex2i(6,2);
glVertex2i(6,3);
glVertex2i(8,3);
glVertex2i(8,2);
glEnd();
}
void dibujarPiso()
{
glColor3f( 0.0,0.0,0.0);
glBegin(GL_QUADS);
glVertex2i(-6,0);
glVertex2i(-6,-1);
glVertex2i(10,-1);
glVertex2i(10,0);
glEnd();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
dibujarPiso();
if(band==0)
{
//GRUPO MESA
glPushMatrix();
glColor3f( 0.60,0.40,0.12);
dibujarMesa();
glPopMatrix();
//GRUPO SILLA
glPushMatrix();
glColor3f( 0.0,0.6,1.0);
dibujarSilla();
glPopMatrix();
}
else
{
//GRUPO MESA
glPushMatrix();
glTranslated(-2, 0, 0);
glColor3f( 0.60,0.40,0.12);
dibujarMesa();
glPopMatrix();
//GRUPO SILLA
glPushMatrix();
glTranslated(0, -4.3, 0);
glRotated(45,0,0,1);
glColor3f( 0.0,0.6,1.0);
dibujarSilla();
glPopMatrix();
}
glFlush();
}
void Init()
{ glClearColor(1.0,1.0,1.0,0);
gluOrtho2D(-10,10,-10,10);
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (600, 600);
glutInitWindowPosition (300, 100);
glutCreateWindow ("TRANSFORMACIONES");
Init();
glutSpecialFunc(Tecla);//FUNCION PARA LEER LAS FLECHAS DE DIRECCION, teclas especiales
glutDisplayFunc(display);
glutMainLoop();/** nunca termine también significa que el programa no sale nunca del ciclo de ejecución*/
return 0;
}
Descargar Archivo.txt
Transformaciones.txt
No hay comentarios:
Publicar un comentario