Código Menú|Animación // Diana Vargas B
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <GL/glut.h>
float rotar = 0,inc=0.1, ry=0, rx=0,ang=0,botar=1, relleno=1;// botar =una bandera
float r=1,g=0,b=0;
int figurita =1;
float x,y;
float radio=0;
float cx=0;
float cy=0;
float dx, dy;
void dibujaCuadro(void) {
if(relleno==1){
glColor3f(r, g, b);
glBegin(GL_QUADS);
glVertex2f(5, 5);
glVertex2f(-5, 5);
glVertex2f(-5, -5);
glVertex2f(5, -5);
glEnd();
}else{
glColor3f(r, g, b);
glBegin(GL_LINE_LOOP);
glVertex2f(5, 5);
glVertex2f(-5, 5);
glVertex2f(-5, -5);
glVertex2f(5, -5);
glEnd();
}
}
//CAP AMERICA
void estrella(float r, float g, float b){
if(relleno==1){
glColor3f(r,g,g);
glBegin(GL_POLYGON);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glEnd();
glBegin(GL_TRIANGLES);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(0,6);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(5.5,2);
glVertex2f(-2,2);
glVertex2f(-3,-1);
glVertex2f(-5.5,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(3.8,-4.7);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glVertex2f(-3.8,-4.7);
glEnd();
}else{
glColor3f(r,g,g);
glBegin(GL_LINE_LOOP);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(0,6);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(5.5,2);
glVertex2f(-2,2);
glVertex2f(-3,-1);
glVertex2f(-5.5,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(3.8,-4.7);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glVertex2f(-3.8,-4.7);
glEnd();
}
glFlush();
}
void circulito (float radio, float r, float g, float b){
if(relleno==1){
glColor3f(r,g,b);
glBegin(GL_POLYGON);
for(float i = 0; i<=2*3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dx,dy);
}
glEnd();
}else{
glColor3f(r,g,b);
glBegin(GL_LINE_LOOP);
for(float i = 0; i<=2*3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dx,dy);
}
glEnd();
}
}
//YIN & YANG
void medcirculo (float radio, float r, float g, float b){
if(relleno==1){
glColor3f(r,g,b);
glBegin(GL_POLYGON);
for(float i = 0; i<=3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dy,dx);
}
glEnd();
}else{
glColor3f(r,g,b);
glBegin(GL_POLYGON);
for(float i = 0; i<=3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dy,dx);
}
glEnd();
}
}
void circulo (float radio, float r, float g, float b){
glColor3f(r,g,b);
glBegin(GL_LINE_STRIP);
for(float i = 0; i<=2*3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dx,dy);
}
glEnd();
}
//DARTH MAUL
void dibujardarthmaul(void){
glClear(GL_COLOR_BUFFER_BIT);
if(relleno==1){
//BELT
glBegin(GL_POLYGON);
glColor3f(0.5,0.5,0.5);
glVertex2f(0,1);
glVertex2f(1,1);
glVertex2f(1,0);
glVertex2f(3,0);
glVertex2f(3,-1);
glVertex2f(-2,-1);
glVertex2f(-2,0);
glVertex2f(0,0);
glVertex2f(0,1);
glEnd();
//LIGHTSABER
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex2f(-8,0);
glVertex2f(-8,1);
glVertex2f(0,1);
glVertex2f(0,0);
glVertex2f(1,1);
glVertex2f(9,1);
glVertex2f(9,0);
glVertex2f(1,0);
glEnd();
//ABAJO
glBegin(GL_QUADS);
glColor3f(0,0,0);
glVertex2f(-3,-1);
glVertex2f(4,-1);
glVertex2f(4,-3);
glVertex2f(-3,-3);
glVertex2f(-4,-3);
glVertex2f(5,-3);
glVertex2f(5,-5);
glVertex2f(-4,-5);
glVertex2f(-5,-5);
glVertex2f(6,-5);
glVertex2f(6,-6);
glVertex2f(-5,-6);
glEnd();
//GRAY
glBegin(GL_QUADS);
glColor3f(0.5,0.5,0.5);
glVertex2f(-2,-5);
glVertex2f(0,-5);
glVertex2f(0,-6);
glVertex2f(-2,-6);
glVertex2f(1,-5);
glVertex2f(3,-5);
glVertex2f(3,-6);
glVertex2f(1,-6);
glEnd();
//ARRIBA
glBegin(GL_QUADS);//
glColor3f(0,0,0);
glVertex2f(-4,2);
glVertex2f(5,2);
glVertex2f(5,1);
glVertex2f(-4,1);
glVertex2f(-5,4);
glVertex2f(6,4);
glVertex2f(6,2);
glVertex2f(-5,2);
glColor3f(1,1,1);
glVertex2f(-3,3);
glVertex2f(-2,3);
glVertex2f(-2,2);
glVertex2f(-3,2);
glVertex2f(3,3);
glVertex2f(4,3);
glVertex2f(4,2);
glVertex2f(3,2);
glColor3f(0,0,0);
glVertex2f(-3,5);
glVertex2f(4,5);
glVertex2f(4,4);
glVertex2f(-3,4);
glVertex2f(-2,6);
glVertex2f(3,6);
glVertex2f(3,5);
glVertex2f(-2,5);
glColor3f(1,0,0);
glVertex2f(-1,5);
glVertex2f(2,5);
glVertex2f(2,4);
glVertex2f(-1,4);
glVertex2f(-1,6);
glVertex2f(0,6);
glVertex2f(0,5);
glVertex2f(-1,5);
glVertex2f(1,6);
glVertex2f(2,6);
glVertex2f(2,5);
glVertex2f(1,5);
glColor3f(0.5,0.5,0.5);
glVertex2f(-4,5);
glVertex2f(-3,5);
glVertex2f(-3,4);
glVertex2f(-4,4);
glVertex2f(4,5);
glVertex2f(5,5);
glVertex2f(5,4);
glVertex2f(4,4);
glColor3f(0,0,0);
glVertex2f(-4,14);
glVertex2f(5,14);
glVertex2f(5,7);
glVertex2f(-4,7);
glVertex2f(-3,7);
glVertex2f(4,7);
glVertex2f(4,6);
glVertex2f(-3,6);
glVertex2f(-2,15);
glVertex2f(3,15);
glVertex2f(3,14);
glVertex2f(-2,14);
//RED
glColor3f(1,0,0);
glVertex2f(-1,13);
glVertex2f(0,13);
glVertex2f(0,8);
glVertex2f(-1,8);
glVertex2f(1,13);
glVertex2f(2,13);
glVertex2f(2,8);
glVertex2f(1,8);
glVertex2f(-2,14);
glVertex2f(-1,14);
glVertex2f(-1,11);
glVertex2f(-2,11);
glVertex2f(2,14);
glVertex2f(3,14);
glVertex2f(3,11);
glVertex2f(2,11);
glVertex2f(-2,8);
glVertex2f(-1,8);
glVertex2f(-1,6);
glVertex2f(-2,6);
glVertex2f(2,8);
glVertex2f(3,8);
glVertex2f(3,6);
glVertex2f(2,6);
glVertex2f(-3,11);
glVertex2f(-2,11);
glVertex2f(-2,8);
glVertex2f(-3,8);
glVertex2f(3,11);
glVertex2f(4,11);
glVertex2f(4,8);
glVertex2f(3,8);
glVertex2f(-4,10);
glVertex2f(-3,10);
glVertex2f(-3,9);
glVertex2f(-4,9);
glVertex2f(4,10);
glVertex2f(5,10);
glVertex2f(5,9);
glVertex2f(4,9);
glVertex2f(-4,13);
glVertex2f(-2,13);
glVertex2f(-2,12);
glVertex2f(-4,12);
glVertex2f(3,13);
glVertex2f(5,13);
glVertex2f(5,12);
glVertex2f(3,12);
glVertex2f(-1,16);
glVertex2f(0,16);
glVertex2f(0,14);
glVertex2f(-1,14);
glVertex2f(1,16);
glVertex2f(2,16);
glVertex2f(2,14);
glVertex2f(1,14);
glVertex2f(-3,16);
glVertex2f(-2,16);
glVertex2f(-2,14);
glVertex2f(-3,14);
glVertex2f(3,16);
glVertex2f(4,16);
glVertex2f(4,14);
glVertex2f(3,14);
glVertex2f(-5,14);
glVertex2f(-3,14);
glVertex2f(-3,13);
glVertex2f(-5,13);
glVertex2f(4,14);
glVertex2f(6,14);
glVertex2f(6,13);
glVertex2f(4,13);
glVertex2f(-5,15);
glVertex2f(-4,15);
glVertex2f(-4,14);
glVertex2f(-5,14);
glVertex2f(5,15);
glVertex2f(6,15);
glVertex2f(6,14);
glVertex2f(5,14);
//eye right
glColor3f(1,1,0);
glVertex2f(2,9);
glVertex2f(3,9);
glVertex2f(3,10);
glVertex2f(2,10);
//eye left
glVertex2f(-1,9);
glVertex2f(-2,9);
glVertex2f(-2,10);
glVertex2f(-1,10);
//mouth
glVertex2f(-1,6);
glVertex2f(2,6);
glVertex2f(2,7);
glVertex2f(-1,7);
glEnd();
}else{
//BELT
glBegin(GL_LINE_LOOP);
glColor3f(0.5,0.5,0.5);
glVertex2f(0,1);
glVertex2f(1,1);
glVertex2f(1,0);
glVertex2f(3,0);
glVertex2f(3,-1);
glVertex2f(-2,-1);
glVertex2f(-2,0);
glVertex2f(0,0);
glVertex2f(0,1);
glEnd();
//LIGHTSABER
glBegin(GL_LINE_LOOP);
glColor3f(1,0,0);
glVertex2f(-8,0);
glVertex2f(-8,1);
glVertex2f(0,1);
glVertex2f(0,0);
glVertex2f(1,1);
glVertex2f(9,1);
glVertex2f(9,0);
glVertex2f(1,0);
glEnd();
//ABAJO
glBegin(GL_LINE_LOOP);
glColor3f(0,0,0);
glVertex2f(-3,-1);
glVertex2f(4,-1);
glVertex2f(4,-3);
glVertex2f(-3,-3);
glVertex2f(-4,-3);
glVertex2f(5,-3);
glVertex2f(5,-5);
glVertex2f(-4,-5);
glVertex2f(-5,-5);
glVertex2f(6,-5);
glVertex2f(6,-6);
glVertex2f(-5,-6);
glEnd();
//GRAY
glBegin(GL_LINE_LOOP);
glColor3f(0.5,0.5,0.5);
glVertex2f(-2,-5);
glVertex2f(0,-5);
glVertex2f(0,-6);
glVertex2f(-2,-6);
glVertex2f(1,-5);
glVertex2f(3,-5);
glVertex2f(3,-6);
glVertex2f(1,-6);
glEnd();
//ARRIBA
glBegin(GL_LINE_LOOP);//
glColor3f(0,0,0);
glVertex2f(-4,2);
glVertex2f(5,2);
glVertex2f(5,1);
glVertex2f(-4,1);
glVertex2f(-5,4);
glVertex2f(6,4);
glVertex2f(6,2);
glVertex2f(-5,2);
glColor3f(1,1,1);
glVertex2f(-3,3);
glVertex2f(-2,3);
glVertex2f(-2,2);
glVertex2f(-3,2);
glVertex2f(3,3);
glVertex2f(4,3);
glVertex2f(4,2);
glVertex2f(3,2);
glColor3f(0,0,0);
glVertex2f(-3,5);
glVertex2f(4,5);
glVertex2f(4,4);
glVertex2f(-3,4);
glVertex2f(-2,6);
glVertex2f(3,6);
glVertex2f(3,5);
glVertex2f(-2,5);
glColor3f(1,0,0);
glVertex2f(-1,5);
glVertex2f(2,5);
glVertex2f(2,4);
glVertex2f(-1,4);
glVertex2f(-1,6);
glVertex2f(0,6);
glVertex2f(0,5);
glVertex2f(-1,5);
glVertex2f(1,6);
glVertex2f(2,6);
glVertex2f(2,5);
glVertex2f(1,5);
glColor3f(0.5,0.5,0.5);
glVertex2f(-4,5);
glVertex2f(-3,5);
glVertex2f(-3,4);
glVertex2f(-4,4);
glVertex2f(4,5);
glVertex2f(5,5);
glVertex2f(5,4);
glVertex2f(4,4);
glColor3f(0,0,0);
glVertex2f(-4,14);
glVertex2f(5,14);
glVertex2f(5,7);
glVertex2f(-4,7);
glVertex2f(-3,7);
glVertex2f(4,7);
glVertex2f(4,6);
glVertex2f(-3,6);
glVertex2f(-2,15);
glVertex2f(3,15);
glVertex2f(3,14);
glVertex2f(-2,14);
//RED
glColor3f(1,0,0);
glVertex2f(-1,13);
glVertex2f(0,13);
glVertex2f(0,8);
glVertex2f(-1,8);
glVertex2f(1,13);
glVertex2f(2,13);
glVertex2f(2,8);
glVertex2f(1,8);
glVertex2f(-2,14);
glVertex2f(-1,14);
glVertex2f(-1,11);
glVertex2f(-2,11);
glVertex2f(2,14);
glVertex2f(3,14);
glVertex2f(3,11);
glVertex2f(2,11);
glVertex2f(-2,8);
glVertex2f(-1,8);
glVertex2f(-1,6);
glVertex2f(-2,6);
glVertex2f(2,8);
glVertex2f(3,8);
glVertex2f(3,6);
glVertex2f(2,6);
glVertex2f(-3,11);
glVertex2f(-2,11);
glVertex2f(-2,8);
glVertex2f(-3,8);
glVertex2f(3,11);
glVertex2f(4,11);
glVertex2f(4,8);
glVertex2f(3,8);
glVertex2f(-4,10);
glVertex2f(-3,10);
glVertex2f(-3,9);
glVertex2f(-4,9);
glVertex2f(4,10);
glVertex2f(5,10);
glVertex2f(5,9);
glVertex2f(4,9);
glVertex2f(-4,13);
glVertex2f(-2,13);
glVertex2f(-2,12);
glVertex2f(-4,12);
glVertex2f(3,13);
glVertex2f(5,13);
glVertex2f(5,12);
glVertex2f(3,12);
glVertex2f(-1,16);
glVertex2f(0,16);
glVertex2f(0,14);
glVertex2f(-1,14);
glVertex2f(1,16);
glVertex2f(2,16);
glVertex2f(2,14);
glVertex2f(1,14);
glVertex2f(-3,16);
glVertex2f(-2,16);
glVertex2f(-2,14);
glVertex2f(-3,14);
glVertex2f(3,16);
glVertex2f(4,16);
glVertex2f(4,14);
glVertex2f(3,14);
glVertex2f(-5,14);
glVertex2f(-3,14);
glVertex2f(-3,13);
glVertex2f(-5,13);
glVertex2f(4,14);
glVertex2f(6,14);
glVertex2f(6,13);
glVertex2f(4,13);
glVertex2f(-5,15);
glVertex2f(-4,15);
glVertex2f(-4,14);
glVertex2f(-5,14);
glVertex2f(5,15);
glVertex2f(6,15);
glVertex2f(6,14);
glVertex2f(5,14);
//eye right
glColor3f(1,1,0);
glVertex2f(2,9);
glVertex2f(3,9);
glVertex2f(3,10);
glVertex2f(2,10);
//eye left
glVertex2f(-1,9);
glVertex2f(-2,9);
glVertex2f(-2,10);
glVertex2f(-1,10);
//mouth
glVertex2f(-1,6);
glVertex2f(2,6);
glVertex2f(2,7);
glVertex2f(-1,7);
glEnd();
}
glFlush();
}
void miMenu(int valor) {
switch(valor) {
case 1:
inc=0.1;
break;
case 2:
inc=0;botar=0;
break;
case 3:
r=1;g=0;b=0;
break;
case 4:
r=0;g=1;b=0;
break;
case 5:
r=0;g=0;b=1;
break;
case 9:
botar=1;
break;
case 20:
r=1;g=1;b=0;
break;
case 21:
r=0;g=0;b=0;
break;
case 22:
r=0.5;g=0.5;b=0.5;
break;
case 23:
r=1;g=1;b=1;
break;
case 24:
figurita = 2;
//dibujardarthmaul();
break;
case 25:
figurita = 3;
break;
case 26:
figurita = 4;
break;
case 27:
botar=2;
break;
case 28:
botar=1;
break;
case 29:
relleno=1;
break;
case 30:
relleno=0;
break;
default:
break;
}
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT );
glPushMatrix();
glTranslatef(0, ry, 0);
glTranslatef(rx, 0, 0);
glRotatef(rotar,0,0,1);//z viewport
dibujaCuadro();
if (figurita==2){
dibujardarthmaul();
}
if (figurita==3){
circulito(10,1,0,0);
circulito(8.7,1,1,1);
circulito(7.5,1,0,0);
circulito(6,0,0,1);
estrella(1,1,1);
}
if (figurita==4){
circulo(10,0,0,0);
medcirculo(10,1,1,1);
medcirculo(-10,0,0,0);
glTranslatef(0,-5,0);
medcirculo(5,0,0,0);
glTranslatef(0,10,0);
medcirculo(-5,1,1,1);
glTranslatef(-1,-9,0);
circulito(1.5,1,1,1);
glTranslatef(1,9,0);
circulito(1.5,0,0,0);
}
glPopMatrix();
glutSwapBuffers();
glFlush();
}
void animar(void) {
rotar=rotar+inc;
if (botar==1){
ang=ang+0.001;
ry=10*cos(ang);
//printf("valor: %f\n",ry);
}
if (botar==2){
ang=ang+0.001;
rx=10*sin(ang);
}
glutPostRedisplay();
}
void crearMenu(void){
int colores3;
colores3=glutCreateMenu(miMenu);
glutAddMenuEntry("B", 3);
int colores;
colores=glutCreateMenu(miMenu);
glutAddMenuEntry("Rojo", 3);
glutAddMenuEntry("Verde", 4);
glutAddMenuEntry("Azul", 5);
glutAddMenuEntry("Amarillo",20);
int gs;
gs = glutCreateMenu(miMenu);
glutAddMenuEntry("Negro",21);
glutAddMenuEntry("Gris",22);
glutAddMenuEntry("Blanco",23);
int dibujitos;
dibujitos = glutCreateMenu(miMenu);
glutAddMenuEntry("Pixelart",24);
glutAddMenuEntry("Cap America <3",25);
glutAddMenuEntry("Yin&Yang",26);
int botar;
botar = glutCreateMenu(miMenu);
glutAddMenuEntry("X",27);
glutAddMenuEntry("Y",28);
int relleno;
relleno = glutCreateMenu(miMenu);
glutAddMenuEntry("Fill",29);
glutAddMenuEntry("Empty",30);
//menu con el click derecho
glutCreateMenu(miMenu);
glutAddMenuEntry("Start", 1);
glutAddMenuEntry("Stop", 2);
//glutAddMenuEntry("Rebotar", 9);
glutAddSubMenu("Rebotar", botar);
glutAddSubMenu("Color", colores);
glutAddSubMenu("Grayscale", gs);
glutAddSubMenu("Figuras", dibujitos);
glutAddSubMenu("Solid", relleno);
//glutAddSubMenu("fIGURA", gs); pixel art, logo 1 & logo 2
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
//RELAACION DE ASPECTO ASPECTRATIO
void ajustar(int ancho, int alto)
{
float aspectratio;
aspectratio = 1;
if (1>(ancho/alto))
{
glViewport(0, 0, ancho, ancho/aspectratio);
}
else
{
glViewport(0, 0, alto*aspectratio,alto);
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB |GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutCreateWindow("MENU Y ANIMAR");
gluOrtho2D(-15, 15, -15, 15);
glClearColor(1,1,1,1);
crearMenu();
glutDisplayFunc(display);
glutReshapeFunc(ajustar);
glutIdleFunc(animar);
glutMainLoop();
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <GL/glut.h>
float rotar = 0,inc=0.1, ry=0, rx=0,ang=0,botar=1, relleno=1;// botar =una bandera
float r=1,g=0,b=0;
int figurita =1;
float x,y;
float radio=0;
float cx=0;
float cy=0;
float dx, dy;
void dibujaCuadro(void) {
if(relleno==1){
glColor3f(r, g, b);
glBegin(GL_QUADS);
glVertex2f(5, 5);
glVertex2f(-5, 5);
glVertex2f(-5, -5);
glVertex2f(5, -5);
glEnd();
}else{
glColor3f(r, g, b);
glBegin(GL_LINE_LOOP);
glVertex2f(5, 5);
glVertex2f(-5, 5);
glVertex2f(-5, -5);
glVertex2f(5, -5);
glEnd();
}
}
//CAP AMERICA
void estrella(float r, float g, float b){
if(relleno==1){
glColor3f(r,g,g);
glBegin(GL_POLYGON);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glEnd();
glBegin(GL_TRIANGLES);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(0,6);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(5.5,2);
glVertex2f(-2,2);
glVertex2f(-3,-1);
glVertex2f(-5.5,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(3.8,-4.7);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glVertex2f(-3.8,-4.7);
glEnd();
}else{
glColor3f(r,g,g);
glBegin(GL_LINE_LOOP);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2f(-2,2);
glVertex2f(2,2);
glVertex2f(0,6);
glVertex2f(2,2);
glVertex2f(3,-1);
glVertex2f(5.5,2);
glVertex2f(-2,2);
glVertex2f(-3,-1);
glVertex2f(-5.5,2);
glVertex2f(3,-1);
glVertex2f(0,-3);
glVertex2f(3.8,-4.7);
glVertex2f(0,-3);
glVertex2f(-3,-1);
glVertex2f(-3.8,-4.7);
glEnd();
}
glFlush();
}
void circulito (float radio, float r, float g, float b){
if(relleno==1){
glColor3f(r,g,b);
glBegin(GL_POLYGON);
for(float i = 0; i<=2*3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dx,dy);
}
glEnd();
}else{
glColor3f(r,g,b);
glBegin(GL_LINE_LOOP);
for(float i = 0; i<=2*3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dx,dy);
}
glEnd();
}
}
//YIN & YANG
void medcirculo (float radio, float r, float g, float b){
if(relleno==1){
glColor3f(r,g,b);
glBegin(GL_POLYGON);
for(float i = 0; i<=3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dy,dx);
}
glEnd();
}else{
glColor3f(r,g,b);
glBegin(GL_POLYGON);
for(float i = 0; i<=3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dy,dx);
}
glEnd();
}
}
void circulo (float radio, float r, float g, float b){
glColor3f(r,g,b);
glBegin(GL_LINE_STRIP);
for(float i = 0; i<=2*3.1415926; i+=0.01){
dx = radio*cos(i)+cx;
dy = radio*sin(i)+cy;
glVertex2f(dx,dy);
}
glEnd();
}
//DARTH MAUL
void dibujardarthmaul(void){
glClear(GL_COLOR_BUFFER_BIT);
if(relleno==1){
//BELT
glBegin(GL_POLYGON);
glColor3f(0.5,0.5,0.5);
glVertex2f(0,1);
glVertex2f(1,1);
glVertex2f(1,0);
glVertex2f(3,0);
glVertex2f(3,-1);
glVertex2f(-2,-1);
glVertex2f(-2,0);
glVertex2f(0,0);
glVertex2f(0,1);
glEnd();
//LIGHTSABER
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex2f(-8,0);
glVertex2f(-8,1);
glVertex2f(0,1);
glVertex2f(0,0);
glVertex2f(1,1);
glVertex2f(9,1);
glVertex2f(9,0);
glVertex2f(1,0);
glEnd();
//ABAJO
glBegin(GL_QUADS);
glColor3f(0,0,0);
glVertex2f(-3,-1);
glVertex2f(4,-1);
glVertex2f(4,-3);
glVertex2f(-3,-3);
glVertex2f(-4,-3);
glVertex2f(5,-3);
glVertex2f(5,-5);
glVertex2f(-4,-5);
glVertex2f(-5,-5);
glVertex2f(6,-5);
glVertex2f(6,-6);
glVertex2f(-5,-6);
glEnd();
//GRAY
glBegin(GL_QUADS);
glColor3f(0.5,0.5,0.5);
glVertex2f(-2,-5);
glVertex2f(0,-5);
glVertex2f(0,-6);
glVertex2f(-2,-6);
glVertex2f(1,-5);
glVertex2f(3,-5);
glVertex2f(3,-6);
glVertex2f(1,-6);
glEnd();
//ARRIBA
glBegin(GL_QUADS);//
glColor3f(0,0,0);
glVertex2f(-4,2);
glVertex2f(5,2);
glVertex2f(5,1);
glVertex2f(-4,1);
glVertex2f(-5,4);
glVertex2f(6,4);
glVertex2f(6,2);
glVertex2f(-5,2);
glColor3f(1,1,1);
glVertex2f(-3,3);
glVertex2f(-2,3);
glVertex2f(-2,2);
glVertex2f(-3,2);
glVertex2f(3,3);
glVertex2f(4,3);
glVertex2f(4,2);
glVertex2f(3,2);
glColor3f(0,0,0);
glVertex2f(-3,5);
glVertex2f(4,5);
glVertex2f(4,4);
glVertex2f(-3,4);
glVertex2f(-2,6);
glVertex2f(3,6);
glVertex2f(3,5);
glVertex2f(-2,5);
glColor3f(1,0,0);
glVertex2f(-1,5);
glVertex2f(2,5);
glVertex2f(2,4);
glVertex2f(-1,4);
glVertex2f(-1,6);
glVertex2f(0,6);
glVertex2f(0,5);
glVertex2f(-1,5);
glVertex2f(1,6);
glVertex2f(2,6);
glVertex2f(2,5);
glVertex2f(1,5);
glColor3f(0.5,0.5,0.5);
glVertex2f(-4,5);
glVertex2f(-3,5);
glVertex2f(-3,4);
glVertex2f(-4,4);
glVertex2f(4,5);
glVertex2f(5,5);
glVertex2f(5,4);
glVertex2f(4,4);
glColor3f(0,0,0);
glVertex2f(-4,14);
glVertex2f(5,14);
glVertex2f(5,7);
glVertex2f(-4,7);
glVertex2f(-3,7);
glVertex2f(4,7);
glVertex2f(4,6);
glVertex2f(-3,6);
glVertex2f(-2,15);
glVertex2f(3,15);
glVertex2f(3,14);
glVertex2f(-2,14);
//RED
glColor3f(1,0,0);
glVertex2f(-1,13);
glVertex2f(0,13);
glVertex2f(0,8);
glVertex2f(-1,8);
glVertex2f(1,13);
glVertex2f(2,13);
glVertex2f(2,8);
glVertex2f(1,8);
glVertex2f(-2,14);
glVertex2f(-1,14);
glVertex2f(-1,11);
glVertex2f(-2,11);
glVertex2f(2,14);
glVertex2f(3,14);
glVertex2f(3,11);
glVertex2f(2,11);
glVertex2f(-2,8);
glVertex2f(-1,8);
glVertex2f(-1,6);
glVertex2f(-2,6);
glVertex2f(2,8);
glVertex2f(3,8);
glVertex2f(3,6);
glVertex2f(2,6);
glVertex2f(-3,11);
glVertex2f(-2,11);
glVertex2f(-2,8);
glVertex2f(-3,8);
glVertex2f(3,11);
glVertex2f(4,11);
glVertex2f(4,8);
glVertex2f(3,8);
glVertex2f(-4,10);
glVertex2f(-3,10);
glVertex2f(-3,9);
glVertex2f(-4,9);
glVertex2f(4,10);
glVertex2f(5,10);
glVertex2f(5,9);
glVertex2f(4,9);
glVertex2f(-4,13);
glVertex2f(-2,13);
glVertex2f(-2,12);
glVertex2f(-4,12);
glVertex2f(3,13);
glVertex2f(5,13);
glVertex2f(5,12);
glVertex2f(3,12);
glVertex2f(-1,16);
glVertex2f(0,16);
glVertex2f(0,14);
glVertex2f(-1,14);
glVertex2f(1,16);
glVertex2f(2,16);
glVertex2f(2,14);
glVertex2f(1,14);
glVertex2f(-3,16);
glVertex2f(-2,16);
glVertex2f(-2,14);
glVertex2f(-3,14);
glVertex2f(3,16);
glVertex2f(4,16);
glVertex2f(4,14);
glVertex2f(3,14);
glVertex2f(-5,14);
glVertex2f(-3,14);
glVertex2f(-3,13);
glVertex2f(-5,13);
glVertex2f(4,14);
glVertex2f(6,14);
glVertex2f(6,13);
glVertex2f(4,13);
glVertex2f(-5,15);
glVertex2f(-4,15);
glVertex2f(-4,14);
glVertex2f(-5,14);
glVertex2f(5,15);
glVertex2f(6,15);
glVertex2f(6,14);
glVertex2f(5,14);
//eye right
glColor3f(1,1,0);
glVertex2f(2,9);
glVertex2f(3,9);
glVertex2f(3,10);
glVertex2f(2,10);
//eye left
glVertex2f(-1,9);
glVertex2f(-2,9);
glVertex2f(-2,10);
glVertex2f(-1,10);
//mouth
glVertex2f(-1,6);
glVertex2f(2,6);
glVertex2f(2,7);
glVertex2f(-1,7);
glEnd();
}else{
//BELT
glBegin(GL_LINE_LOOP);
glColor3f(0.5,0.5,0.5);
glVertex2f(0,1);
glVertex2f(1,1);
glVertex2f(1,0);
glVertex2f(3,0);
glVertex2f(3,-1);
glVertex2f(-2,-1);
glVertex2f(-2,0);
glVertex2f(0,0);
glVertex2f(0,1);
glEnd();
//LIGHTSABER
glBegin(GL_LINE_LOOP);
glColor3f(1,0,0);
glVertex2f(-8,0);
glVertex2f(-8,1);
glVertex2f(0,1);
glVertex2f(0,0);
glVertex2f(1,1);
glVertex2f(9,1);
glVertex2f(9,0);
glVertex2f(1,0);
glEnd();
//ABAJO
glBegin(GL_LINE_LOOP);
glColor3f(0,0,0);
glVertex2f(-3,-1);
glVertex2f(4,-1);
glVertex2f(4,-3);
glVertex2f(-3,-3);
glVertex2f(-4,-3);
glVertex2f(5,-3);
glVertex2f(5,-5);
glVertex2f(-4,-5);
glVertex2f(-5,-5);
glVertex2f(6,-5);
glVertex2f(6,-6);
glVertex2f(-5,-6);
glEnd();
//GRAY
glBegin(GL_LINE_LOOP);
glColor3f(0.5,0.5,0.5);
glVertex2f(-2,-5);
glVertex2f(0,-5);
glVertex2f(0,-6);
glVertex2f(-2,-6);
glVertex2f(1,-5);
glVertex2f(3,-5);
glVertex2f(3,-6);
glVertex2f(1,-6);
glEnd();
//ARRIBA
glBegin(GL_LINE_LOOP);//
glColor3f(0,0,0);
glVertex2f(-4,2);
glVertex2f(5,2);
glVertex2f(5,1);
glVertex2f(-4,1);
glVertex2f(-5,4);
glVertex2f(6,4);
glVertex2f(6,2);
glVertex2f(-5,2);
glColor3f(1,1,1);
glVertex2f(-3,3);
glVertex2f(-2,3);
glVertex2f(-2,2);
glVertex2f(-3,2);
glVertex2f(3,3);
glVertex2f(4,3);
glVertex2f(4,2);
glVertex2f(3,2);
glColor3f(0,0,0);
glVertex2f(-3,5);
glVertex2f(4,5);
glVertex2f(4,4);
glVertex2f(-3,4);
glVertex2f(-2,6);
glVertex2f(3,6);
glVertex2f(3,5);
glVertex2f(-2,5);
glColor3f(1,0,0);
glVertex2f(-1,5);
glVertex2f(2,5);
glVertex2f(2,4);
glVertex2f(-1,4);
glVertex2f(-1,6);
glVertex2f(0,6);
glVertex2f(0,5);
glVertex2f(-1,5);
glVertex2f(1,6);
glVertex2f(2,6);
glVertex2f(2,5);
glVertex2f(1,5);
glColor3f(0.5,0.5,0.5);
glVertex2f(-4,5);
glVertex2f(-3,5);
glVertex2f(-3,4);
glVertex2f(-4,4);
glVertex2f(4,5);
glVertex2f(5,5);
glVertex2f(5,4);
glVertex2f(4,4);
glColor3f(0,0,0);
glVertex2f(-4,14);
glVertex2f(5,14);
glVertex2f(5,7);
glVertex2f(-4,7);
glVertex2f(-3,7);
glVertex2f(4,7);
glVertex2f(4,6);
glVertex2f(-3,6);
glVertex2f(-2,15);
glVertex2f(3,15);
glVertex2f(3,14);
glVertex2f(-2,14);
//RED
glColor3f(1,0,0);
glVertex2f(-1,13);
glVertex2f(0,13);
glVertex2f(0,8);
glVertex2f(-1,8);
glVertex2f(1,13);
glVertex2f(2,13);
glVertex2f(2,8);
glVertex2f(1,8);
glVertex2f(-2,14);
glVertex2f(-1,14);
glVertex2f(-1,11);
glVertex2f(-2,11);
glVertex2f(2,14);
glVertex2f(3,14);
glVertex2f(3,11);
glVertex2f(2,11);
glVertex2f(-2,8);
glVertex2f(-1,8);
glVertex2f(-1,6);
glVertex2f(-2,6);
glVertex2f(2,8);
glVertex2f(3,8);
glVertex2f(3,6);
glVertex2f(2,6);
glVertex2f(-3,11);
glVertex2f(-2,11);
glVertex2f(-2,8);
glVertex2f(-3,8);
glVertex2f(3,11);
glVertex2f(4,11);
glVertex2f(4,8);
glVertex2f(3,8);
glVertex2f(-4,10);
glVertex2f(-3,10);
glVertex2f(-3,9);
glVertex2f(-4,9);
glVertex2f(4,10);
glVertex2f(5,10);
glVertex2f(5,9);
glVertex2f(4,9);
glVertex2f(-4,13);
glVertex2f(-2,13);
glVertex2f(-2,12);
glVertex2f(-4,12);
glVertex2f(3,13);
glVertex2f(5,13);
glVertex2f(5,12);
glVertex2f(3,12);
glVertex2f(-1,16);
glVertex2f(0,16);
glVertex2f(0,14);
glVertex2f(-1,14);
glVertex2f(1,16);
glVertex2f(2,16);
glVertex2f(2,14);
glVertex2f(1,14);
glVertex2f(-3,16);
glVertex2f(-2,16);
glVertex2f(-2,14);
glVertex2f(-3,14);
glVertex2f(3,16);
glVertex2f(4,16);
glVertex2f(4,14);
glVertex2f(3,14);
glVertex2f(-5,14);
glVertex2f(-3,14);
glVertex2f(-3,13);
glVertex2f(-5,13);
glVertex2f(4,14);
glVertex2f(6,14);
glVertex2f(6,13);
glVertex2f(4,13);
glVertex2f(-5,15);
glVertex2f(-4,15);
glVertex2f(-4,14);
glVertex2f(-5,14);
glVertex2f(5,15);
glVertex2f(6,15);
glVertex2f(6,14);
glVertex2f(5,14);
//eye right
glColor3f(1,1,0);
glVertex2f(2,9);
glVertex2f(3,9);
glVertex2f(3,10);
glVertex2f(2,10);
//eye left
glVertex2f(-1,9);
glVertex2f(-2,9);
glVertex2f(-2,10);
glVertex2f(-1,10);
//mouth
glVertex2f(-1,6);
glVertex2f(2,6);
glVertex2f(2,7);
glVertex2f(-1,7);
glEnd();
}
glFlush();
}
void miMenu(int valor) {
switch(valor) {
case 1:
inc=0.1;
break;
case 2:
inc=0;botar=0;
break;
case 3:
r=1;g=0;b=0;
break;
case 4:
r=0;g=1;b=0;
break;
case 5:
r=0;g=0;b=1;
break;
case 9:
botar=1;
break;
case 20:
r=1;g=1;b=0;
break;
case 21:
r=0;g=0;b=0;
break;
case 22:
r=0.5;g=0.5;b=0.5;
break;
case 23:
r=1;g=1;b=1;
break;
case 24:
figurita = 2;
//dibujardarthmaul();
break;
case 25:
figurita = 3;
break;
case 26:
figurita = 4;
break;
case 27:
botar=2;
break;
case 28:
botar=1;
break;
case 29:
relleno=1;
break;
case 30:
relleno=0;
break;
default:
break;
}
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT );
glPushMatrix();
glTranslatef(0, ry, 0);
glTranslatef(rx, 0, 0);
glRotatef(rotar,0,0,1);//z viewport
dibujaCuadro();
if (figurita==2){
dibujardarthmaul();
}
if (figurita==3){
circulito(10,1,0,0);
circulito(8.7,1,1,1);
circulito(7.5,1,0,0);
circulito(6,0,0,1);
estrella(1,1,1);
}
if (figurita==4){
circulo(10,0,0,0);
medcirculo(10,1,1,1);
medcirculo(-10,0,0,0);
glTranslatef(0,-5,0);
medcirculo(5,0,0,0);
glTranslatef(0,10,0);
medcirculo(-5,1,1,1);
glTranslatef(-1,-9,0);
circulito(1.5,1,1,1);
glTranslatef(1,9,0);
circulito(1.5,0,0,0);
}
glPopMatrix();
glutSwapBuffers();
glFlush();
}
void animar(void) {
rotar=rotar+inc;
if (botar==1){
ang=ang+0.001;
ry=10*cos(ang);
//printf("valor: %f\n",ry);
}
if (botar==2){
ang=ang+0.001;
rx=10*sin(ang);
}
glutPostRedisplay();
}
void crearMenu(void){
int colores3;
colores3=glutCreateMenu(miMenu);
glutAddMenuEntry("B", 3);
int colores;
colores=glutCreateMenu(miMenu);
glutAddMenuEntry("Rojo", 3);
glutAddMenuEntry("Verde", 4);
glutAddMenuEntry("Azul", 5);
glutAddMenuEntry("Amarillo",20);
int gs;
gs = glutCreateMenu(miMenu);
glutAddMenuEntry("Negro",21);
glutAddMenuEntry("Gris",22);
glutAddMenuEntry("Blanco",23);
int dibujitos;
dibujitos = glutCreateMenu(miMenu);
glutAddMenuEntry("Pixelart",24);
glutAddMenuEntry("Cap America <3",25);
glutAddMenuEntry("Yin&Yang",26);
int botar;
botar = glutCreateMenu(miMenu);
glutAddMenuEntry("X",27);
glutAddMenuEntry("Y",28);
int relleno;
relleno = glutCreateMenu(miMenu);
glutAddMenuEntry("Fill",29);
glutAddMenuEntry("Empty",30);
//menu con el click derecho
glutCreateMenu(miMenu);
glutAddMenuEntry("Start", 1);
glutAddMenuEntry("Stop", 2);
//glutAddMenuEntry("Rebotar", 9);
glutAddSubMenu("Rebotar", botar);
glutAddSubMenu("Color", colores);
glutAddSubMenu("Grayscale", gs);
glutAddSubMenu("Figuras", dibujitos);
glutAddSubMenu("Solid", relleno);
//glutAddSubMenu("fIGURA", gs); pixel art, logo 1 & logo 2
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
//RELAACION DE ASPECTO ASPECTRATIO
void ajustar(int ancho, int alto)
{
float aspectratio;
aspectratio = 1;
if (1>(ancho/alto))
{
glViewport(0, 0, ancho, ancho/aspectratio);
}
else
{
glViewport(0, 0, alto*aspectratio,alto);
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB |GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutCreateWindow("MENU Y ANIMAR");
gluOrtho2D(-15, 15, -15, 15);
glClearColor(1,1,1,1);
crearMenu();
glutDisplayFunc(display);
glutReshapeFunc(ajustar);
glutIdleFunc(animar);
glutMainLoop();
return 0;
}







Comentarios
Publicar un comentario