0% encontró este documento útil (0 votos)
6 vistas2 páginas

Dibujo de Figuras 3D con OpenGL

El documento presenta un código en C++ utilizando la biblioteca GLUT para crear gráficos en 3D. Se incluyen funciones para dibujar un triángulo, un cuadrado, y formas con perspectiva, así como la configuración de la ventana y el manejo de la proyección. Cada figura se dibuja con diferentes colores y se utiliza el sistema de coordenadas 3D para posicionarlas adecuadamente.

Cargado por

paquitoLindo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas2 páginas

Dibujo de Figuras 3D con OpenGL

El documento presenta un código en C++ utilizando la biblioteca GLUT para crear gráficos en 3D. Se incluyen funciones para dibujar un triángulo, un cuadrado, y formas con perspectiva, así como la configuración de la ventana y el manejo de la proyección. Cada figura se dibuja con diferentes colores y se utiliza el sistema de coordenadas 3D para posicionarlas adecuadamente.

Cargado por

paquitoLindo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

//… TRIANGULO SIMPLE //...

coordenadas del primer vertice superior izquierda


//... llamadas a las librerias glColor3f(0,1,0); //... color del segundo vertice verde
#include "glut.h" glVertex3f(-0.5,-0.5,0.5);
void tringulo(){ //... coordenadas del segundo vertice inferior izquierda
glClearColor(0,0,0,0); //... color de fondo negro glColor3f(0,0,1); //... color del tercer vertice azul
glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla glVertex3f(0.5,-0.5,0.5);
glMatrixMode(GL_PROJECTION); //... modo de proyeccion //... coordenadas del tercer vertice inferior derecha
glLoadIdentity(); //... cargamos la matriz identidad glColor3f(1,1,0); //... color del cuarto vertice amarillo
glOrtho(-1,1,-1,1,-1,1); //... proyeccion ortografica dentro del cubo glVertex3f(0.5,0.5,-0.5);
glMatrixMode(GL_MODELVIEW); //... modo de modelado //... coordenadas del cuarto vertice superior derecha
glBegin(GL_TRIANGLES); //... dibujamos el triangulo glEnd(); //... terminamos de dibujar
glColor3f(1,0,0); //... color del primer vertice rojo glFlush(); //... forzamos el dibujo
glVertex3f(0,0.8,0); //... coordenadas del primer vertice }
glColor3f(0,1,0); //... color del segundo vertice verde //... llamada al programa principal
glVertex3f(-0.6,-0.2,0); //... coordenadas del segundo vertice int main(int argc, char* argv[]){
glColor3f(0,0,1); //... color del tercer vertice azul glutInit(&argc, argv);
glVertex3f(0.6,-0.2,0); //... coordenadas del tercer vertice //... inicializando modo de ventana(buffer de dibujo y modelo de color)
glEnd(); //... terminamos de dibujar glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glFlush(); //... forzamos el dibujo //... posicion y tamaño de la ventana
} glutInitWindowSize(500,500);
//... llamada al programa principal glutInitWindowPosition(20,20);
int main(int argc, char* argv[]){ //... creamos la ventana
glutInit(&argc, argv); glutCreateWindow(argv[0]);
//... inicializando modo de ventana(buffer de dibujo y modelo de color) //... funcion para dibujar la ventana display a dibujar
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glutDisplayFunc(cuadrado2);
//... posicion y tamaño de la ventana // ... llamada a la funcion que comienza el dibujo
glutInitWindowSize(500,500); glutMainLoop();
glutInitWindowPosition(20,20); return 0;
//... creamos la ventana }
glutCreateWindow(argv[0]);
//... funcion para dibujar la ventana display a dibujar //… ESPERA
glutDisplayFunc(tringulo); //... llamadas a las librerias
// ... llamada a la funcion que comienza el dibujo #include "glut.h"
glutMainLoop(); void esfera(){
return 0; glClearColor(0,0,0,0); //... color de fondo negro
} glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla
glMatrixMode(GL_PROJECTION); //... modo de proyeccion
//… CUADRADO SIMPLE glLoadIdentity(); //... cargamos la matriz identidad
//... llamadas a las librerias glOrtho(-1,1,-1,1,-1,1); //... proyeccion ortografica dentro del cubo
#include "glut.h" glMatrixMode(GL_MODELVIEW); //... modo de modelado
void cuadrado1(){ glColor3f(1,0,0);
glClearColor(0,0,0,0); //... color de fondo negro glutSolidSphere(0.5,10,10);
glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla glFlush(); //... forzamos el dibujo
glMatrixMode(GL_PROJECTION); //... modo de proyeccion }
glLoadIdentity(); //... cargamos la matriz identidad //... llamada al programa principal
glOrtho(-1,1,-1,1,-1,1); //... proyeccion ortografica dentro del cubo int main(int argc, char* argv[]){
glMatrixMode(GL_MODELVIEW); //... modo de modelado glutInit(&argc, argv);
glBegin(GL_QUADS); //... dibujamos el triangulo //... inicializando modo de ventana(buffer de dibujo y modelo de color)
glColor3f(1,0,0); //... color del primer vertice rojo glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glVertex3f(-0.5,0.5,-0.5); //... posicion y tamaño de la ventana
//... coordenadas del primer vertice superior izquierda glutInitWindowSize(500,500);
glColor3f(0,1,0); //... color del segundo vertice verde glutInitWindowPosition(20,20);
glVertex3f(-0.5,-0.5,0.5); //... creamos la ventana
//... coordenadas del segundo vertice inferior izquierda glutCreateWindow(argv[0]);
glColor3f(0,0,1); //... color del tercer vertice azul //... funcion para dibujar la ventana display a dibujar
glVertex3f(0.5,-0.5,0.5); glutDisplayFunc(esfera);
//... coordenadas del tercer vertice inferior derecha // ... llamada a la funcion que comienza el dibujo
glColor3f(1,1,0); //... color del cuarto vertice amarillo glutMainLoop();
glVertex3f(0.5,0.5,-0.5); return 0;
//... coordenadas del cuarto vertice superior derecha }
glEnd(); //... terminamos de dibujar
glFlush(); //... forzamos el dibujo //… CUADRADO TRIANGULO
} //... llamadas a las librerias
//... llamada al programa principal #include "glut.h"
int main(int argc, char* argv[]){ void cuadradoTriangulo(){
glutInit(&argc, argv); glClearColor(0,0,0,0); //... color de fondo negro
//... inicializando modo de ventana(buffer de dibujo y modelo de color) glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glMatrixMode(GL_PROJECTION); //... modo de proyeccion
//... posicion y tamaño de la ventana glLoadIdentity(); //... cargamos la matriz identidad
glutInitWindowSize(500,500); gluPerspective(60,1,1,100);
glutInitWindowPosition(20,20); //... la visualizacion es de 60 grados (x=1, y=1, z=100)
//... creamos la ventana glMatrixMode(GL_MODELVIEW); //... modo de modelado
glutCreateWindow(argv[0]); glTranslatef(0,0,-2);
//... funcion para dibujar la ventana display a dibujar glBegin(GL_QUADS); //... dibujamos el triangulo
glutDisplayFunc(cuadrado1); glColor3f(1,0,0); //... color del primer vertice rojo
// ... llamada a la funcion que comienza el dibujo glVertex3f(-0.5,0.5,-0.5);
glutMainLoop(); //... coordenadas del primer vertice superior izquierda
return 0; glColor3f(0,1,0); //... color del segundo vertice verde
} glVertex3f(-0.5,-0.5,0.5);
//... coordenadas del segundo vertice inferior izquierda
//… CUADRADO CON PERPECTIVA glColor3f(0,0,1); //... color del tercer vertice azul
//... llamadas a las librerias glVertex3f(0.5,-0.5,0.5);
#include "glut.h" //... coordenadas del tercer vertice inferior derecha
void cuadrado2(){ glColor3f(1,1,0); //... color del cuarto vertice amarillo
glClearColor(0,0,0,0); //... color de fondo negro glVertex3f(0.5,0.5,-0.5);
glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla //... coordenadas del cuarto vertice superior derecha
glMatrixMode(GL_PROJECTION); //... modo de proyeccion glEnd(); //... terminamos de dibujar
glLoadIdentity(); //... cargamos la matriz identidad glBegin(GL_TRIANGLES); //... dibujamos el triangulo
gluPerspective(60,1,1,100); glColor3f(1,1,1); //... color del primer vertice rojo
//... la visualizacion es de 60 grados (x=1, y=1, z=100) glVertex3f(0,0.5,0); //... coordenadas del primer vertice
glMatrixMode(GL_MODELVIEW); //... modo de modelado glVertex3f(-0.7,-0.5,0); //... coordenadas del segundo vertice
glTranslatef(0,0,-2); glVertex3f(0.7,-0.5,0); //... coordenadas del tercer vertice
glBegin(GL_QUADS); //... dibujamos el triangulo glEnd(); //... terminamos de dibujar
glColor3f(1,0,0); //... color del primer vertice rojo glFlush(); //... forzamos el dibujo
glVertex3f(-0.5,0.5,-0.5); }
//... llamada al programa principal glTranslatef(0,-0.1,0);
int main(int argc, char* argv[]){ glPushMatrix();
glutInit(&argc, argv); glScalef(0.1,0.4,0.05); //... brazo izquierdo
//... inicializando modo de ventana(buffer de dibujo y modelo de color) glutSolidCube(1);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glPopMatrix();
//... posicion y tamaño de la ventana glTranslatef(0,-0.2,0);
glutInitWindowSize(500,500); glColor3f(1,0.6,0.6);
glutInitWindowPosition(20,20); glScalef(0.1,0.1,0.02); //... mano izquierdo
//... creamos la ventana glutSolidCube(1);
glutCreateWindow(argv[0]); glPopMatrix();
//... funcion para dibujar la ventana display a dibujar
glutDisplayFunc(cuadradoTriangulo);
// ... llamada a la funcion que comienza el dibujo glPushMatrix();
glutMainLoop(); glTranslatef(0.05,0.2,0);
return 0; glTranslatef(0,0.1,0);
} glRotatef(30,0,0,1);
glTranslatef(0,-0.1,0);
//… CUADRADO TRIANGULO CORTE glPushMatrix();
//... llamadas a las librerias glColor3f(0,0.3,0.8);
#include "glut.h" glScalef(0.1,0.4,0.05); //... brazo derecho
void cuadradoTriangulo1(){ glutSolidCube(1);
glClearColor(0,0,0,0); //... color de fondo negro glPopMatrix();
glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla glTranslatef(0,-0.2,0);
glMatrixMode(GL_PROJECTION); //... modo de proyeccion glColor3f(1,0.6,0.6);
glLoadIdentity(); //... cargamos la matriz identidad glScalef(0.1,0.1,0.02); //... mano derecho
gluPerspective(60,1,1,100); glutSolidCube(1);
//... la visualizacion es de 60 grados (x=1, y=1, z=100) glPopMatrix();
glMatrixMode(GL_MODELVIEW); //... modo de modelado
glTranslatef(0,0,-2); glPushMatrix();
glDepthFunc(GL_LEQUAL); glTranslatef(-0.06,-0.4,0);
//... dibujar si su coordenada esta mas cerca del punto de visualizacion glTranslatef(0,-0.1,0);
glEnable(GL_DEPTH_TEST); glPushMatrix();
//... habilitamos la comprobacion de profundidad glColor3f(0,0.3,0.8);
glClearDepth(1); glScalef(0.1,0.4,0.05); //... pie izquierdo
//... cada borrado se inicialice el buffer de profundidad al valor de 1 glutSolidCube(1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPopMatrix();
//... inicializamos el Z-Buffer glTranslatef(0,-0.2,0);
glBegin(GL_QUADS); //... dibujamos el triangulo glColor3f(1,0.6,0.6);
glColor3f(1,0,0); //... color del primer vertice rojo glScalef(0.1,0.1,0.02); //... zapato izquierdo
glVertex3f(-0.5,0.5,-0.5); glutSolidCube(1);
//... coordenadas del primer vertice superior izquierda glPopMatrix();
glColor3f(0,1,0); //... color del segundo vertice verde
glVertex3f(-0.5,-0.5,0.5); glPushMatrix();
//... coordenadas del segundo vertice inferior izquierda glTranslatef(0.06,-0.4,0);
glColor3f(0,0,1); //... color del tercer vertice azul glTranslatef(0,-0.1,0);
glVertex3f(0.5,-0.5,0.5); glPushMatrix();
//... coordenadas del tercer vertice inferior derecha glColor3f(0,0.3,0.8);
glColor3f(1,1,0); //... color del cuarto vertice amarillo glScalef(0.1,0.4,0.05); //... pie derecho
glVertex3f(0.5,0.5,-0.5); glutSolidCube(1);
//... coordenadas del cuarto vertice superior derecha glPopMatrix();
glEnd(); //... terminamos de dibujar glTranslatef(0,-0.2,0);
glBegin(GL_TRIANGLES); //... dibujamos el triangulo glColor3f(1,0.6,0.6);
glColor3f(1,1,1); //... color del primer vertice rojo glScalef(0.1,0.1,0.02); //... zapato derecho
glVertex3f(0,0.5,0); //... coordenadas del primer vertice glutSolidCube(1);
glVertex3f(-0.7,-0.5,0); //... coordenadas del segundo vertice glPopMatrix();
glVertex3f(0.7,-0.5,0); //... coordenadas del tercer vertice
glEnd(); //... terminamos de dibujar glColor3f(1,0.6,0.6);
glFlush(); //... forzamos el dibujo glPushMatrix();
} glTranslatef(0,0.375,0);
//... llamada al programa principal glutSolidSphere(0.1,10,10);
int main(int argc, char* argv[]){ glPopMatrix();
glutInit(&argc, argv); glFlush(); //... forzamos el dibujo
//... inicializar modo ventana(buffer dibujo, modelo de color y Z-Buffer) }
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH); //... llamada al programa principal
//... posicion y tamaño de la ventana int main(int argc, char* argv[]){
glutInitWindowSize(500,500); glutInit(&argc, argv);
glutInitWindowPosition(20,20); //... inicializando modo de ventana(buffer de dibujo y modelo de color)
//... creamos la ventana glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow(argv[0]); //... posicion y tamaño de la ventana
//... funcion para dibujar la ventana display a dibujar glutInitWindowSize(500,500);
glutDisplayFunc(cuadradoTriangulo1); glutInitWindowPosition(20,20);
// ... llamada a la funcion que comienza el dibujo //... creamos la ventana
glutMainLoop(); glutCreateWindow(argv[0]);
return 0; //... funcion para dibujar la ventana display a dibujar
} glutDisplayFunc(humano);
// ... llamada a la funcion que comienza el dibujo
//… PRACTICA CUERPO HUMANO glutMainLoop();
#include "glut.h" return 0;
void humano(){ }
glClearColor(0,0,0,0); //... color de fondo negro
glClear(GL_COLOR_BUFFER_BIT); //... borramos la pantalla
glMatrixMode(GL_PROJECTION); //... modo de proyeccion
glLoadIdentity(); //... cargamos la matriz identidad
glOrtho(-1,1,-1,1,-1,1); //... proyeccion ortografica dentro del cubo
glMatrixMode(GL_MODELVIEW); //... modo de modelado
glPushMatrix();
glScalef(0.22,0.6,0.05); //... cuerpo(largo-alto-ancho)
glColor3f(0,0.3,0.8);
glutSolidCube(1);
glPopMatrix();

glPushMatrix();
glTranslatef(-0.05,0.2,0);
glTranslatef(0,0.1,0);
glRotatef(-30,0,0,1);

También podría gustarte