Professional Documents
Culture Documents
Prueba0 0
Prueba0 0
h>
#include <math.h>
#include <stdio.h>
// puntos de control de la superficie de Bezier
GLfloat ctrlpoints[5][5][3] = {
//petalos abajo
{{-1.5, -1.5, -1.0},
{-1.0, -2.0, -0.4},
{0.0, -2.0, -0.5},
{1.0, -2.0, -0.4},
{2.0, -2.0, -1.0}},
{{-2.0, -1.0, -0.5},
{-1.0, -1.0, 1.5},
{0.0, -1.0, -1.75},
{1.0, -1.0, 1.5},
{2.0, -1.0, -0.25}},
{{-2.0, 0.0, -1.6},
{-1.0, 0.0,-2.0},
{0.0, 0.0, -2.0},
{1.0, 0.0, -2.0},
{2.0, 0.0, 0.26}},
{{-2.0, 1.0, 0.5},
{-1.0, 1.0, 2.0},
{0.0, 1.0, -2.25},
{1.0, 1.0, 2.0},
{2.0, 1.0, -0.25}},
{{-2.0, 1.2, -1.0},
{-1.0, 2.0, -0.5},
{0.0, 2.0, -1.0},
{1.0, 2.0, -0.5},
{1.5, 1.5, -1.0}}
};
GLfloat ctrlpoints1[5][5][3] = {
{{-1.5, -1.5, 1.0},
{-1.0, -2.0, 0.6},
{0.0, -2.0, 0.5},
{1.0, -2.0, -0.4},
{2.0, -2.0, -1.0}},
{{-2.0, -1.0, 0.5},
{-1.0, -1.0, 1.5},
{0.0, -1.0, -1.75},
{1.0, -1.0, 1.5},
//petalos arriba
//centro flor
//tallo
//corola
//hojita
//otra hojita
//fondo1
//base
//fondoarriba
//cuello
{{0.0, 6, -3},
{-4.0, 6, 0},
{0.0, 6, 5},
{4.0, 6, 0},
{0.0, 6, -3}},
{{0.0, 7, -3},
{-3.5, 7, 0},
{0.0, 7, 5},
{3.5, 7, 0},
{0.0, 7, -3}},
{{0.0, 8, -3},
{-3.0, 8, 0},
{0.0, 8, 5},
{3.0, 8, 0},
{0.0, 8, -3}},
{{0.0, 9, -3},
{-3.0, 9, 0},
{0.0, 9, 5},
{3.0, 9, 0},
{0.0, 9, -3}},
{{0.0, 10, -3},
{-3.0, 10, 0},
{0.0, 10, 5},
{3.0, 10, 0},
{0.0, 10, -3}}
};
GLfloat ctrlpoints11[5][5][3] = {
{{0.0, 9, -3},
{-3.0, 9, 0},
{0.0, 9, 5},
{3.0, 9, 0},
{0.0, 9, -3}},
{{0.0, 11, -3},
{-3.0,11, 0},
{0.0, 11, 5},
{3.0, 11, 0},
{0.0,11, -3}},
{{0.0, 12, -3},
{-3, 12, 0},
{0.0, 12, 5},
{3, 12, 0},
{0.0, 12, -3}},
//fin cuello
//tapa
glPushAttrib( GL_LIGHTING_BIT );
glDisable( GL_LIGHTING );
// cambia el tama\F1o del pexels para hacerlo mas visible
glPointSize(4.0f);
// dibuja todos los puntos de control de la superficie
glColor3f( 0.0, 1.0, 1.0);
glBegin(GL_POINTS);
for(j=0; j<n; j++)
for (i=0; i<n; i++)
glVertex3fv(ctrlpoints[j][i]);
glEnd();
glColor3f( 0.0, 0.25, 0.5);
glBegin(GL_LINES);
for (j=0; j<n-1; j++)
for (i=0; i<n-1; i++)
{
glVertex3fv(ctrlpoints[j][i]);
glVertex3fv(ctrlpoints[j][i+1]);
}
for (i=0; i<n-1; i++)
for (j=0; j<n-1; j++)
{
glVertex3fv(ctrlpoints[j][i]);
glVertex3fv(ctrlpoints[j+1][i]);
}
glEnd();
glPopAttrib();
}
// dibuja la superficie
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_MODELVIEW_MATRIX );
glLoadIdentity();
/*glTranslated(-1.5, 4.0, -12.0);
glRotatef(rotx, 1.0, 0.0, 0.0);
glRotatef(roty, 0.0, 1.0, 0.0);
glRotatef(rotz, 0.0, 0.0, 1.0);*/
//FLORERO
glTranslated(0, -10.0, 0);
//base
glPushMatrix();
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints8[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(30, 0.0, 1.0, 30, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 30, 0, 30);
glPopMatrix();
//Superficie 4
glPushMatrix();
glMaterialfv (GL_FRONT, GL_AMBIENT, mat2_ambiente);
glMaterialfv (GL_FRONT, GL_DIFFUSE, mat2_difuso);
glMaterialfv (GL_FRONT, GL_SPECULAR, mat2_especular);
glMaterialf (GL_FRONT, GL_SHININESS, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints9[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(30, 0.0, 1.0, 30, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 30, 0, 30);
glPopMatrix();
//Superficie 7
glPushMatrix();
glMaterialfv (GL_FRONT, GL_AMBIENT, mat2_ambiente);
glMaterialfv (GL_FRONT, GL_DIFFUSE, mat2_difuso);
glMaterialfv (GL_FRONT, GL_SPECULAR, mat2_especular);
glMaterialf (GL_FRONT, GL_SHININESS, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints10[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(30, 0.0, 1.0, 30, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 30, 0, 30);
glPopMatrix();
//Superficie 8
glPushMatrix();
0, 1, 3, 5,0, 1, 15, 5,
//Superficie 3
glPushMatrix();
glTranslated(-1.75, -1.7, 0.0);
glRotatef(120, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0, 1, 3, 5,0, 1, 15, 5,
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 4
glPushMatrix();
glTranslated(0.02, 3.6, 0.0);
glRotatef(-65.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 5
glPushMatrix();
glTranslated(0.9,-1.0, 0.0);
glRotatef(-182.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 6
glPushMatrix();
glTranslated(-3.7, 0.2, 0.0);
glRotatef(64.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 7
glPushMatrix();
glTranslated(-1.0, 1.0, -1.4);
glScalef(1.25, 1.25, 1.25);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints6[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//flor2
glTranslated(8.0, 1.0, 5.0);
//Superficie 1
glPushMatrix();
glTranslated(-3.0, 3.0, 0.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 2
glPushMatrix();
glTranslated(1.7, 1.75, 0.0);
glRotatef(-120, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
//Superficie 4
glPushMatrix();
glTranslated(0.02, 3.6, 0.0);
glRotatef(-65.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
0, 1, 3, 5,0, 1, 15, 5,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 5
glPushMatrix();
glTranslated(0.9,-1.0, 0.0);
glRotatef(-182.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 6
glPushMatrix();
glTranslated(-3.7, 0.2, 0.0);
glRotatef(64.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 7
glPushMatrix();
glTranslated(-1.0, 1.0, -1.4);
glScalef(1.25, 1.25, 1.25);
glMaterialfv (GL_FRONT, GL_AMBIENT, oro_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, oro_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, oro_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints2[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 8
glPushMatrix();
glScalef(1.2, 1.2, 3.0);
glTranslated(1.15, 0.7, -2.2);
glRotatef(90.0, 1.0, 0.0, 0.0);
glMaterialfv (GL_FRONT, GL_AMBIENT, esmeralda_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, esmeralda_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, esmeralda_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 76.8f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints3[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
//DrawPoints();
glPopMatrix();
//Superficie 11
glPushMatrix();
glTranslated(2.5, 0.75, -4.5);
glRotatef(-150.0, 0.0, 0.0, 1.0);
glMaterialfv (GL_FRONT, GL_AMBIENT, esmeralda_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, esmeralda_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, esmeralda_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 76.8f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints6[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//flor3
glTranslated(-16.0, 1.0, 5.0);
//Superficie 1
glPushMatrix();
glTranslated(-3.0, 3.0, 0.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 2
glPushMatrix();
glTranslated(1.7, 1.75, 0.0);
glRotatef(-120, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
4, 1, 3, 5,0, 1, 15, 5, ///
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 3
glPushMatrix();
glTranslated(-1.75, -1.7, 0.0);
glRotatef(120, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0, 1, 3, 5,0, 1, 15, 5,
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
0, 1, 3, 5,0, 1, 15, 5,
//Superficie 4
glPushMatrix();
glTranslated(0.02, 3.6, 0.0);
glRotatef(-65.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 5
glPushMatrix();
glTranslated(0.9,-1.0, 0.0);
glRotatef(-182.0, 0.0, 0.0, 1.0);
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, 11.264f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 6
glPushMatrix();
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat3_difuso);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat3_especular);
glMaterialf (GL_FRONT,GL_SHININESS,51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 2
glPushMatrix();
glTranslated(1.7, 1.75, 0.0);
glRotatef(-120, 0.0, 0.0, 1.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat3_ambiente);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat3_difuso);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat3_especular);
glMaterialf (GL_FRONT,GL_SHININESS,51.2f);
glMap2f(GL_MAP2_VERTEX_3,
4, 1, 3, 5,0, 1, 15, 5, ///
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 3
glPushMatrix();
glTranslated(-1.75, -1.7, 0.0);
glRotatef(120, 0.0, 0.0, 1.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat3_ambiente);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat3_difuso);
0, 1, 3, 5,0, 1, 15, 5,
glMaterialfv(GL_FRONT,GL_SPECULAR,mat3_especular);
glMaterialf (GL_FRONT,GL_SHININESS,51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0, 1, 3, 5,0, 1, 15, 5,
&ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 4
glPushMatrix();
glTranslated(0.02, 3.6, 0.0);
glRotatef(-65.0, 0.0, 0.0, 1.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat3_ambiente);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat3_difuso);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat3_especular);
glMaterialf (GL_FRONT,GL_SHININESS,51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 5
glPushMatrix();
glTranslated(0.9,-1.0, 0.0);
glRotatef(-182.0, 0.0, 0.0, 1.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat3_ambiente);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat3_difuso);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat3_especular);
glMaterialf (GL_FRONT,GL_SHININESS,51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 6
glPushMatrix();
glTranslated(-3.7, 0.2, 0.0);
glRotatef(64.0, 0.0, 0.0, 1.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat3_ambiente);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat3_difuso);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat3_especular);
glMaterialf (GL_FRONT,GL_SHININESS,51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints1[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 7
glPushMatrix();
glTranslated(-1.0, 1.0, -1.4);
glScalef(1.25, 1.25, 1.25);
glMaterialfv (GL_FRONT, GL_AMBIENT, oro_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, oro_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, oro_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 51.2f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints2[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 8
glPushMatrix();
glScalef(1.2, 1.2, 3.0);
glTranslated(1.15, 0.7, -2.2);
glRotatef(90.0, 1.0, 0.0, 0.0);
glMaterialfv (GL_FRONT, GL_AMBIENT, esmeralda_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, esmeralda_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, esmeralda_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 76.8f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints3[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 9
glPushMatrix();
glScalef(0.5, 0.5, 0.5);
glTranslated(-2.0, 2.0, -1.2);
glMaterialfv (GL_FRONT, GL_AMBIENT, esmeralda_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, esmeralda_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, esmeralda_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 76.8f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints4[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 10
glPushMatrix();
glScalef(0.8, 0.8, 0.8);
glTranslated(-4.0, 3.0, -4.5);
glMaterialfv (GL_FRONT, GL_AMBIENT, esmeralda_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, esmeralda_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, esmeralda_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 76.8f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints5[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
//Superficie 11
glPushMatrix();
glTranslated(2.5, 0.75, -4.5);
glRotatef(-150.0, 0.0, 0.0, 1.0);
glMaterialfv (GL_FRONT, GL_AMBIENT, esmeralda_ambient);
glMaterialfv (GL_FRONT, GL_DIFFUSE, esmeralda_diffuse);
glMaterialfv (GL_FRONT, GL_SPECULAR, esmeralda_specular);
glMaterialf (GL_FRONT, GL_SHININESS, 76.8f);
glMap2f(GL_MAP2_VERTEX_3,
0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints6[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0.0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
//DrawPoints();
glPopMatrix();
glFlush();
}
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 1.0);
glEnable (GL_DEPTH_TEST);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
initlights();
}
void ChangeSize(int w, int h)
{
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15.0f, 15.0f, -15.0f, 15.0f, -15.0f, 15.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (800, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow ("Ejemplo de una superficie de Bezier");
init ();
glutReshapeFunc(ChangeSize);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}