lunes, 22 de agosto de 2016

Tarea 4 - Mesa y Silla movimiento David Gomez Jaramillo

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