UNIVERSIDAD PRIVADA DE
TACNA
TEMA
Introducción a la programación con OpenGL
DOCENTE
ING. HUGO MANUEL BARRAZA VIZCARRA
ALUMNO
JHON ROMARIO POMA CHURA
CURSO
DISEÑO Y MODELAMIENTO VIRTUAL
CODIGO DEL EJEMPLO
#include <math.h>
#include <GL/glut.h>
#define PI 3.1416
void init(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-10.0,10.0,-10.0,10.0);
}
void display(void)
{
GLfloat ang, radio = 8.0, x, y;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glPointSize(2);
glBegin(GL_POINTS);
for (ang = 0.0; ang < 2*PI; ang = ang + 2*PI/5)
{
x = radio * sin(ang);
y = radio * cos(ang);
glVertex2f(x,y);
}
glEnd();
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("Ejemplo");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
CODIGO DE LA PRACTICA 01
#include <math.h>
#include <GL/glut.h>
#define PI 3.1416
void init(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-10.0,10.0,-10.0,10.0);
}
void display(void)
{
gluOrtho2D(-1,2,-1,2);//codigo agregado
GLfloat ang, radio = 8.0, x, y;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glPointSize(2);
glBegin(GL_LINE_LOOP); // codigo modificado
for (ang = 0.0; ang < 2*PI; ang = ang + 2*PI/10) // parte del
codigo modificado
{
x = radio * sin(ang);
y = radio * cos(ang);
glVertex2f(x,y);
}
glEnd();
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("Practica 1");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
CODIGO DE LA PRACTICA 02
#include<GL/glut.h>
#include<iostream>
#include<math.h>
using namespace std ;
float l , n;
void init (void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-10.0,10.0,-10.0,10.0); // definicion del tamaño del
cuadrado
void display (void) // ventana a visualizar
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0); //color las lineas
//lineas gias de X,Y
glBegin(GL_LINES);
glVertex2f(-10.0,0);// -X
glVertex2f(10.0,0);// X
glVertex2f(0.0,-10); // -Y
glVertex2f(0.0,10); // Y
glEnd();
//ciclo para generar un cuadrado dentro de otro
for(int i=1; i<=n ; i++)
{
//aqui generamos las lineas del cuadrado
glColor3f(0.0,0.0,1.0); //color las lineas
glBegin(GL_LINE_LOOP);
glVertex2f(-l/2,l/2);// -X,Y
glVertex2f(l/2,l/2); // X,Y
glVertex2f(l/2,-l/2); // X, -Y
glVertex2f(-l/2,-l/2);// -X,-Y
glEnd();
l=l/2;
}
glFlush();
}
int main (int argc, char* argv[]) // funcion principal
{
cout << "ingrese la longitud: ";
cin >> l;
cout << "ingrese el numero de cuadrados: ";
cin >> n;
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(250,250); //tamaño de la ventana
glutInitWindowPosition(500,100); // posicion de la ventana
glutCreateWindow("ejemplo2"); // creacion de la ventana
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
CODIGO DE LA PRACTICA 03
#include<GL/glut.h>
#include<iostream>
#include<math.h>
#define PI 3.1416
using namespace std ;
float m , n;
void init (void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-10.0,10.0,-10.0,10.0); // definicion del tamaño del
cuadrado
void display (void) // ventana a visualizar
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0); //color las lineas
//lineas gias de X,Y
glBegin(GL_LINES);
glVertex2f(-10.0,0);// -X
glVertex2f(10.0,0);// X
glVertex2f(0.0,-10); // -Y
glVertex2f(0.0,10); // Y
glEnd();
//ciclo para generar los triangulos
GLfloat ang, radio = 8.0, x, y;
ang = 0.0;
glBegin(GL_LINE_LOOP);
glColor3f(0.0,1.0,0.0);
for (int i=1; i<=n; i++)
{
x = radio * sin(ang);
y = radio * cos(ang);
glVertex2f(x,y);
ang = ang + 2*PI/(n/m);
}
glEnd();
glFlush();
}
int main (int argc, char* argv[]) // funcion principal
{
cout << "numero de vertices: ";
cin >> n;
cout << "salto de vertices: ";
cin >> m;
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(500,100); // posicion de la ventana
glutCreateWindow("ejemplo2"); // creacion de la ventana
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
CODIGO DE LA PRACTICA 04
#include<GL/glut.h>
#include<iostream>
using namespace std ;
float m , l;
void init (void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-10.0,10.0,-10.0,10.0); // definicion del tamaño del
cuadrado
void display (void) // ventana a visualizar
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0); //color las lineas
//lineas gias de X,Y
glBegin(GL_LINES);
glVertex2f(-10.0,0);// -X
glVertex2f(10.0,0);// X
glVertex2f(0.0,-10); // -Y
glVertex2f(0.0,10); // Y
glEnd();
//ciclo para generar un cuadrado dentro de otro
for(int i=1; i<=m/2 ; i++)
{
//aqui generamos las lineas del cuadrado
glColor3f(0.0,0.0,1.0); //color las lineas
glBegin(GL_LINE_LOOP);
glVertex2f(-l/2,l/2);// -X,Y
glVertex2f(l/2,l/2); // X,Y
glVertex2f(l/2,-l/2); // X, -Y
glVertex2f(-l/2,-l/2);// -X,-Y
glEnd();
//generador del cuadrado inclinado
glBegin(GL_LINE_LOOP);
glVertex2f(0,l/2);// -X,Y
glVertex2f(l/2,0); // X,Y
glVertex2f(0,-l/2); // X, -Y
glVertex2f(-l/2,0);// -X,-Y
glEnd();
l=l/2;
}
glFlush();
}
int main (int argc, char* argv[]) // funcion principal
{
cout << "longitud del cuadrado: ";
cin >> l;
cout << "numero de cuadrados: ";
cin >> m;
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(500,100); // posicion de la ventana
glutCreateWindow("ejemplo2"); // creacion de la ventana
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}