You are on page 1of 35

#include <GL/glut.

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

{2.0, -1.0, 0.25}},


{{-2.0, 0.0, 0.6},
{-1.0, 0.0,-2.0},
{0.0, 0.0, -2.0},
{1.0, 0.0, -2.0},
{2.0, 0.0, 1.76}},
{{-2.0, 1.0, 0.5},
{-1.0, 1.0, 3.0},
{0.0, 1.0, -2.25},
{1.0, 1.0, 2.0},
{2.0, 1.0, 1.75}},
{{-2.0, 1.0, -1.0},
{-1.0, 2.0, 0.5},
{0.0, 2.0, 1.0},
{1.0, 2.0, 1.5},
{1.5, 1.5, 1.0}}
};
GLfloat ctrlpoints2[5][5][3] = {
{{ 0.0, 0.0, 0.5},
{ 0.0, 0.0, 0.5},
{ 0.0, 0.0, 0.5},
{ 0.0, 0.0, 0.5},
{ 0.0, 0.0, 0.5}},
{{ 0.0, 0.0, 0.5},
{-1.0, -1.0, 0.5},
{0.0, -1.0, 0.75},
{1.0, -1.0, 0.5},
{ 0.0, 0.0, 0.5}},
{{ 0.0, 0.0, 0.5},
{-1.0, 0.0, 1.0},
{0.0, 0.0, 1.5},
{1.0, 0.0, 1.0},
{ 0.0, 0.0, 0.5}},
{{ 0.0, 0.0, 0.5},
{-1.0, 1.0, 1.0},
{0.0, 1.0, 1.25},
{1.0, 1.0, 1.0},
{ 0.0, 0.0, 0.5}},
{{0.0, 0.0, 0.5},

//centro flor

{ 0.0, 0.0, 0.5},


{ 0.0, 0.0, 0.5},
{ 0.0, 0.0, 0.5},
{0.0, 0.0, 0.5}}
};
GLfloat ctrlpoints3[5][5][3] = {

//tallo

{{-2.0, -2.0, -1.0},


{-2.5, -2.0, -1.0},
{-2.0, -2.0, 0.0},
{-1.5, -2.0, -1.0},
{-2.0, -2.0, -1.0}},
{{-2.0, -1.0, -0.5},
{-2.5, -1.0, -0.1},
{-2.0, -1.0, 0.75},
{-1.5, -1.0, -0.1},
{-2.0, -1.0, -0.5}},
{{-2.0, 0.0, 0.0},
{-2.5, 0.0, 0.4},
{-2.0, 0.0, 1.0},
{-1.5, 0.0, 0.4},
{-2.0, 0.0, 0.0}},
{{-2.0, 1.0, 0.0},
{-2.5, 1.0, 0.4},
{-2.0, 1.0, 0.75},
{-1.5, 1.0, 0.4},
{-2.0, 1.0, 0.0}},
{{-2.0, 2.0, -0.5},
{-2.5, 2.0, -0.1},
{-2.0, 2.0, 0.25},
{-1.5, 2.0, -0.1},
{-2.0, 2.0, -0.5}}
};
GLfloat ctrlpoints4[5][5][3] = {
{{-2.0, -2.0, -1.0},
{-1.0, -2.0, 0.5},
{0.0, -2.0, -1.0},
{1.0, -2.0, 0.5},
{2.0, -2.0, -1.0}},

//corola

{{-2.0, -1.0, 0.5},


{-1.0, -1.0, -0.5},
{0.0, -1.0, 0.75},
{1.0, -1.0, -0.5},
{2.0, -1.0, 0.25}},
{{-2.0, 0.0, -0.6},
{-1.0, 0.0, -1.0},
{0.0, 0.0, -1.5},
{1.0, 0.0, -1.0},
{2.0, 0.0, -0.26}},
{{-2.0, 1.0, 0.5},
{-1.0, 1.0, -1.0},
{0.0, 1.0, 1.25},
{1.0, 1.0, -1.0},
{2.0, 1.0, 0.25}},
{{-2.0, 2.0, -1.0},
{-1.0, 2.0, 0.5},
{0.0, 2.0, -1.0},
{1.0, 2.0, 0.5},
{2.0, 2.0, -1.0}}
};
GLfloat ctrlpoints5[5][5][3] = {
{{-1.5, -1.5, -1.0},
{-1.0, -2.0, -0.4},
{0.0, -2.0, -0.5},
{1.0, -2.0, -0.4},
{3.0, -2.0, -1.5}},
{{-2.0, -1.0, -0.5},
{-1.0, -1.0, 1.5},
{0.0, -1.0, -1.75},
{1.0, -1.0, -1.0},
{2.0, -1.0, -0.25}},
{{-2.0, 0.0, -1.6},
{-1.0, 0.0, 1.0},
{0.0, 0.0, 1.0},
{1.0, 0.0, -2.0},
{2.0, 0.0, 0.26}},
{{-2.0, 1.0, 1.5},
{-1.0, 1.0, 2.0},
{0.0, 1.0, 1.25},
{1.0, 1.0, 2.0},

//hojita

{2.0, 1.0, -0.25}},


{{-2.0, 1.2, 1.0},
{-1.0, 2.0, 1.5},
{0.0, 2.0, -1.0},
{1.0, 2.0, -0.5},
{1.5, 1.5, -1.0}}
};
GLfloat ctrlpoints6[5][5][3] = {
{{-1.5, -1.5, -1.0},
{-1.0, -2.0, -0.4},
{0.0, -2.0, -3.5},
{1.0, -2.0, -3.4},
{3.0, -2.0, -4.5}},

//otra hojita

{{-2.0, -1.0, -0.5},


{-1.0, -1.0, 1.5},
{0.0, -1.0, -1.75},
{1.0, -1.0, -4.0},
{2.0, -1.0, -3.25}},
{{-2.0, 0.0, -1.6},
{-1.0, 0.0, 1.0},
{0.0, 0.0, 1.0},
{1.0, 0.0, -2.0},
{2.0, 0.0, -2.75}},
{{-2.0, 1.0, 1.5},
{-1.0, 1.0, 2.0},
{0.0, 1.0, 1.25},
{1.0, 1.0, 2.0},
{2.0, 1.0, -0.25}},
{{-1.5, 2.0, 1.0},
{-1.0, 2.0, 1.5},
{0.0, 2.0, -1.0},
{1.0, 2.0, -0.5},
{1.5, 1.5, -1.0}}
};
//FLORERO
GLfloat ctrlpoints7[5][5][3] = {
{{0.0, -1.0, -3},
{-5.0, -1.0, 0},
{0.0, -1.0, 5},
{5.0, -1.0,0},

//fondo1

{0.0, -1.0, -3}},


{{0.0, -0.75, -3},
{-5.0, -0.75, 0},
{0.0, -0.75, 5},
{5.0, -0.75, 0},
{0.0, -0.75, -3}},
{{0.0, -0.5, -3},
{-5.0, -0.5,0},
{0.0, -0.5, 5},
{5.0, -0.5, 0},
{0.0, -0.5, -3}},
{{0.0, -0.25, -3},
{-5.0, -0.25, 0},
{0.0, -0.25, 5},
{5.0, -0.25, 0},
{0.0, -0.25, -3}},
{{0.0, 0.0, -3},
{-5.0, 0.0, 0},
{0.0, 0.0, 5},
{5.0, 0.0, 0},
{0.0, 0.0, -3}}
};
GLfloat ctrlpoints8[5][5][3] = {
{{-5, -3.5, -6.5},
{-3, -3.5, -2},
{0.0, 3, -8},
{3.0, -8.5, -2},
{5.0, -8.5, -6.5}},
{{-9, -2.5, 0},
{-2.0, -2.5, -2},
{0.0, 3.0, -2.75},
{2.0, -7.5, -2},
{9.0, -7.5, 0}},
{{-9.0, -5, 2},
{-2.0, 1, 1},
{0.0, 3, 0},
{2.0, 1, 1},
{9.0, 1, 2}},
{{-8.0, -5.5, 3.5},
{-4.0, -1.5, 2.5},
{0.0, 3, 2},

//base

{4.0, -8.5, 2.5},


{8.0, -8.5, 3.5}},
{{-5.0,- 2.5, 4.5},
{-3.0, -2.5, 5},
{0.0, 3, 6},
{3.0, -7.5, 5},
{5.0, -7.5, 4.5}}
};
GLfloat ctrlpoints9[5][5][3] = {
{{0.0, 0.0, -3},
{-5.0, 0.0, 0},
{0.0, 0.0, 5},
{5.0, 0.0, 0},
{0.0, 0.0, -3}},

//fondoarriba

{{0.0, 0.5, -3},


{-7.0, 0.5, 0},
{0.0, 0.5, 5},
{7.0, 0.5, 0},
{0.0, 0.5, -3}},
{{0.0, 1, -3},
{-6.5, 1, 0},
{0.0, 1, 5},
{6.5, 1, 0},
{0.0, 1, -3}},
{{0.0, 2, -4},
{-8.0, 2, 0},
{0.0, 2, 8},
{8.0, 2, 0},
{0.0, 2, -4}},
{{0.0, 3, -3},
{-7.5,3, 0},
{0.0, 3, 5},
{7.5, 3, 0},
{0.0, 3, -3}},
};
GLfloat ctrlpoints10[6][5][3] = {
{{0.0, 3, -3},
{-7.5, 3, 0},
{0.0, 3, 5},
{7.5, 3, 0},
{0.0, 3, -3}},

//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

{{0.0, 11, -3},


{-4.0, 11, 0},
{0.0, 11, 5},
{4.0, 11, 0},
{0.0, 11, -3}},
{{0.0, 10, -4},
{-5.5, 10, 0},
{0.0, 10, 8},
{5.5, 10, 0},
{0.0, 10, -4}},
};
GLfloat ctrlpoints12[5][5][3] = {

//tapa

{{-1.5, 10, -2},


{-1.0, 10, -2.5},
{0, 10, -3},
{1.0, 10, -2.5},
{1.5, 10, -2}},
{{-2.0, 10, -1},
{-1.0,10, -1},
{0.0, 10, -1},
{1.0, 10, -1},
{2.0,10, -1}},
{{-3.0, 10, 0},
{-1, 10, 0},
{0.0, 10,0},
{1, 10,0},
{3.0, 10,0}},
{{-2.0, 10, 2},
{-1.0, 10, 2},
{0.0, 10, 2},
{1.0, 10, 2},
{2.0, 10, 2}},
{{-1.5, 10, 3.5},
{-1, 10, 4.5},
{0.0, 10, 5},
{1, 10, 4.5},
{1.5, 10, 3.5}}
};
// propiedades del material
GLfloat mat_ambient[] = {0.25f, 0.20725f, 0.20725f, 0.922f};
GLfloat mat_diffuse[] = {1.0f, 0.829f, 0.829f, 0.922f};

