Camera | Diana Vargas

#include <windows.h>

#include <GL/glut.h>

GLfloat ang1 = 0,ang2 = 0;
int moviendo, startx, starty;

static GLdouble tamanio = 10.0;

GLUquadric *figura;

void dibujaObjeto(){
    gluQuadricDrawStyle(figura, GLU_FILL);
    //gluSphere(figura,10,32,32);
    //gluCylinder(figura,10,10,20,32,32);
    //gluDisk(figura,3,1,32,32);
    //gluPartialDisk(figura,5,10,32,32,0,180);
    glClear( GL_COLOR_BUFFER_BIT );
    glColor3f(1.0, 1.0, 1.0);

    glPushMatrix();
    //glRotatef(angulo+2, 0, 1, 0);
    //HEAD
    glPushMatrix();
    glTranslatef(0,1.8,0);
    glScalef(1.1,0.7,1);
    //glutWireSphere(1,20,20);
    glutSolidSphere(1,20,20);
    glPopMatrix();

    //BODY
    glPushMatrix();
    glTranslatef(0,-1.2,0);
    glScalef(2,1.5,1.5);

    //glutWireSphere(1,20,20);
    glutSolidSphere(1,20,20);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(0,0.6,0);
    glScalef(1.4,0.6,1);
    //glutWireSphere(1,20,20);
    glutSolidSphere(1,20,20);

    glPopMatrix();

    // PIE DER
    glPushMatrix();
    glTranslatef(0.6,-2.8,0);
    glScalef(1.1,1.3,1);
    //glutWireSphere(0.5,20,20);
    glutSolidSphere(0.5,20,20);
    glPopMatrix();

    // PIE IZQ
    glPushMatrix();
    glTranslatef(-0.6,-2.8,0);
    glScalef(1.1,1.3,1);
    //glutWireSphere(0.5,20,20);
    glutSolidSphere(0.5,20,20);
    glPopMatrix();

     // BRAZO
    glPushMatrix();
    //glColor3f(1.0, 0.0, 1.0);
    glTranslatef(1.9,-0.5,0);
    glRotatef(40, 0, 0, 1);
    glScalef(1.1,2.5,1);
    //glutWireSphere(0.5,20,20);
    glutSolidSphere(0.5,20,20);
    glPopMatrix();

    // EL OTRO BRAZO
    glPushMatrix();
    glTranslatef(-1.9,-0.5,0);
    glRotatef(-40, 0, 0, 1);
    glScalef(-1.1,2.5,1);
    //glutWireSphere(0.5,20,20);
    glutSolidSphere(0.5,20,20);
    glPopMatrix();

    //OJO IZQ
    glPushMatrix();
    glColor3f(0, 0, 0);
    glTranslatef(-0.5,1.8,0);
    glutSolidSphere(0.2,20,20);
    glPopMatrix();

    //OJO DER
    glPushMatrix();
    glColor3f(0, 0, 0);
    glTranslatef(0.5,1.8,0);
    glutSolidSphere(0.2,20,20);
    glPopMatrix();


    glPopMatrix();

    glutSwapBuffers();

}


void display(void)
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
    glRotatef(ang2, 1, 0, 0);
    glRotatef(ang1, 0, 1, 0);
    dibujaObjeto();
    glPopMatrix();

    //glutSwapBuffers();
}

void mouse(int button, int state, int x, int y)
{
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
        moviendo = 1;
        startx = x;
        starty = y;
    }
    if (state == GLUT_UP) {
        moviendo = 0;
    }
}

void mover(int x, int y)
{
    if (moviendo) {
        ang1 = ang1 + (x - startx);
        ang2 = ang2 + (y - starty);
        startx = x;
        starty = y;
        glutPostRedisplay();
    }
}

void proyeccion(void){



    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    gluPerspective(10, 1, 20, 2000);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();



    gluLookAt(20.0, 10.0, 60.0,  /* vista en (0,8,60) */
              0.0, 0.0, 0.0,      /* centro en (0,8,0) */
              0.0, 1.0, 0.);      /* altura en Y */
}

int
main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutInitWindowSize(800, 800);

    glutCreateWindow("QUADRICS + MOUSE + CAMERA | Diana Vargas");

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_DEPTH_TEST);

    figura = gluNewQuadric(); //crear un objeto de opengl

    proyeccion();


    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFunc(mover);
    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