Tema:
Prcticas en Dev c++
Alumno:
Ortega Juan de Dios Alberto
Grupo:
6s1
Materia:
Graficacin
Profesora:
Daniel Zarco Mrquez
Objetivo.
Dar a conocer todas las prcticas realizadas durante el semestre,
mediante el uso de Open Gl y Dev C++ as como cada funcin o mtodo
que fue utilizado de diferentes formas.
Practicas.
1)desplazamiento diagonal de un cuadrado
2)Nombre formado con lneas
3)rotacin de un circulo alrededor de otro
4)crculos mltiples con movimiento
5)Figura con movimiento 2D de teclas
6)Numero 8 con rotacin
7)Ondas con movimiento
8)Onda sin movimiento
9)Tetera con funcin de teclas
10)Tetera con iluminacin
11)Rotacin y translacin
12)Semforo
13)Varias figuras con funciones
14)Sombra de una figura
15)Lnea
16)Multilineas
17)Cubo 3D
18)Figura plana 2D
1)#include <math.h>
#include <GL/glut.h>
float x= 0;
float x1=0;
void dibujar (int w, int h)
{
glClearColor(1,0,0,0);
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10,10,-10,10);
}
void pantalla (void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
{
glVertex2f(-9+x,-9+x1);
glVertex2f(-6+x,-9+x1);
glVertex2f(-6+x,-6+x1);
glVertex2f(-9+x,-6+x1);
glEnd();
glFlush();
}
}
void avanzar (int value)
{ if(x<=15);
{x= x+1;
if (x>15)
{
x=15;
}
}
glutTimerFunc(100,avanzar,1);
glutPostRedisplay();
}
int main (int argc,char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize(500,500);
glutInitWindowPosition(300,10);
glutCreateWindow("movimiento");
//glClearColor(0.0,0.0,0.0,0)
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutTimerFunc(1000,avanzar,1);
glutMainLoop();
return 0;
}
2) #include <gl/glut.h>
#include<math.h>
float x= 0;
float x1=0;
float p9x=-13+x, p9y=-20+x1, radio9=4,cal9x, cal9y;
void dibujar (int w, int h){
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-30,30,-30,30);
glBegin(GL_QUADS);
glColor3f(0.455,0.677,0.233);
glVertex2f(-30,30);
glVertex2f(30,30);
glVertex2f(30,0);
glVertex2f(-30,0);
glEnd();
void pantalla(void){
glBegin(GL_TRIANGLE_FAN); ///
glColor3f(4.0,4.0,4.0);
for (double i=0.0; i<10; i+=0.001)
{ cal9x=radio9*cos(i)+p9x;
cal9y=radio9*sin(i)+p9y;
glVertex2f(cal9x+x,cal9y+x1);
}
glEnd();
glFlush(); ///bola
{
glBegin(GL_LINES); //nombre
glVertex2i(-21,3); ////A
glVertex2i(-19,8);
glVertex2i(-17,3);
glVertex2i(-19,8);
glVertex2i(-20,4);
glVertex2i(-18,4);
glVertex2i(-16,3); //L
glVertex2i(-16,8);
glVertex2i(-16,3);
glVertex2i(-14,3);
glVertex2i(-13,8); //B
glVertex2i(-13,3);
glVertex2i(-13,8);
glVertex2i(-11,8);
glVertex2i(-13,3);
glVertex2i(-11,3);
glVertex2i(-13,5.5);
glVertex2i(-11,5.5);
glVertex2i(-11,3);
glVertex2i(-11,5.5);
glVertex2i(-11,8);
glVertex2i(-11,3);
glVertex2i(-10,3);//E
glVertex2i(-10,8);
glVertex2i(-10,5);
glVertex2i(-9,5);
glVertex2i(-10,8);
glVertex2i(-8,8);
glVertex2i(-10,3);
glVertex2i(-8,3);
glVertex2i(-7,3);//R
glVertex2i(-7,8);
glVertex2i(-7,8);
glVertex2i(-5,8);
glVertex2i(-7,5);
glVertex2i(-5,5);
glVertex2i(-7,5);
glVertex2i(-5,3);
glVertex2i(-5,8);
glVertex2i(-5,5);
glVertex2i(-4,8);//T
glVertex2i(0,8);
glVertex2i(-2,8);
glVertex2i(-2,3);
glVertex2i(1,8);//O
glVertex2i(1,3);
glVertex2i(3,8);
glVertex2i(3,3);
glVertex2i(1,8);
glVertex2i(3,8);
glVertex2i(1,3);
glVertex2i(3,3);
glVertex2i(6,8);//O
glVertex2i(6,3);
glVertex2i(8,8);
glVertex2i(8,3);
glVertex2i(6,8);
glVertex2i(8,8);
glVertex2i(6,3);
glVertex2i(8,3);
glVertex2i(12,3);//R
glVertex2i(12,8);
glVertex2i(12,8);
glVertex2i(10,8);
glVertex2i(12,5);
glVertex2i(10,5);
glVertex2i(12,5);
glVertex2i(10,3);
glVertex2i(10,8);
glVertex2i(10,5);
glVertex2i(13,8);//T
glVertex2i(17,8);
glVertex2i(15,8);
glVertex2i(15,3);
glVertex2i(18,3);//E
glVertex2i(18,8);
glVertex2i(18,5);
glVertex2i(20,5);
glVertex2i(18,8);
glVertex2i(20,8);
glVertex2i(18,3);
glVertex2i(20,3);
glVertex2i(21,3); //G
glVertex2i(21,8);
glVertex2i(21,3);
glVertex2i(23,3);
glVertex2i(21,8);
glVertex2i(23,8);
glVertex2i(23,5);
glVertex2i(23,3);
glVertex2i(21,5);
glVertex2i(23,5);
glVertex2i(24,3); ////A
glVertex2i(26,8);
glVertex2i(28,3);
glVertex2i(26,8);
glVertex2i(24,5);
glVertex2i(28,5);
glEnd();
glFlush();
}
void avanzar (int value)
if(x<=30);
{
x= x+1;
if (x>30)
{
x=30;
}
}
glutTimerFunc(100,avanzar,1);
glutPostRedisplay();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitWindowSize(500,500);
glutInitWindowPosition(300,10);
glutCreateWindow("examen");
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutTimerFunc(10,avanzar,1);
glutMainLoop();
return 0;
}
3) #include <gl/glut.h>
#include<math.h>
void dibujar (int w, int h){ //metodo dibujar con 2 parametros enteros w&h
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-25,25,-25,25); //definir volumen de trabajo plano en x y y
}
void pantalla(void){ //metodo
glClearColor(0.1,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);//limpiar la pantalla
glBegin(GL_TRIANGLE_FAN);
glBegin(GL_TRIANGLE_FAN);
glEnd();
glFlush();
glutTimerFunc(1,avanzar,1);
glutPostRedisplay();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitWindowSize(500,500);
glutInitWindowPosition(300,10);
glutCreateWindow("tarea");
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutTimerFunc(1,avanzar,1);
glutMainLoop();
return 0;
}
4) #include <Gl/glut.h>
#include <Gl/gl.h>
#include <math.h>
void dibuja(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glColor3f(7.890,0.543,0.123);
circulo(300,300,70);
glColor3f(.98,.86,.65);
circulo(300,300,50);
glColor3f(8.0,.78,.98);
if (a>=6.15 && a<=500) {
circulo(300 + sin(a) * 60,300 - cos(a) * 60,10);
a=a+0.1;
}
glColor3f(2.78,2.81,3.01);
if (b>=6.15 && b<=500) {
circulo(300 + sin(b) * 60,300 - cos(b) * 60,10);
b=b+0.1;
}
glColor3f(1.01,2.01,0.01);
if (c>=6.15 && c<=500) {
circulo(300 + sin(c) * 60,300 - cos(c) * 60,10);
c=c+0.1;
}
glColor3f(.01,2.01,0.01);
if (d>=6.15 && d<=500) {
circulo(300 + sin(d) * 60,300 - cos(d) * 60,10);
d=d+0.1;
}
glColor3f(.01,2.01,0.01);
if (e>=6.15 && e<=500 ) {
circulo(300 + sin(e) * 60,300 - cos(e) * 60,10);
e=e+0.1;
}
glColor3f(.01,2.01,0.01);
if (f>=6.15 && f<=500) {
circulo(300 + sin(f) * 60,300 - cos(f) * 60,10);
f=f+0.1;
}
glFlush();
glutSwapBuffers(); //cambio de buffer
}
int main (int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); //declaracion de doble
buffer
glutInitWindowSize(700,700);
glutInitWindowPosition(10,10);
glutCreateWindow("movimiento");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
5) #include <stdio.h>
#include <math.h>
#include <GL/glut.h>
void display();
void specialKeys();
double rotate_y=0;
double rotate_x=0;
void display(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glPushMatrix ();
glBegin (GL_POLYGON);
glColor3f( 1.0, 0.0, 0.0 );
// P1 es rojo
// P2 es verde
// P3 es azul
glEnd ();
glBegin (GL_POLYGON);
glColor3f (1.0, 1.0, 0.0); glVertex3f (0.0, 1.0, 0.0);
glColor3f (0.0, 1.0, 0.0); glVertex3f (0.80, -0.5, 0.0);
glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.80, -0.5, 0.0);
glEnd ();
glPointSize(20);
glBegin(GL_POINTS);
glColor3f( 1.0, 0.0, 0.0 ); glVertex3f( 0.5, -0.5, 0.5 );
glColor3f( 0.0, 1.0, 1.0 ); glVertex3f( 0.5, 0.5, 0.5 );
glColor3f( 0.0, 0.0, 1.0 ); glVertex3f( -0.5, 0.5, 0.5 );
glColor3f( 1.0, 0.0, 1.0 ); glVertex3f( -0.5, -0.5, 0.5 );
glEnd();
glPopMatrix ();
glutSwapBuffers();
if (key == GLUT_KEY_RIGHT)
rotate_y += 15;
glutPostRedisplay();
glutSpecialFunc(specialKeys);
glutMainLoop();
return 0;
6) #include <unistd.h>
#include <Gl/glut.h>
#include <Gl/gl.h>
#include <math.h>
int x=1, x2=1, y=1;
double a=6.15, b=6.15 ,c=-6.15, d=-6.15;
//declaracion de variables
void inicializa(void)
{
glClearColor(0.0,0.0,0.0,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 500.0, 0.0, 500.0); //ancho y largo de la ventana
}
void circulo(int x, int y, int radio) {
int angulo=0;
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x,y);
for (angulo=0;angulo<=360; angulo+=2) { glVertex2f(x + sin(angulo) * radio, y
+ cos(angulo) * radio);}
glEnd();
}
void dibuja(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glColor3f(0.3,0.3,0.6);
circulo(300,300,70);
circulo(300,180,70);
glColor3f(1.1,1.1,1.1);
circulo(300,300,50);
circulo(300,180,50);
glColor3f(1.1,0.1,0.2);
circulo(300,300,30);
glColor3f(1.1,0.1,0.2);
circulo(300,300,30);
circulo(300,180,30);
glColor3f(0.0,3.0,0.0);
if (a>=6.15 && a<=12.4) {
circulo(300 + sin(a) * 60,300 - cos(a) * 60,10);
a=a+0.1;
}
else{
circulo(300 + sin(b) * 60,180 - cos(b) * -60,10);
b=b+0.1;
if(b>12.4) {a=6.15;b=6.15;}
}
glColor3f(1.0,3.0,0.0);
if (c>=6.15 && c<=12.4) {
circulo(300 + sin(c) * 60,300 - cos(c) * -60,10);
c=c-0.1;
}
else{
circulo(300 + sin(d) * 60,180 - cos(d) * -60,10);
d=d-0.1;
if(d>12.4) {c=6.15;d=6.15;}
}
glFlush();
glutSwapBuffers(); //cambio de buffer
}
int main (int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); //declaracion de doble
buffer
glutInitWindowSize(700,700);
glutInitWindowPosition(10,10);
glutCreateWindow("movimiento");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
7) #include <GL/glut.h>
#include <math.h>
float z= 0;
float x1=0;
void pantalla(void)
{
glClear(GL_COLOR_BUFFER_BIT);
float x,y;
glBegin(GL_LINE_STRIP);
for(x=-8;x<=8;x+=0.01){
y=4+sin(x+z);
glColor3f(1.0,1.0,1.0);
glVertex2f(x+z,y+x1);
y=-4+cos(x+x1);
}
glEnd();
glBegin(GL_LINE_STRIP);
for(x=-8;x<=8;x+=0.01){
y=2-sin(x+z);
glColor3f(1.0,1.0,1.0);
glVertex2f(x-z,y-x1);
y=-2-cos(x-x1);
}
glEnd();
glBegin(GL_LINE_STRIP);
for(x=-8;x<=8;x+=0.01){
y=0+sin(x+z);
glColor3f(1.0,1.0,1.0);
glVertex2f(x+z,y+x1);
y=-0+cos(x+x1);
}
glEnd();
glBegin(GL_LINE_STRIP);
for(x=-8;x<=8;x+=0.01){
y=-2-sin(x+z);
glColor3f(1.0,1.0,1.0);
glVertex2f(x-z,y-x1);
y=-2-cos(x-x1);
}
glEnd();
glFlush();
}
void avanzar (int value)
{
if(z<=15);
{
z=z+1;
if (z>15)
{
z=-15;
}
}
glutTimerFunc(100,avanzar,1);
glutPostRedisplay();
}
int main(int argc,char**rgb)
{
glutInit(&argc,rgb);
glutInitWindowSize(800,800);
glutInitWindowPosition(80,80);
glutCreateWindow("ONDAS");
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutTimerFunc(100,avanzar,1);
glutMainLoop();
return 0;
}
8) #include <GL/glut.h>
#include <math.h>
float z= 0;
float x1=0;
void dibujar(int w,int h)
{
glClearColor(1.0,0.0,0.0,1.0);
glViewport(0,0,w,h);
glLoadIdentity();
gluOrtho2D(-10,10,-10,10);
}
void pantalla(void)
{
glClear(GL_COLOR_BUFFER_BIT);
float x,y;
glBegin(GL_LINE_STRIP);
for(x=-10;x<=10;x+=0.01){
y=6+sin(x);
glColor3f(1.0,0.0,1.0);
glVertex2f(x+z,y);
y=-6+cos(x+x1);
}
glEnd();
glFlush();
}
void avanzar (int value)
{
if(z<=15);
{
z=z+1;
if (z>15)
{
z=-15;
}
}
glutTimerFunc(100,avanzar,1);
glutPostRedisplay();
}
int main(int argc,char**rgb)
{
glutInit(&argc,rgb);
glutInitWindowSize(800,800);
glutInitWindowPosition(80,80);
glutCreateWindow("ONDAS");
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutTimerFunc(100,avanzar,1);
glutMainLoop();
return 0;
}
9) #include <gl/glut.h>
void display(void) {
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(20.0f, 1.0f, 1.0f, 10.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef( 1.0, 1.0, -10.0 );
glRotatef( rotate_x, 1.0, 0.0, 0.0 );
glColor3f(0.6,0.9,0);
glutSolidTeapot(0.5);
glFlush();
glutSwapBuffers();
}
void specialKeys( int key, int x, int y ) {
glutReshapeFunc(onSize);
glutMainLoop();
}
//angulo de rotacin
GLfloat angulo = 0.0;
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
}
void display(void)
{
//defino un material en este caso es un Rojo
GLfloat mat_ambient[] = {0.1, 0.1, 0.1, 1.0f};
GLfloat mat_diffuse[] = {0.308, 0.615, 0.824, 1.0f};
GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0f};
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f,0.0f,-10.0f);
//aplico la rotacion al eje Y
glRotatef(angulo, 0.0f, 1.0f, 0.0f);
//aplico el material
glMaterialfv (GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 50.0f);
//utilizo la perspectiva
void reshape (int width, int height)
{
if (height==0)
{
height=1;
}
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
GLint ancho=400;
GLint alto=400;
int hazPerspectiva = 0;
if(hazPerspectiva)
gluPerspective(60.0f, (GLfloat)width/(GLfloat)height, 1.0f, 20.0f);
else
glMatrixMode(GL_MODELVIEW);
ancho = width;
alto = height;
}
void drawCube(void)
{
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_QUADS);
//cara frontal
glEnd();
glBegin(GL_QUADS);
//cara trasera
glEnd();
glVertex3f(-1.0f,-1.0f, -1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
glColor3f(0.0f,
1.0f, 1.0f);
glBegin(GL_QUADS);
//cara arriba
glEnd();
//cara abajo
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
drawCube();
glLoadIdentity();
glFlush();
glutSwapBuffers();
anguloCuboX+=0.1f;
anguloCuboY+=0.1f;
anguloEsfera+=0.2f;
}
void init()
{
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
ancho = 400;
alto = 400;
}
void idle()
{
display();
}
case 'o':
case 'O':
hazPerspectiva=0;
reshape(ancho,alto);
break;
void dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);//Cuadros fondo semaforo
glColor3f(0.0 , 0.2 , 0.2);
glVertex2i(170,437);
glVertex2i(320,437);
glVertex2i(320,182);
glVertex2i(170,182);
glVertex2i(229,183);
glVertex2i(278,183);
glVertex2i(278,3);
glVertex2i(229,3);
glEnd();
glColor3f(0.0,0.0,0.0);//Luces Verde
circulo(247,226,34);
glColor3f(0.0,0.0,0.0);//Luces Amarrilla
circulo(247,302,34);
glColor3f(0.0,0.0,0.0);//Luces Roja
circulo(247,381,34);
as=as+1; //velocidad entre mas grande mas rapido y entre menos mas lento
for(int j=1;j<=10000000;j++){}//pausa
if(as>1 && as<20){
glColor3f(1.0,0.0,0.0);//Luces Roja
circulo(247,381,34);
}
if(as>60){as=0;}
glFlush(); //forzar dibujado
glutSwapBuffers();
}
glutInitWindowSize(700,700);
glutInitWindowPosition(10,10);
glutCreateWindow("movimiento");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
void dibujar (int w, int h){ //metodo dibujar con 2 parametros enteros w&h
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glBegin(GL_QUADS);
glVertex2f(9,-9);
glVertex2f(9,-5);
glVertex2f(5,-5);
glVertex2f(5,-9);
glEnd();
glBegin(GL_LINES);
glVertex2f(-9,-4);
glVertex2f(-9,-9);
glVertex2f(-9,-4);
glVertex2f(-4,-4);
glVertex2f(-4,-9);
glVertex2f(-4,-4);
glVertex2f(-9,-9);
glVertex2f(-4,-9);
glVertex2f(-4,-4);
glVertex2f(-6.5,-9);
glVertex2f(-9,-4);
glVertex2f(-6.5,-9);
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex2f(9,3);
glVertex2f(3,3);
glVertex2f(6,8);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(4,0);
glVertex2i(2.5,-3.5);
glVertex2i(-2.5,-3.5);
glVertex2i(-4,0);
glVertex2i(-2.5,3.5);
glVertex2i(2.5,3.5);
glEnd();
glFlush();//termina
}
int main(int argc,char**argv)//cuerpo manda a llamar metodo y dibujar
{
glutInit(&argc,argv); //
glutCreateWindow("MARCO ANTONIO");
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutMainLoop();
return 0;
}
void dibujar (int w, int h){ //metodo dibujar con 2 parametros enteros w&h
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-15,15,-15,15); //definir volumen de trabajo plano en x y y
}
void pantalla(void){
glClearColor(0.3,0.6,1,1); //metodo
glClear(GL_COLOR_BUFFER_BIT);//limpiar la pantalla
glEnd();
glFlush();
glColor3f(1,1,1);
glBegin(GL_QUADS); ///rectangulo
glColor3f(1,1,1);
glVertex2f(8,0);
glVertex2f(-8,0);
glVertex2f(-8,-8);
glVertex2f(8,-12);
glEnd();
glFlush();
glBegin(GL_TRIANGLE_FAN); //sombra
glColor3f(0,0,0);
glVertex2f(9,-10);
glVertex2f(8,0);
glVertex2f(8,-12);
glEnd();
glFlush();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitWindowSize(500,500);
glutInitWindowPosition(300,10);
glutCreateWindow("sombra");
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutMainLoop();
return 0;
}
15) #include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h> //librera
void dibujar (int w, int h){ //metodo dibujar con 2 parametros enteros w&h
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
void dibujar (int w, int h){ //metodo dibujar con 2 parametros enteros w&h
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(10,-10,10,-10); //definir volumen de trabajo plano en x y y
}
void pantalla(void){ //metodo
glClear(GL_COLOR_BUFFER_BIT);//limpiar la pantalla
glBegin(GL_LINES);//trazo d linea
glColor3f(1,1,1);//color
glVertex2f(-3.5,-1);
glVertex2f(0.5,-1);
glVertex2f(-1,0);
glVertex2f(-1,9);
glVertex2f(-1.5,0);
glVertex2f(-1.5,9);
glVertex2f(-2,0);
glVertex2f(-2,9);
glVertex2f(-3,0);
glVertex2f(-3,9);
glVertex2f(0,0);
glVertex2f(-3,9);
glVertex2f(-3,0);
glVertex2f(0,9);
glVertex2f(-3,0);
glVertex2f(0,0);
glVertex2f(-3,9);
glVertex2f(0,9);
glEnd();
glFlush();//termina
}
int main(int argc,char**argv)//cuerpo manda a llamar metodo y dibujar
{
glutInit(&argc,argv); //
glutCreateWindow("PROFE ZARCO");//nombre ventana
glutDisplayFunc(pantalla);
glutReshapeFunc(dibujar);
glutMainLoop();
return 0;
}
// Resetear transformaciones
glLoadIdentity();
// Otras transformaciones
// glTranslatef( 0.1, 0.0, 0.0 );
// No incluido
// No incluido
// Otras transformaciones
// No incluido
// P1 es rojo
// P2 es verde
// P3 es azul
// P4 es morado
glEnd();
glFlush();
glutSwapBuffers();
// Crear ventana
glutCreateWindow("Cubo con la funcin rotate");
// Funciones de retrollamada
glutDisplayFunc(display);
glutSpecialFunc(specialKeys);
18) #include<windows.h>
#include <GL/glut.h>
#include<iostream>
#include <stdlib.h>
switch(key)
{
case 27:
exit(0);
}
}
void initRendering()
{
glEnable(GL_DEPTH_TEST);
}
float _angle=0.0;
float _cameraangle=30.0;
void drawScene()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(_cameraangle,0.0f,1.0f,0.0f); //rotate object by 30 degree with respect to y-axis
glTranslatef(0.0f, 0.0f, -10.0f);
glPushMatrix();
glTranslatef(5.0f, -1.0f, 0.0f);
glScalef(2.0f,2.0f,2.0f);
glVertex3f(-0.7f,0.0f,0.0);
glVertex3f(0.7f,0.0f,0.0);
glVertex3f(0.5f,2.0f,0.0);
glVertex3f(-0.5f,2.0f,0.0);
glEnd();
glPopMatrix();
glutSwapBuffers();
}
void update(int value)
{
_angle+=2.0f;
if(_angle>360.f)
{
_angle-=360;
}
glutPostRedisplay();
glutTimerFunc(25,update,0);
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(600,600);
glutCreateWindow("rotate");
initRendering();
glutDisplayFunc(drawScene);
glutKeyboardFunc(handleKeypress);
glutReshapeFunc(handleResize);
glutTimerFunc(25,update,0);
//this call the function update in every 25 millsecond
//so value of angle of rotation change and object rotates continuously
glutMainLoop();
return 0;
}