sábado, 7 de septiembre de 2013

Actividad #2 Unidad II piramide 3D, Programa y Dibujo en Cuadricula


Actividad#2: piramide 3D

Con los valores de su piramide en 3d diseñe un programa par dibujarlo usando opengl por cada cara de su piramide genere un Glbegin y Glend dibuje primero con lineas y luego cambie a solidos cambiando el color para cada cara Glcolor3f(r,g,b).




Codigo:

#include "stdafx.h"

#include <stdlib.h>
#include <GL/glut.h>

void reshape(int width, int height)/*Esta acción afecta en principio directamente al render, puesto que se está cambiando el tamaño del plano de proyección.*/
{
 glViewport(0,0,width,height);
 glMatrixMode(GL_PROJECTION); 
 glLoadIdentity();
 glOrtho(-5,5,-5,15,-5,5);/*define la proyección definida por los ejes x,y,z. Estos parámetros demilitan el volumen de vista y son, por este orden: x_mínima, x_máxima, y_mínima, y_máxima, z_mínima, z_máxima,*/
 glMatrixMode(GL_MODELVIEW);

}

void display()/*Aquí se define el primer callback. La función pasada como parámetro será llamada cada vez que GLUT determine oportuno que la ventana debe ser redibujada, como al maximizarse, poner otras ventanas por encima y después quitarlas, etc.*/
{
 glClear(GL_COLOR_BUFFER_BIT);
 //glColor3f(1,1,1);/*Define el color glColor3f(0.5,0.0,1.0);*/
 glLoadIdentity();
 //Lado 4 - base
 glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
 glColor3f(1,1,1);
 glVertex3f(0,-3,3); //Vertice a  Formando Lado 4
 glVertex3f(-3,0,0); //Vertice b  Formando Lado 4
 glVertex3f(3,0,0); //Vertice c  Formando Lado 4
 glEnd();
  
 //Lado 3 - atras
 glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
 glColor3f(1.0f, 1.0f, 0.0f);
 glVertex3f(-3,0,0); //Vertice b  Formando Lado 3
 glVertex3f(3,0,0); //Vertice c  Formando Lado 3
 glVertex3f(0,12,1.5); //Vertice d  Formando Lado 3
 glEnd();

 //Lado 2 - derecho
 glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
 glColor3f(0,0,1);//color azul
 glVertex3f(0,-3,3); //Vertice a  Formando Lado 2
 glVertex3f(3,0,0); //Vertice c  Formando Lado 2
 glVertex3f(0,12,1.5); //Vertice d  Formando Lado 2
 glEnd();
 //Lado1 - izquierdo
glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
 glColor3f(0.0f, 1.0f, 0.0f);//color verde
 glVertex3f(0,-3,3); //Vertice a  Formando Lado 1
 glVertex3f(0,12,1.5); //Vertice d  Formando Lado 1
 glVertex3f(-3,0,0); //Vertice b  Formando Lado 1
 glEnd();
 glFlush();

}

void init()
{
 glClearColor(0,0,0,0);// se borrara el color del buffer
}

int main(int argc, char **argv) //Funcion para crear ventana
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowPosition(500,60);//Posicion de la ventana
 glutInitWindowSize(600,600);//tamaño de la ventana
 glutCreateWindow("Piramide 3D");//Mensaje de la ventana
 init();/*activa, define una serie de estados de ogl, antes de pasar el control del programa a la GLUT.*/
 glutDisplayFunc(display);
    glutReshapeFunc(reshape);
 glutMainLoop();
 return 0 ;
}









No hay comentarios:

Publicar un comentario