jueves, 19 de abril de 2012

Práctica de listas. Graficación.


#include "stdafx.h"
#include < glut.h >
void Dibuja();
void Inicializa();
void crealistas();


float prismaV[6][3]={
{-2,0,2},
{-2,0,-2},
{2,0,-2},
{2,0,2},
{0,4,0},
{0,-4,0}};
int prismaC[8][3]={
{4,3,0},
{4,2,3},
{0,3,5},
{3,2,5},
{2,4,1},
{1,4,0},
{2,5,1},
{5,1,0}};
////////////////////////////////////////////////////////////////////
float cuboV[8][3]={
{-2,2,2},
{2,2,2},
{2,-2,2},
{-2,-2,2},
{-2,2,-2},
{2,2,-2},
{2,-2,-2},
{-2,-2,-2}};
int cuboC[6][4]={
{0,1,2,3},
{7,6,5,4},
{1,5,6,2},
{0,3,7,4},
{0,4,5,1},
{3,2,6,7}};
 int prisma=1, cubo=2,piso=3;
void main()
{
glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,50);
glutCreateWindow("practica2.4 ");
glutDisplayFunc(Dibuja);
Inicializa();
glutMainLoop();
}
void Inicializa()
{
glEnable(GL_DEPTH_TEST);
glClearColor(-.8,-.5,.6,-.45);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(120,1.33,.01,50);
glMatrixMode(GL_MODELVIEW);
crealistas();
}
void crealistas()
{
int i,j;
glNewList(prisma,GL_COMPILE);
glBegin(GL_TRIANGLES);
for(i=0;i<8;i++)
{
for(j=0;j<3;j++)
{
glColor3f(i/0.9+0.9,j,0);
glVertex3fv(prismaV[prismaC[i][j]]);
}
}
glEnd();
glEndList();
glNewList(cubo,GL_COMPILE);
glBegin(GL_QUADS);
for(i=0;i<6;i++)
{
for(j=0;j<4;j++)
{
glColor3f(i/0.6+0.6,j/6.0,0);
glVertex3fv(cuboV[cuboC[i][j]]);
}
}
glEnd();
glEndList();
glNewList(piso,GL_COMPILE);
glColor3f(0,.5,0);
glBegin(GL_QUADS);
glVertex3f(-15,-5,-15);
glVertex3f(15,-5,-15);
glVertex3f(15,-5,15);
glVertex3f(-15,-5,15);
glEnd();
glEndList();
}
void Dibuja()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslated(0,1,-10);
glRotated(45,0,1,0);
glCallList(prisma);


glLoadIdentity();
glTranslated(15,-1,-10);
glRotated(45,0,1,0);
glCallList(prisma);


glLoadIdentity();
glTranslated(-10,6,-20);
glRotated(45,0,1,0);
glCallList(prisma);


glLoadIdentity();
glTranslated(-10,-5,-10);
glRotated(50,0,0,0);
glCallList(cubo);


glLoadIdentity();
glTranslated(-20,5,-15);
glRotated(20,0,1,0);
glCallList(cubo);

glLoadIdentity();
glTranslated(0,-5,-10);
glRotated(5,0,0,0);
glCallList(cubo);

glLoadIdentity();
glCallList(piso);


glutSwapBuffers();
}

No hay comentarios:

Publicar un comentario