Esferas que rotan en su propio EJE

Acá dejo el código fuente que cree para realizar un trabajo de Computación Grafica el cual trata de 3 esferas que giran entorno a su eje, tanto el eje X el Y como el Z.

El trabajo fue realizado con la librería OpenGL se realizo en un sistema operativo Debian, en la rama testing, para hacer esto se utilizo el lenguaje C, con el IDE de trabajo (Ojo que es mas que un IDE), emacs :p

El código es:

##############################################################

#include<GL/gl.h>
#include<GL/glut.h>
GLfloat angulo=0.0f;
void Init(void)
{
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
glClearColor(0.0,0.0,0.0,0.0); //Selecciona el color de fondo
glColor3f(0.0f, 1.0f, 0.0f); //El color a dibujar
glPointSize(4.0);                 //Tamaño de los puntos

}
void display() // Mi_Ventana
{
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); //Limpia la pantalla
/*con la siguiente esta función independizamos los objectos entre si*/
glLoadIdentity();
glBegin(GL_LINES);
/*Decimos que dibujaremos una linea apartir del punto (x1,y1) representado en (200,100)
y que termina en el punto (x2,y2) representado en (500,100) (esto es el dibujo del eje X)*/
glVertex3f(200, 100,0);
glVertex3f(500, 100,0);
glEnd();
/*Al igual que en la anterior definimos una función de Linea, donde dibujamos el eje Y*/
glBegin(GL_LINES);
glVertex3f(200,100,0);
glVertex3f(200,400,0);
glEnd();
/*Como definimos los anteriores, ahora definimos el eje Z de la misma forma que el eje X e Y*/
glBegin(GL_LINES);
glVertex3f(200,100,0);
glVertex3f(0,0,5);
glEnd();
/*Informamos en que punto debe inicilizar la rotación del objeto en este caso la esfera*/
glTranslatef(0,100,0);
/*Iniciamos la rotación en el eje x con el angulo entregado.*/
glRotatef(angulo, 1.0f, 0.0f, 0.0f);
/* esta función se define
glRotatef(anguloQueGira,trueAnguloX, trueAnguloY, trueAnguloZ);*/
glTranslatef(400,100,0);//Asignamos el lugar de posición para la esfera.
glutWireSphere(30,8,8);// Definimos la esfera
/*la esfera se define glutWireSphere(radioDeLaEsfera,cantidadLineasX,cantidadLineasY);*/
glLoadIdentity();
//Volvemos independiente la Esfera para el eje X con respecto al resto de los objetos
/*Esfera 2 Eje Y, hacemos lo mismo para esta Esfera*/
glTranslatef(200,60,0);
glRotatef(angulo,0.0f,1.0f,0.0f);
glTranslatef(-200,200,0);
glutWireSphere(30,8,8);
glLoadIdentity();
//*Esfera 3 Eje Z, realizamos el mismo procedimiento*/
glTranslatef(0,0,100);
glRotatef(angulo,0,0,1.0f);
glTranslatef(-80,-238,100);
glutWireSphere(30,8,8);
glFlush(); //Envía toda la salida a la pantalla
glutSwapBuffers();
angulo+=0.2f; //Realizamos Avanzamos el Angulo.
}
/*Esta función se utiliza para dar animación a los objetos*/
void reshape(int ancho,int alto){
glViewport(0, 0,-300,500); //Vista de salida
glMatrixMode(GL_PROJECTION); //Matriz base para dibujar
glLoadIdentity(); //Hacemos independiente los objetos
glOrtho(-300,500, -300, 400, -200, 200); //Pasamos a la vista ortogonal
glMatrixMode(GL_MODELVIEW); //Ordenamos la matriz de salida
}
/*Llamamos a la función para redibujar el Objeto*/
void idle()
{
display();
}
/*Función Main donde iniciamos el programa*/
int main (int argc, char** argv)
{
glutInit(&argc, argv); //Inicializa toolkit
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //Selecciona el modo pantalla
glutInitWindowSize(640,480);     //Selecciona el tamaño de la ventana
glutInitWindowPosition(100, 150); //Posiciona la ventana en la pantalla
glutCreateWindow(“Esferas”);//Abre la ventana
Init(); //Inicializamos el dibujo
glutDisplayFunc(display); //Registra la función de redibujar
glutReshapeFunc(reshape); //Inicializa los valores del dibujo.
glutIdleFunc(idle); //Redibujamos
glutMainLoop(); //Mantiene en loop para que este continuamente dibujando
return 0;
}

#####################################################

Para compilar esto deben copiar el fuente darle un nombre en mi caso puse trab.c instalar las librerías OpenGL, el Compilador GCC, y la siguiente linea de comandos.

gcc trab.c -o trabajo -lglut

Así de simple :p

Ojala le sirva a alguien

Saludos!!!!

About these ads

Una respuesta a Esferas que rotan en su propio EJE

  1. Daniel S. dice:

    Notable

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: