Alumno: David Gómez Jaramillo
Para el movimiento se requiere presionar la tecla "a" y para regresar a su estado original la tecla "d"Capturas de Pantalla:
Gráfico Original |
Traslación y Rotación agregadas |
Código:
#include <GL/GLUT.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float radio=1,a1,a2;
float nx,ny,r,g,b,dx,dy,pi=3.141592653;
int puntos=0, ancho=500,alto=500,tam_px=5;
int rot = 0,tx=0,ty=0;
void circulo(float cx,float cy,float radio,float r,float
g,float b,float a1,float a2){
glBegin(GL_POLYGON);
glColor3f(r,g,b);
glVertex2f(cx,
cy);
for (float
i=a1; i<a2; i+=0.01)
{
dx=radio*cos(i)+cx;
dy=radio*sin(i)+cy;
glVertex2f(dx, dy);
}
glEnd();
}
void pata(float m1, float m2,float m3,float m4,float
m11,float m22,float m33,float m44, float r, float g, float b){
glBegin(GL_QUADS);
glColor3f(r,g,b);
glVertex2f(m1,m11);
glVertex2f(m2,m22);
glVertex2f(m3,m33);
glVertex2f(m4,m44);
glEnd();
}
void dibujarMesa(){
//------------Pata izq mesa----------------
pata(-4,-4,-3.5,-3.5,-5,0,0,-5,1,0.7,0);
//-----------tabla mesa --------------------
pata(-4,2,2,-4,0,0,0.5,0.5,1,0.7,0);
//---------pata der mesa-------------------------
pata(2,2,1.5,1.5,-5,0,0,-5,1,0.7,0);
}
void dibujafrutero(){
circulo(-0.5,1.5,0.5,1,0,0,0,7);
circulo(-1.2,1.5,0.5,1,1,0,0,7);
pata(-2.5,1,1,-2.5,1.5,1.5,0.5,0.5
,0,1,0);
}
void dibujarSilla(){
//----------pata izq silla---------------------------
pata(3 ,3 ,3.5
,3.5 ,-5 ,-2 ,-2 ,-5 ,0.3,0,1);
//---------pata der silla----------------------------
pata(6 ,6 ,6.5
,6.5 ,-5 ,3 ,3 ,-5 ,0.3,0,1);
//---------tabla silla----------------------------
pata(3 ,6 ,6.5
,3.5 ,-2 ,-2 ,-1.5 ,-1.5 ,0.3,0,1);
}
void dibujarPiso(){
glBegin(GL_LINES);
glColor3f(0,0,0);
glVertex2f(-7,-5);
glVertex2f(7,-5);
glEnd();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
dibujarPiso();
dibujarMesa();
dibujafrutero();
dibujarSilla();
glFlush();
}
void key(unsigned char c, int x, int y)
{
if (c == 27) {
exit(0);
}
if (c == 'a'){
glClear(GL_COLOR_BUFFER_BIT);
dibujarPiso();
glPushMatrix();
glTranslatef(-3,0,0);
dibujarMesa();
dibujafrutero();
glPopMatrix();
glPushMatrix();
glTranslatef(-3,-3.5,0);
glRotatef(45, 0, 0, 1);
dibujarSilla();
glPopMatrix();
glFlush();
}
if( c == 'd'){
display();
}
}
void Init()
{
glClearColor(1.0,1.0,1.0,0);
gluOrtho2D(-10,10,-10,10);
glPointSize(tam_px);
glEnable(GL_POINT_SMOOTH);
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(ancho,alto);
glutCreateWindow("Animacion Mesa");
Init();
glutDisplayFunc(display);
glutKeyboardFunc(key);
glutMainLoop();
return 0;
}
No hay comentarios:
Publicar un comentario