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;
}








Comentarios

Entradas populares de este blog

Código Capitán América Diana Vargas

Reflejo | Diana Vargas

Cámara | Israel González de la Peña