sábado, 22 de marzo de 2014

Traladar, Escalar, Rotar una Figura

En esta ocación se analizó el funcionamiento de glScale, glTranslate y glRotate, la primera función nos permite establecer la escala de la lo que se dibuje en el eje x,y,z; la segunda función nos permite trasladar nuestro punto de origen para dibujar al lugar que se le indique en los ejes x,y,z y por último la tercera función nos permite girar lo que se haya dibujado estableciendo el águlo,y los ejes x,y,z. Es importante mencionar que en OpenGl lo que dibujamos al final de un segmento de código es a lo que se le irán aplicando las funciones descritas hacia arriba.


#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 */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

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

    glPushMatrix();
    glTranslatef(0.8,0.8,0.0);
    glColor3f(1.0,1.0,0.0);
    glutWireSphere(0.2,15,15);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(0.8,-0.8,0.0);
    glColor3f(0.0,1.0,1.0);
    glutWireSphere(0.2,15,15);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(-0.8,-0.8,0.0);
    glColor3f(0.0,0.0,1.0);
    glutWireSphere(0.2,15,15);
    glPopMatrix();

    glFlush();
}

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


No hay comentarios:

Publicar un comentario