viernes, 28 de febrero de 2014

Figuras con alambres y solidas

En esta ocasión dibujaremos algunas figuras como conos, esferas, etc. como si estubieran hechas por alambres y una dónde la figura sea sólida, lo haremos mediante las funciones glutWireSphere, glutWireCone, glutWireTorus, glutSolidSphere. 



#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <iostream>
#endif

#include <stdlib.h>

using namespace std;
//La función que nos va estar dibujando
void Dibuja(){
    cerr << "Dibuja()\n";
    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    /*GL_PROJECTION permite mover el punto de referencia (0,0,0) a donde se le indique*/
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glPushMatrix();//guarda el estado de la matriz, es decir guardará lo
                    //se dibuje hasta antes del PopMatrix
    glTranslatef(-0.5,0.5,0.0);//permite mover el punto de origen de nuestro espacio en (x,y,z)
    glScalef(1.2,1.2,1.2);//permite esblecer  una escala
    glRotatef(45,0,1,1);//permite rotar el angulo según el eje que define el vector (x,y,z)
    glColor3f(0.0,1.0,0.0);//se establece el color para la figura a dibujar
    //glutSolidSphere(0.2,15,15); //dibuja la esfera solida
    glutWireSphere(0.2,15,15);//permite dibujar una esfera definiendo (radio,rebanadas en x,rebanadas en y)
    glPopMatrix();//la guarda y la restaura

    glPushMatrix();
    glTranslatef(0.0,0.7,0.0);
    glRotatef(60,1,0,0);
    //glRotated(1,0,0,1);
    glColor3f(1.0,1.0,0.0);
    //glutSolidCone(1,1,slices,stacks);//dibuja un cono solido
    glutWireCone(0.2,0.5,22.0,5.0);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(0.59,0.5,0.0);
    glRotatef(63,1,0,0);
    glColor3f(0.0,1.0,1.0);
    //glutSolidTorus(0.2,0.8,slices,stacks);
    glutWireTorus(0.05,0.3,12.0,32.0);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(-0.4,-0.4,0.0);
    glRotatef(55,9,22,0);
    glColor3f(0.2,0.3,0.5);
    //glutWireCone(1,1,slices,stacks);//dibuja un cono sin relleno
    glutWireCube(0.4);
    glPopMatrix();

    glPushMatrix();//guarda la matriz
    glTranslatef(0.4,-0.4,0.0);
    glScalef(1.2,1.2,1.2);//permite esblecer  una escala
    glRotatef(45,0,1,1);
    glColor3f(0.5,0.0,0.5);
    glutSolidSphere(0.2,40,22); //dibuja la esfera solida
    //glutWireSphere(0.2,15,15);
    glPopMatrix();//la guarda y la restaura

    glFlush();
}

int main(){
    cerr <<"main() \n";
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
    glutInitWindowSize(700,700);
    glutCreateWindow("");
    glutDisplayFunc(Dibuja);
    glutMainLoop();
}

No hay comentarios:

Publicar un comentario