/*
** 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