martes, 6 de septiembre de 2016




/*
 ** ELABORADO POR:
    -Ricardo
    -Daniel
    -David Gómez Jaramillo
    -Juan García García
    -Iván Chavez Gutierrez
 ** Tarea ventilador
 */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <GLut/glut.h>

float cx=250,cy=250,radio=150;
float nx,ny,r,g,dx,dy,pi=3.141592653;

int puntos=0, ancho=700,alto=700,tam_px=10;
int px,py,lados=360;

float a=0, b=0.02;
int bandera = 1;


void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    //glEnable(GL_POINT_SMOOTH);
    
    //Dibujar circulo
    glBegin(GL_POLYGON);
    glColor3f(1,1,1);
    glBegin(GL_QUADS);
    for (float i=0.0; i<2*pi; i+=pi/lados)//0.01
    {
        dx=radio*cos(i)+(ancho/2);
        dy=radio*sin(i)+(alto/2);
        glVertex2f(dx, dy);
    }
    glEnd();
    
    //Dibujar centro de aspas RGB(113, 113, 114)
    glBegin(GL_POLYGON);
    glColor3f(0.7,0.7,0.7);
    glBegin(GL_QUADS);
    for (float i=0.0; i<2*pi; i+=pi/lados)//0.01
    {
        dx=25*cos(i)+(ancho/2);
        dy=25*sin(i)+(alto/2);
        glVertex2f(dx, dy);
    }
    glEnd();
    
    glMatrixMode(GL_MODELVIEW);
    glRotatef(1,0,0,1); //para que se mantengan rotando las aspas
    
    glPushMatrix();
    //glTranslatef(0,2,0); //trasladar aspa
    glRotatef(-60,0,0,1);
    //Dibujar aspa superior
    glBegin(GL_POLYGON);
    glColor3f(0.5,0.5,0.5);
    glBegin(GL_QUADS);
    for (float i=0.0; i<2*pi; i+=pi/lados)//0.01
    {
        dx=25*cos(i)+(ancho/2);
        dy=60*sin(i)+((alto/2)+85);
        glVertex2f(dx, dy);
    }
    glEnd();
    glPopMatrix();
    
    glPushMatrix();
    //glTranslatef(0,2,0); //trasladar aspa
    glRotatef(-60,0,0,1);
    //Dibujar aspa derecha
    glBegin(GL_POLYGON);
    glColor3f(0.5,0.5,0.5);
    glBegin(GL_QUADS);
    for (float i=0.0; i<2*pi; i+=pi/lados)//0.01
    {
        dx=60*cos(i)+((ancho/2)+85);
        dy=25*sin(i)+(alto/2);
        glVertex2f(dx, dy);
    }
    glEnd();
    glPopMatrix();
    
    glPushMatrix();
    glTranslatef(0,2,0); //trasladar aspa
    //glRotatef(-60,0,0,1);
    //Dibujar aspa inferior
    glBegin(GL_POLYGON);
    glColor3f(0.5,0.5,0.5);
    glBegin(GL_QUADS);
    for (float i=0.0; i<2*pi; i+=pi/lados)//0.01
    {
        dx=25*cos(i)+(ancho/2);
        dy=60*sin(i)+((alto/2)-85);
        glVertex2f(dx, dy);
    }
    glEnd();
    glPopMatrix();
    
    glPushMatrix();
    //glTranslatef(0,2,0); //trasladar aspa
    glRotatef(-60,0,0,1);
    //Dibujar aspa izquierda
    glBegin(GL_POLYGON);
    glColor3f(0.5,0.5,0.5);
    glBegin(GL_QUADS);
    for (float i=0.0; i<2*pi; i+=pi/lados)//0.01
    {
        dx=60*cos(i)+((ancho/2)-85);
        dy=25*sin(i)+(alto/2);
        glVertex2f(dx, dy);
    }
    glEnd();
    glPopMatrix();


    //glFlush();
    glutSwapBuffers();
    if (bandera==1){
        a=a-b;
    }

    
}

void key(unsigned char c, int x, int y)
{
    switch(c){
        case(27):
            exit(0);
        case('a'): //apagar ventilador
            bandera = 0;
            break;
        case('p'): //prender ventilador
            bandera = 1;
            break;
        case('+'): //aumentar velocidad
            b=b+0.02;
            break;
        case('-'): //disminuir velocidad
            if(b!=0){
                b=b-0.02;
            }
            break;
        default:
            break;
            
    }
    glutPostRedisplay();
    
}

void Init()
{
    glClearColor(0.92,0.93,0.93, 1.0);
    gluOrtho2D(0,ancho,0,alto);
}

int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(ancho,alto);
    glutCreateWindow("Ventilador");
    
    Init();
    
    glutDisplayFunc(display);
    glutKeyboardFunc(key);
    
    glutMainLoop();
    return 0;
}




No hay comentarios:

Publicar un comentario