martes, 4 de septiembre de 2007

Práctica 2

1.Definir el uso, argumentos y declaración de las siguientes funciones:

a) void glutSolidCube(GLdouble size)
Renderiza un cubo sólido.El cubo se centra en el origen de las coordenadas de modelato con lados cuya longitud la determina size.

b) void glutSolidSphere(GLdouble base, GLdouble height,GLint slices, GLint stacks);
Los parámetros son:
*base:define el radio de la base del cono.
*height:para establecer la altura del cono.
*slices:define el número de subdivisiones alrededor del eje Z.
*stacks: establece el número de subdivisiones a lo largo del eje z.

Descripción: renderiza un cono sólido orientado a lo largo del ejeZ. La base del cono se pone en Z=0, y la punta superior en Z=height. El cono se subdivide alrededor del eje Z en slices, y a lo largo del mismo eje en stacks.

c) void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
Sus parámetros son:
*base: para el radio de la base del cono.
*height: define la altura del cono.
*slices:define el número de subdivisiones alrededor del eje Z.
*stacks: establece el número de subdivisiones a lo largo del eje z.

Descripción:
Renderiza un cono sólido orientado a lo largo del eje Z. La base del cono se pone en Z =0, y la parte superior en Z=height. El cono se e subdivide alrededor del eje Z en slices, y a lo largo del mismo eje en stacks.

d)void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadiusGLint nsides, GLint rings);
Parámetros:
*innerRadius: radio interno del toro.
*outerRadius: radio externo del toro.
*nsides: número de lados para cada sección radial.
*rigs: número de divisiones radiales para el toro.

Descripción: renderiza un toro sólido ( en forma de donda) centrada en el
de las coordenadas de modelado cuyo eje se alinea con el eje Z.

El código siguiente dibuja las cuatro figuras en el mismo programa pero se ven planas.

#include

float aspect = 1.0f;
/*La función dibujaObjetos es para dibujar el
torus,el cilindro, la esfera y el cubo en la misma ventana.*/
void dibujaObjetos(void) {
//Limpiamos el buffer que es en donde dibujaremos:
glClear(GL_COLOR_BUFFER_BIT);
//Para trabajar con el modelador.
glMatrixMode(GL_MODELVIEW);
//Para las transformaciones utilizaremos la matriz identidad:
glLoadIdentity();
/*Utilizo sólo transformaciones para ubicar las figuras en diferentes sitios
de la pantalla: */
glTranslatef(0.5,.5,0);
glColor3f(1,0,0);
glutSolidCube(.5);
/*La siguiente transformación se hará con respecto al origen,debo utilizar
la matriz identidad: */
glLoadIdentity();
glTranslatef(-0.5,0.5,0);
glColor3f(1,1,0);
glutSolidCone(.4,.7,100,2);
glLoadIdentity();
glTranslatef(0.5,-0.5,0);
glColor3f(0,1,0);
glutSolidSphere(.4,100,4);
glLoadIdentity();
glColor3f(0,0,1);
glTranslatef(-0.5,-0.5,0);
glutSolidTorus(.1,.3,100,20);
/*Hacemos que todos los comandos que estén en espera de ogl se ejecuten:*/
glFlush();
//Para volcar un frame de un buffer a otro:
glutSwapBuffers();
}
//Función para redimensionar la ventana;
void onSize(int sx, int sy) {
//Para definir el puerto de vista:
glViewport(0, 0, sx, sy);
aspect = (float) sx / (float) sy;
}

void main(void) {
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 300);
glutInitWindowPosition(100, 100);
glutCreateWindow("Objetos definidos");
glutDisplayFunc(dibujaObjetos);
//Callback para cuando la ventana se redimensiona:
glutReshapeFunc(onSize);
glutMainLoop();
}

#include

#include

#include

#include

void Cabeza()