GLfloat mat_specular[] = {0.296648f, 0.296648f, 0.296648f, 0.922f};


// propiedades del material
GLfloat oro_ambient[] = {0.24725f, 0.1995f, 0.0745f, 1.0f};
GLfloat oro_diffuse[] = {0.75164f, 0.60648f, 0.22648f, 1.0f};
GLfloat oro_specular[] = {0.628281f, 0.555802f, 0.366065f, 1.0f};
// propiedades del material
GLfloat esmeralda_ambient[] = {0.0215f, 0.1745f, 0.0215f, 0.55f};
GLfloat esmeralda_diffuse[] = {0.07568f, 0.61424f, 0.07568f, 0.55};
GLfloat esmeralda_specular[] = {0.633f, 0.727811f, 0.633f, 0.55f};
//rojo
GLfloat mat2_ambiente[]={0.05,0.05,0.05,1.0f};
GLfloat mat2_difuso[]={0.8,0.0,0.0,1.0f};
GLfloat mat2_especular[]={0.9,0.8,0.8,1.0f};
//azul
GLfloat mat3_ambiente[]={0.1,0.1,0.1,1.0f};
GLfloat mat3_difuso[]={0.0,0.0,0.8,1.0f};
GLfloat mat3_especular[]={0.9,0.9,0.9,1.0f};
// angulos de rotacion
GLfloat rotx = -60.0;
GLfloat roty = 45.0;
GLfloat rotz = 180.0;
int n = 5;
// parametros de la fuente de luz
void initlights(void)
{
// propiedades de la fuente de luz
GLfloat ambient[] = { 0.2f, 0.2f, 0.2f, 1.0f };
GLfloat diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat position[] = { 0.0f, 0.0f, 1.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, position);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}
// dibuja los puntos de control de la superficie
void DrawPoints(void)
{
int i,j;

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();

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,1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,// 0.0, 1.0, 3.0, 5.0, 0.0, 1.0, 15.0, 5.0,
&ctrlpoints7[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 9
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,
&ctrlpoints11[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 10
glPushMatrix();
glScalef(0.7, 10, 0.4);
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,
&ctrlpoints12[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();
//flor1
glTranslated(0.0, 1.0, 5.0);

glScalef(0.2, 0.2, 0.1);


//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();

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);

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();
//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,

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();

//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);

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();
//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();

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);
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();
//florarribaflor1
glTranslated(30.0, 72.0, -28.0);
glRotatef(-60, 1.0, 0.0, 0.0);
glRotatef(45, 0.0, 1.0, 0.0);
glRotatef(180, 0.0, 0.0, 1.0);
glScalef(3.2, 3.2, 3.1);
//Superficie 1
glPushMatrix();
glTranslated(-3.0, 3.0, 0.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,
&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;
}

You might also like