{

glfloat vertices[]{ {0.5,0.5,0.5},

{-0.5,0.5,0.5},

{-0.5,0.5,0.5},

{0.5,-0.5,0.5},

{0.5,-0.5,-0.5},

{-0.5,-0.5,0.5},

{-0.5,0.5,0.5},

{0.5,0.5,-0.5}};

glBegin(GL,Quads);

glVertex3fu(vertices[0]);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[4]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[8]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[2]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[4]);

glEnd(); //Para unir los vertices

}

void Cuerpo()//Para trazar el cuerpo "tronco"

{

glfloat vertices[]{ {1.0,-0.5,0.5},

{-1.0,-0.5.0.5},

{-1.0,-3.0,0.5},

{1.0,-3.0,0.5},

{1.0,-3.0,-0.5},

{-1.0,-3.0,-0.5},

{-1.0,0.5,-0.5},

{1.0,0.5,-0.5}};

glBegin(GL,Quads);

glVertex3fu(vertices[0]);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[4]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[8]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[2]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[4]);

glEnd(); //Para unir los vertices

}

void BrazoDer()//Para trazar el brazo derecho

{

glfloat vertices[]{ {1.0,-0.5,0.5},

{1.5,-0.5,0.5},

{1.5,-1.5,0.5},

{1.0,-1.5,0.5},

{1.0,-1.5,-0.5},

{1.5,-1.5,-0.5},

{1.5,-0.5,-0.5},

{1.0,-0.5,-0.5}};

glBegin(GL,Quads);

glVertex3fu(vertices[0]);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[4]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[8]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[2]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[4]);

glEnd(); //Para unir los vertices

}

void BrazoIzq()//Para trazar el brazo izquierdo

{

glfloat vertices[]{ {-1.0,-0.5,0.5},

{-1.5,-0.5,0.5},

{-1.5,-1.5,0.5},

{-1.0,-1.5,0.5},

{-1.0,-1.5,-0.5},

{-1.5,-1.5,-0.5},

{-1.5,-0.5,-0.5},

{-1.0,-0.5,-0.5}};

glBegin(GL,Quads);

glVertex3fu(vertices[0]);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[4]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[8]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[2]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[4]);

glEnd(); //Para unir los vertices

}

void PiernaDer()//Para trazar la pierna derecha

{

glfloat vertices[]{ {0.5,-3.0,0.5},

{1.0,-3.0,0.5},

{1.0,-4.0,0.5},

{0.5,-4.0,0.5},

{0.5,-4.0,-0.5},

{1.0,-4.0,-0.5},

{1.0,-3.0,-0.5},

{0.5,-3.0,-0.5}};

glBegin(GL,Quads);

glVertex3fu(vertices[0]);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[4]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[8]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[2]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[4]);

glEnd(); //Para unir los vertices

}

void PiernaIzq()//Para trazar la pierna izquierda

{

glfloat vertices[]{ {-0.5,-3.0,0.5},

{-1.0,-3.0,0.5},

{-1.0,-4.0,0.5},

{-0.5,-4.0,0.5},

{-0.5,-4.0,-0.5},

{-1.0,-4.0,-0.5},

{-1.0,-3.0,-0.5},

{-0.5,-3.0,-0.5}};

glBegin(GL,Quads);

glVertex3fu(vertices[0]);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[2]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[3]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[4]);

glVertex3fu(vertices[5]);

glVertex3fu(vertices[8]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[1]);

glVertex3fu(vertices[8]);

glVertex3fu(vertices[7]);

glVertex3fu(vertices[2]);

glEnd(); //Para unir los vertices

glBegin(GL,Quads);

glVertex3fu(vertices[3]);

glVertex3fu(vertices[6]);

glVertex3fu(vertices[5]);
glVertex3fu(vertices[4]);
glEnd(); //Para unir los vertices
}

main()
{
Cabeza();
Cuerpo();
BrazoDer();
BrazoIzq();
PiernaDer();
Pierna Izq();
}

No hay comentarios: