===================================================================================================================

Trabalho de Computação Gráfica

===================================================================================================================

Autora: Cláudia Maria Caixeta Bezerra

 

Textura

//---------------------------------------------------------------------------------------------------------------------------------------------------------------

Este trabalho foi implementado na linguagem C utilizando o compilador DevC, utilizando o Windows.

//---------------------------------------------------------------------------------------------------------------------------------------------------------------

Segundo (Gonzalez, 2000), textura é um descritor que fornece medidas de propriedades como suavidade, rugosidade e regularidade.

A textura é realizada para reproduzir em algum objeto da cena as propriedades de alguma função (como exemplo tem-se a cor).

Algumas propriedades podem ser reproduzidas a partir de mapas:

a cor (como já citada);

o mapeamento de ambiente;

o bumping mapping;

entre outras.

Texturas 2D são funções T (s, t) cujo domínio é um espaço bidimensional e o contradomínio pode ser cor, opacidade, etc

 

O ESPAÇO DE TEXTURA

É comum ajustar a escala da imagem de tal forma que a imagem toda se enquadre no intervalo 0 = s, t = 1

Normalmente a função em si é derivada de alguma imagem capturada

Se a imagem está armazenada numa matriz

Im [0..N-1 , 0..M-1]

Então

T (s, t) = Im [ (1 - t) N , s M ]

MAPEAMENTO DE TEXTURAS EM POLÍGONOS

Polígonos são freqüentemente usados para representar fronteiras de objetos

O uso de texturas requer a execução de dois passos distintos: a CARGA e a APLICAÇÃO da textura.

Sempre que for necessário trabalhar com um textura (para carga ou aplicação) deve-se chamar a função glBindTexture que permite definir a textura corrente. Esta definição é feita atavés do número de identificação da textura.

Em OpenGL, além das coordenadas dos vértices e do vetor normal, é possível também especificar coordenadas de textura:

Para a aplicação da textura é preciso criar uma relação entre os vértives da textura e os vértices dos polígonos sobre os quais se desenha mapear a textura escolhida.

glBegin (GL_POLYGON);

glNormal3fv (N);

glTexCoord2fv (T);

glVertex3fv (V);

...

Neste trabalho, usou-se a função glTexGen{ifd}(GLenum coord, GLenum pname, TYPE param) do OpenGL para gerar as coordenadas de textura automaticamente.

 

Implementação

#include
#include
#include
#include
#include
#include
#include
#include


#define stripeImageWidth 32
GLubyte stripeImage[4*stripeImageWidth];
static GLuint texName;

static GLfloat xequalzero[] = {1.0, 0.0, 0.0, 0.0};
static GLfloat slanted[] = {1.0, 1.0, 1.0, 0.0};
static GLfloat *currentCoeff;
static GLenum currentPlane;
static GLint currentGenMode;

void makeStripeImage(void)
{
int j;

for (j = 0; j < stripeImageWidth; j++) {
stripeImage[4*j] = (j<=4) ? 255 : 127;
stripeImage[4*j+1] = (j>4) ? 255 : 127;
stripeImage[4*j+2] = 127;
}
}

//===============================================================
void init(void)
{

glClearColor (1.0,1.0,1.0,0.0);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);

makeStripeImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glGenTextures(1, &texName);
glBindTexture(GL_TEXTURE_1D, texName);
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage1D(GL_TEXTURE_1D, 0, 3, stripeImageWidth, 0,
GL_RGB, GL_UNSIGNED_BYTE, stripeImage);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

currentCoeff = xequalzero;
currentGenMode = GL_OBJECT_LINEAR;
currentPlane = GL_OBJECT_PLANE;

glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode);
glTexGenfv(GL_S, currentPlane, currentCoeff);

glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_1D);
//glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
//glFrontFace(GL_CW);
//glCullFace(GL_BACK);
glMaterialf(GL_FRONT, GL_SHININESS,64.0);
}


void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-2.3, -1.0, -5.0);
glMatrixMode(GL_MODELVIEW); //carrega a matriz dos objetos
glBindTexture(GL_TEXTURE_1D, texName);


//======================================================================================================================


//ELEMENTO 1 (bolinha superior)
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.4051, 1.6323, 0 );
/*2*/ glVertex3f( 2.3947, 1.6311, 0 );
/*3*/ glVertex3f( 2.3851, 1.6277, 0 );
/*4*/ glVertex3f( 2.3766, 1.6223, 0 );
/*5*/ glVertex3f( 2.3695, 1.6152, 0 );
/*6*/ glVertex3f( 2.3641, 1.6067, 0 );
/*7*/ glVertex3f( 2.3607, 1.5971, 0 );
/*8*/ glVertex3f( 2.3595, 1.5867, 0 );
/*9*/ glVertex3f( 2.3607, 1.5762, 0 );
/*10*/ glVertex3f( 2.3641, 1.5666, 0 );
/*11*/ glVertex3f( 2.3695, 1.5581, 0 );
/*12*/ glVertex3f( 2.3766, 1.5511, 0 );
/*13*/ glVertex3f( 2.3851, 1.5457, 0 );
/*14*/ glVertex3f( 2.3947, 1.5422, 0 );
/*15*/ glVertex3f( 2.4051, 1.541, 0 );
/*16*/ glVertex3f( 2.4156, 1.5422, 0 );
/*17*/ glVertex3f( 2.4252, 1.5457, 0 );
/*18*/ glVertex3f( 2.4337, 1.5511, 0 );
/*19*/ glVertex3f( 2.4407, 1.5581, 0 );
/*20*/ glVertex3f( 2.4461, 1.5666, 0 );
/*21*/ glVertex3f( 2.4496, 1.5762, 0 );
/*22*/ glVertex3f( 2.4508, 1.5867, 0 );
/*23*/ glVertex3f( 2.4496, 1.5971, 0 );
/*24*/ glVertex3f( 2.4461, 1.6067, 0 );
/*25*/ glVertex3f( 2.4407, 1.6152, 0 );
/*26*/ glVertex3f( 2.4337, 1.6223, 0 );
/*27*/ glVertex3f( 2.4252, 1.6277, 0 );
/*28*/ glVertex3f( 2.4156, 1.6311, 0 );
/*29*/ glVertex3f( 2.4051, 1.6323, 0 );
glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++++++++++

//ELEMENTO 2 - SEGUNDA BOLINHA
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.7786, 1.07, 0 );
/*2*/ glVertex3f( 2.7682, 1.0688, 0 );
/*3*/ glVertex3f( 2.7586, 1.0654, 0 );
/*4*/ glVertex3f( 2.7501, 1.06, 0 );
/*5*/ glVertex3f( 2.743, 1.0529, 0 );
/*6*/ glVertex3f( 2.7376, 1.0444, 0 );
/*7*/ glVertex3f( 2.7342, 1.0348, 0 );
/*8*/ glVertex3f( 2.733, 1.0244, 0 );
/*9*/ glVertex3f( 2.7342, 1.0139, 0 );
/*10*/ glVertex3f( 2.7376, 1.0043, 0 );
/*11*/ glVertex3f( 2.743, 0.9958, 0 );
/*12*/ glVertex3f( 2.7501, 0.9888, 0 );
/*13*/ glVertex3f( 2.7586, 0.9834, 0 );
/*14*/ glVertex3f( 2.7682, 0.9799, 0 );
/*15*/ glVertex3f( 2.7786, 0.9787, 0 );
/*16*/ glVertex3f( 2.7891, 0.9799, 0 );
/*17*/ glVertex3f( 2.7987, 0.9834, 0 );
/*18*/ glVertex3f( 2.8071, 0.9888, 0 );
/*19*/ glVertex3f( 2.8142, 0.9958, 0 );
/*20*/ glVertex3f( 2.8196, 1.0043, 0 );
/*21*/ glVertex3f( 2.8231, 1.0139, 0 );
/*22*/ glVertex3f( 2.8243, 1.0244, 0 );
/*23*/ glVertex3f( 2.8231, 1.0348, 0 );
/*24*/ glVertex3f( 2.8196, 1.0444, 0 );
/*25*/ glVertex3f( 2.8142, 1.0529, 0 );
/*26*/ glVertex3f( 2.8071, 1.06, 0 );
/*27*/ glVertex3f( 2.7987, 1.0654, 0 );
/*28*/ glVertex3f( 2.7891, 1.0688, 0 );
/*29*/ glVertex3f( 2.7786, 1.07, 0 );
glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//ELEMENTO 3 - TERCEIRA BOLINA (A mais em baixo)
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2997, 0.7295, 0 );
/*2*/ glVertex3f( 2.2893, 0.7283, 0 );
/*3*/ glVertex3f( 2.2797, 0.7249, 0 );
/*4*/ glVertex3f( 2.2713, 0.7195, 0 );
/*5*/ glVertex3f( 2.2643, 0.7124, 0 );
/*6*/ glVertex3f( 2.2589, 0.7039, 0 );
/*7*/ glVertex3f( 2.2555, 0.6943, 0 );
/*8*/ glVertex3f( 2.2542, 0.6839, 0 );
/*9*/ glVertex3f( 2.2555, 0.6734, 0 );
/*10*/ glVertex3f( 2.2589, 0.6638, 0 );
/*11*/ glVertex3f( 2.2643, 0.6554, 0 );
/*12*/ glVertex3f( 2.2713, 0.6483, 0 );
/*13*/ glVertex3f( 2.2797, 0.6429, 0 );
/*14*/ glVertex3f( 2.2893, 0.6395, 0 );
/*15*/ glVertex3f( 2.2997, 0.6382, 0 );
/*16*/ glVertex3f( 2.3101, 0.6395, 0 );
/*17*/ glVertex3f( 2.3197, 0.6429, 0 );
/*18*/ glVertex3f( 2.3281, 0.6483, 0 );
/*19*/ glVertex3f( 2.3352, 0.6554, 0 );
/*20*/ glVertex3f( 2.3405, 0.6638, 0 );
/*21*/ glVertex3f( 2.344, 0.6734, 0 );
/*22*/ glVertex3f( 2.3452, 0.6839, 0 );
/*23*/ glVertex3f( 2.3452, 0.6839, 0 );
/*24*/ glVertex3f( 2.344, 0.6943, 0 );
/*25*/ glVertex3f( 2.3405, 0.7039, 0 );
/*26*/ glVertex3f( 2.3352, 0.7124, 0 );
/*27*/ glVertex3f( 2.3281, 0.7195, 0 );
/*28*/ glVertex3f( 2.3197, 0.7249, 0 );
/*29*/ glVertex3f( 2.3101, 0.7283, 0 );
/*30*/ glVertex3f( 2.2997, 0.7295, 0 );
glEnd();

//========================================================


//++++++++++++++++ LETRA U +++++++++++++++++++++++++++++

glColor3f(1.0,1.0,1.0);
//ELEMENTO 4a
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.6878, 0.3545, 0 );
/*2*/ glVertex3f( 1.6878, 0.43, 0 );
/*3*/ glVertex3f( 1.6543, 0.43, 0 );
/*4*/ glVertex3f( 1.6543, 0.3381, 0 );
glEnd();
//ELEMENTO 4b
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.6543, 0.3381, 0 );
/*2*/ glVertex3f( 1.6565, 0.3268, 0 );
/*3*/ glVertex3f( 1.6627, 0.3177, 0 );
/*4*/ glVertex3f( 1.6719, 0.3115, 0 );
/*5*/ glVertex3f( 1.6831, 0.3093, 0 );
/*6*/ glVertex3f( 1.7029, 0.3394, 0 );
/*7*/ glVertex3f( 1.6953, 0.3415, 0 );
/*8*/ glVertex3f( 1.6899, 0.3469, 0 );
/*9*/ glVertex3f( 1.6878, 0.3545, 0 );
glEnd();

//ELEMENTO 4c
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.6831, 0.3093, 0 );
/*2*/ glVertex3f( 1.7772, 0.3093, 0 );
/*3*/ glVertex3f( 1.7574, 0.3394, 0 );
/*4*/ glVertex3f( 1.7029, 0.3394, 0 );


glEnd();

//ELEMENTO 4d
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.7772, 0.3093, 0 );
/*2*/ glVertex3f( 1.7885, 0.3115, 0 );
/*3*/ glVertex3f( 1.7977, 0.3177, 0 );
/*4*/ glVertex3f( 1.8038, 0.3268, 0 );
/*5*/ glVertex3f( 1.8061, 0.3381, 0 );
/*6*/ glVertex3f( 1.7725, 0.3545, 0 );
/*7*/ glVertex3f( 1.7704, 0.3469, 0 );
/*8*/ glVertex3f( 1.765, 0.3415, 0 );
/*9*/ glVertex3f( 1.7574, 0.3394, 0 );
glEnd();


//ELEMENTO 4e
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.8061, 0.3381, 0 );
/*2*/ glVertex3f( 1.8061, 0.429, 0 );
/*3*/ glVertex3f( 1.7725, 0.429, 0 );
/*4*/ glVertex3f( 1.7725, 0.3545, 0 );
glEnd();


//+++++++++++++++++++++ LETRA N ++++++++++++++++++


//ELEMENTO 5a
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.8861, 0.3091, 0 );
/*2*/ glVertex3f( 1.8861, 0.3876, 0 );
/*3*/ glVertex3f( 1.8861, 0.4289, 0 );
/*4*/ glVertex3f( /*1.84378*/1.855, 0.4289, 0 );
/*5*/ glVertex3f( /*1.8437*/1.855, 0.3091, 0 );
glEnd();

//ELEMENTO 5b
glBegin(GL_POLYGON);
/*4*/ glVertex3f( 1.8699, 0.3876, 0 );
/*3*/ glVertex3f( 1.9371, 0.3091, 0 );
/*2*/ glVertex3f( 1.9559, 0.3463, 0 );
/*1*/ glVertex3f( 1.8861, 0.4289, 0 );
glEnd();


//ELEMENTO 5c
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.9371, 0.3091, 0 );
/*2*/ glVertex3f( 1.984/*1.9718*/, 0.3091, 0 );
/*3*/ glVertex3f( 1.984/*1.9718*/, 0.4281, 0 );
/*4*/ glVertex3f( 1.9371, 0.4281, 0 );
/*5*/ glVertex3f( 1.9559, 0.3463, 0 );

glEnd();

//+++++++++++++++++++++ LETRA I ++++++++++++++++++

//ELEMENTO 6
glBegin(GL_POLYGON);
/*5*/ glVertex3f( 2.0226, 0.3091, 0 );
/*4*/ glVertex3f( 2.0562, 0.3091, 0 );
/*3*/ glVertex3f( 2.0562, 0.4298, 0 );
/*2*/ glVertex3f( 2.0226, 0.4298, 0 );
/*1*/ glVertex3f( 2.0226, 0.3091, 0 );
glEnd();

//+++++++++++++++++++++ LETRA C ++++++++++++++++++


//ELEMENTO 7a

glBegin(GL_POLYGON);
/*10*/ glVertex3f( 2.1752, 0.3996, 0 );
/*9*/ glVertex3f( 2.1827, 0.3979, 0 );
/*8*/ glVertex3f( 2.1881, 0.3929, 0 );
/*7*/ glVertex3f( 2.1903, 0.3856, 0 );
/*6*/ glVertex3f( 2.2239, 0.3856, 0 );
/*5*/ glVertex3f( 2.2239, 0.4018, 0 );
/*4*/ glVertex3f( 2.2205, 0.4129, 0 );
/*3*/ glVertex3f( 2.2137, 0.4217, 0 );
/*2*/ glVertex3f( 2.2041, 0.4276, 0 );
/*1*/ glVertex3f( 2.1927, 0.4297, 0 );


glEnd();


//ELEMENTO 7b
glBegin(GL_POLYGON);
/*4*/ glVertex3f( 2.1401, 0.3996, 0 );
/*3*/ glVertex3f( 2.1876, 0.3996, 0 );
/*2*/ glVertex3f( 2.1927, 0.4297, 0 );
/*1*/ glVertex3f( 2.1233, 0.4297, 0 );
glEnd();


//ELEMENTO 7c
glBegin(GL_POLYGON);
/*10*/ glVertex3f( 2.1233, 0.3845, 0 );
/*9*/ glVertex3f( 2.1259, 0.3923, 0 );
/*8*/ glVertex3f( 2.1319, 0.3977, 0 );
/*7*/ glVertex3f( 2.1401, 0.3996, 0 );
/*6*/ glVertex3f( 2.1233, 0.4297, 0 );
/*5*/ glVertex3f( 2.113, 0.429, 0 );
/*4*/ glVertex3f( 2.1038, 0.4251, 0 );
/*3*/ glVertex3f( 2.0964, 0.4185, 0 );
/*2*/ glVertex3f( 2.0915, 0.4098, 0 );
/*1*/ glVertex3f( 2.0898, 0.3996, 0 );
glEnd();


//ELEMENTO 7d
glBegin(GL_POLYGON);
/*4*/ glVertex3f( 2.1233, 0.3543, 0 );
/*3*/ glVertex3f( 2.1233, 0.3845, 0 );
/*2*/ glVertex3f( 2.0898, 0.3996, 0 );
/*1*/ glVertex3f( 2.0898, 0.3392, 0 );
glEnd();


//ELEMENTO 7e
glBegin(GL_POLYGON);
/*10*/ glVertex3f( 2.1401, 0.3392, 0 );
/*9*/ glVertex3f( 2.1319, 0.341, 0 );
/*8*/ glVertex3f( 2.1259, 0.3464, 0 );
/*7*/ glVertex3f( 2.1233, 0.3543, 0 );
/*6*/ glVertex3f( 2.0898, 0.3392, 0 );
/*5*/ glVertex3f( 2.0923, 0.3295, 0 );
/*4*/ glVertex3f( 2.0974, 0.3212, 0 );
/*3*/ glVertex3f( 2.1046, 0.3147, 0 );
/*2*/ glVertex3f( 2.1134, 0.3105, 0 );
/*1*/ glVertex3f( 2.1233, 0.309, 0 );
glEnd();


//ELEMENTO 7f
glBegin(GL_POLYGON);
/*4*/ glVertex3f( 2.1233, 0.309, 0 );
/*3*/ glVertex3f( 2.1927, 0.309, 0 );
/*2*/ glVertex3f( 2.1752, 0.3392, 0 );
/*1*/ glVertex3f( 2.1401, 0.3392, 0 );
glEnd();


//ELEMENTO 7g
glBegin(GL_POLYGON);
/*10*/ glVertex3f( 2.1927, 0.309, 0 );
/*9*/ glVertex3f( 2.2046, 0.3103, 0 );
/*8*/ glVertex3f( 2.2144, 0.3161, 0 );
/*7*/ glVertex3f( 2.2212, 0.3253, 0 );
/*6*/ glVertex3f( 2.2237, 0.3369, 0 );
/*5*/ glVertex3f( 2.2237, 0.353, 0 );
/*4*/ glVertex3f( 2.1903, 0.353, 0 );
/*3*/ glVertex3f( 2.188, 0.3457, 0 );
/*2*/ glVertex3f( 2.1825, 0.3408, 0 );
/*1*/ glVertex3f( 2.1752, 0.3392, 0 );
glEnd();

//+++++++++++++++++++++ LETRA A ++++++++++++++++++

//ELEMENTO 8a (Parte Superior DO A)
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.3249, 0.4078, 0 );
/*1*/ glVertex3f( 2.3349, 0.4078, 0 );
/*2*/ glVertex3f( 2.355, 0.427, 0 );
/*2*/ glVertex3f( 2.2895, 0.427, 0 );
glEnd();


//ELEMENTO 8b (PRIMEIRA PERNA DO A)
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2293, 0.309, 0 );
/*2*/ glVertex3f( 2.2647, 0.309, 0 );
/*3*/ glVertex3f( 2.3249, 0.4078, 0 );
/*4*/ glVertex3f( 2.2923, 0.4284, 0 );
glEnd();


//ELEMENTO 8c (PERNA DO A)
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.3249, 0.4078, 0 );
/*2*/ glVertex3f( 2.3455, 0.357, 0 );
/*3*/ glVertex3f( 2.3592, 0.3282, 0 );
/*4*/ glVertex3f( 2.3647, 0.309, 0 );
/*5*/ glVertex3f( 2.4031, 0.309, 0 );
/*6*/ glVertex3f( 2.3523, 0.4284, 0 );

glEnd();


//ELEMENTO 8d (Traço)
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.253, 0.3282, 0 );
/*2*/ glVertex3f( 2.3592, 0.3282, 0 );
/*3*/ glVertex3f( 2.3455, 0.357, 0 );
/*4*/ glVertex3f( 2.2829, 0.357, 0 );

glEnd();


//+++++++++++++++++++++ LETRA M ++++++++++++++++++

//ELEMENTO 9a
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.4317, 0.3093, 0 );
/*2*/ glVertex3f( 2.4652, 0.3093, 0 );
/*3*/ glVertex3f( 2.4652, 0.3777, 0 );
/*4*/ glVertex3f( 2.4703, 0.43, 0 );
/*5*/ glVertex3f( 2.4317, 0.43, 0 );
glEnd();

//ELEMENTO 9b

glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.4703, 0.43, 0 );
/*2*/ glVertex3f( 2.4652, 0.3777, 0 );
/*3*/ glVertex3f( 2.5022, 0.3093, 0 );
/*4*/ glVertex3f( 2.520, 0.3277, 0 );
glEnd();

//ELEMENTO 9c

glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.5652, 0.43, 0 );
/*2*/ glVertex3f( 2.5022, 0.3093, 0 );
/*3*/ glVertex3f( 2.5275, 0.3093, 0 );
/*4*/ glVertex3f( 2.5652, 0.3777, 0 );
glEnd();


//ELEMENTO 9d

glBegin(GL_POLYGON);

/*1*/ glVertex3f( 2.5652, 0.3093, 0 );
/*2*/ glVertex3f( 2.6052, 0.3093, 0 );
/*3*/ glVertex3f( 2.6052, 0.3777, 0 );
/*4*/ glVertex3f( 2.6052, 0.43, 0 );
/*5*/ glVertex3f( 2.5652, 0.43, 0 );
glEnd();


//+++++++++++++++++++++ LETRA P ++++++++++++++++++

//ELEMENTO 10a
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.6561, 0.4313, 0 );
/*2*/ glVertex3f( 2.6561, 0.3091, 0 );
/*3*/ glVertex3f( 2.6918, 0.3091, 0 );
/*4*/ glVertex3f( 2.6918, 0.4313, 0 );


glEnd();


//ELEMENTO 10b
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.6918, 0.3997, 0 );
/*2*/ glVertex3f( 2.7453, 0.3997, 0 );
/*3*/ glVertex3f( 2.7618, 0.4313, 0 );
/*4*/ glVertex3f( 2.6918, 0.4313, 0 );

glEnd();


//ELEMENTO 10c
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.6918, 0.3366, 0 );
/*2*/ glVertex3f( 2.7618, 0.3366, 0 );
/*3*/ glVertex3f( 2.7453, 0.3695, 0 );
/*4*/ glVertex3f( 2.6918, 0.3695, 0 );

glEnd();


//ELEMENTO 10d
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.7453, 0.3997, 0 );
/*2*/ glVertex3f( 2.7529, 0.3981, 0 );
/*3*/ glVertex3f( 2.7733, 0.4289, 0 );
/*4*/ glVertex3f( 2.7618, 0.4313, 0 );

glEnd();


//ELEMENTO 10e
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.7529, 0.3981, 0 );
/*2*/ glVertex3f( 2.7579, 0.3937, 0 );
/*3*/ glVertex3f( 2.7827, 0.4224, 0 );
/*4*/ glVertex3f( 2.7733, 0.4289, 0 );

glEnd();


//ELEMENTO 10f
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.7579, 0.3937, 0 );
/*2*/ glVertex3f( 2.7605, 0.3878, 0 );
/*3*/ glVertex3f( 2.7896, 0.4128, 0 );
/*4*/ glVertex3f( 2.7827, 0.4224, 0 );
glVertex3f( 2.7605, 0.3878, 0 );

glEnd();


//ELEMENTO 10g
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.7605, 0.3878, 0 );
/*2*/ glVertex3f( 2.7896, 0.4128, 0 );
/*3*/ glVertex3f( 2.7934, 0.4011, 0 );
/*4*/ glVertex3f( 2.7934, 0.3682, 0 );

/*1*/ glVertex3f( 2.7902, 0.3682, 0 );
/*2*/ glVertex3f( 2.7896, 0.4126, 0 );

/*3*/ glVertex3f( 2.7605, 0.3878, 0 );

/*4*/ glVertex3f( 2.7605, 0.3814, 0 );

glEnd();


//ELEMENTO 10h

glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.762, 0.3722/*0.3585*/, 0 );
/*2*/ glVertex3f( 2.738/*2.7714*/, 0.36983, 0 );
/*3*/ glVertex3f( 2.7529, 0.337/*0.3712*/, 0 );
glVertex3f( 2.775/*2.7862*/, 0.3384/*0.3366*/, 0 );
/*4*/ glVertex3f( 2.7862, 0.3514/*0.3366*/, 0 );
///*5*/ glVertex3f( 2.779453, 0.349695, 0 );
///*6*/ glVertex3f( 2.7529, 0.37612, 0 );
glEnd();


//ELEMENTO 10i
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.7895/*2.792*/, 0.383/*0.37*/, 0 );
/*2*/ glVertex3f( 2.762/*2.768*/, 0.389/*0.3974*/, 0 );
/*3*/ glVertex3f( 2.758/*2.7579*/, 0.3698/*0.3608*/, 0 );
/*4*/ glVertex3f( 2.788/*2.782*/, 0.34724/*0.3545*/, 0 );
glEnd();


//=================================================


//+++++++++++++ FORMAS +++++++++++++++++++++++++++++

//ELEMENTO 11
glBegin(GL_POLYGON);
/*1*/ glVertex3f(2.684, 1.2129, 0 );
/*2*/ glVertex3f(2.6875,1.2036, 0 );
/*3*/ glVertex3f(2.6911, 1.1942, 0 );
/*4*/ glVertex3f(2.6945, 1.1848, 0 );
/*5*/ glVertex3f(2.698, 1.1754, 0 );
/*6*/ glVertex3f(2.7013, 1.166, 0 );
/*7*/ glVertex3f(2.7047, 1.1565, 0 );
/*8*/ glVertex3f(2.7079, 1.147, 0 );
/*9*/ glVertex3f(2.7112, 1.1375, 0 );
/*10*/ glVertex3f(2.7143, 1.128, 0 );
/*11*/ glVertex3f(2.7174, 1.1185, 0 );
/*12*/ glVertex3f(2.7205, 1.1089, 0 );
/*13*/ glVertex3f(2.7234, 1.0994, 0 );
/*14*/ glVertex3f(2.7264, 1.0898, 0 );
/*15*/ glVertex3f(2.7292, 1.0802, 0 );
/*16*/ glVertex3f(2.7197, 1.0729, 0 );
/*17*/ glVertex3f(2.7114, 1.0643, 0 );
/*18*/ glVertex3f(2.7046, 1.0546, 0 );
/*19*/ glVertex3f(2.6994, 1.0438, 0 );
/*20*/ glVertex3f(2.6959, 1.0322, 0 );
/*21*/ glVertex3f(2.3469, 1.0322, 0 );
/*22*/ glVertex3f(2.3453, 1.0456, 0 );
/*23*/ glVertex3f(2.3428, 1.0587, 0 );
/*24*/ glVertex3f(2.3392, 1.0717, 0 );

glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++

//ELEMENTO 12
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.6726, 1.2408, 0 );
/*2*/ glVertex3f( 2.6687, 1.25, 0 );
/*3*/ glVertex3f( 2.6647, 1.2593, 0 );
/*4*/ glVertex3f( 2.6606, 1.2685, 0 );
/*5*/ glVertex3f( 2.6565, 1.2777, 0 );
/*6*/ glVertex3f( 2.6523, 1.2868, 0 );
/*7*/ glVertex3f( 2.648, 1.2959, 0 );
/*8*/ glVertex3f( 2.6437, 1.305, 0 );
/*9*/ glVertex3f( 2.6394, 1.3141, 0 );
/*10*/ glVertex3f( 2.6349, 1.3231, 0 );
/*11*/ glVertex3f( 2.6304, 1.3322, 0 );
/*12*/ glVertex3f( 2.6259, 1.3411, 0 );
/*13*/ glVertex3f( 2.6213, 1.3501, 0 );
/*14*/ glVertex3f( 2.6166, 1.359, 0 );
/*15*/ glVertex3f( 2.6114, 1.3682, 0 );
/*16*/ glVertex3f( 2.606, 1.3772, 0 );
/*17*/ glVertex3f( 2.6006, 1.3862, 0 );
/*18*/ glVertex3f( 2.5951, 1.3951, 0 );
/*19*/ glVertex3f( 2.5895, 1.404, 0 );
/*20*/ glVertex3f( 2.5838, 1.4128, 0 );
/*21*/ glVertex3f( 2.3048, 1.1338, 0 );
/*22*/ glVertex3f( 2.3133, 1.1228, 0 );
/*23*/ glVertex3f( 2.3209, 1.1113, 0 );
/*24*/ glVertex3f( 2.3277, 1.0993, 0 );

glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 13
glBegin(GL_POLYGON);
/*27*/ glVertex3f( 2.5204, 1.4899, 0 );
/*26*/ glVertex3f( 2.5124, 1.4971, 0 );
/*25*/ glVertex3f( 2.5043, 1.504, 0 );
/*24*/ glVertex3f( 2.496, 1.5109, 0 );
/*23*/ glVertex3f( 2.4875, 1.5175, 0 );
/*22*/ glVertex3f( 2.4789, 1.524, 0 );
/*21*/ glVertex3f( 2.4702, 1.5303, 0 );
/*20*/ glVertex3f( 2.4614, 1.5363, 0 );
/*19*/ glVertex3f( 2.4543, 1.5294, 0 );
/*18*/ glVertex3f( 2.4464, 1.5236, 0 );
/*17*/ glVertex3f( 2.4379, 1.5188, 0 );
/*16*/ glVertex3f( 2.429, 1.5152, 0 );
/*15*/ glVertex3f( 2.4196, 1.5127, 0 );
/*14*/ glVertex3f( 2.41, 1.5114, 0 );
/*13*/ glVertex3f( 2.4003, 1.5114, 0 );
/*12*/ glVertex3f( 2.3905, 1.5128, 0 );
/*11*/ glVertex3f( 2.2502, 1.1772, 0 );
/*10*/ glVertex3f( 2.2618, 1.1706, 0 );
/*9*/ glVertex3f( 2.2729, 1.1632, 0 );
/*8*/ glVertex3f( 2.2835, 1.155, 0 );
/*7*/ glVertex3f( 2.5664, 1.4379, 0 );
/*6*/ glVertex3f( 2.5592, 1.447, 0 );
/*5*/ glVertex3f( 2.5518, 1.4559, 0 );
/*4*/ glVertex3f( 2.5442, 1.4646, 0 );
/*3*/ glVertex3f( 2.5365, 1.4732, 0 );
/*2*/ glVertex3f( 2.5285, 1.4817, 0 );
/*1*/ glVertex3f( 2.5204, 1.4899, 0 );
glEnd();


//++++++++++++++++++++++++++++++++++++++++++++++++++++++

//ELEMENTO 14
glBegin(GL_POLYGON);
/*30*/ glVertex3f( 2.1856, 1.1969, 0 );
/*29*/ glVertex3f( 2.198, 1.1952, 0 );
/*28*/ glVertex3f( 2.2103, 1.1927, 0 );
/*27*/ glVertex3f( 2.2224, 1.1892, 0 );
/*26*/ glVertex3f( 2.3627, 1.5247, 0 );
/*25*/ glVertex3f( 2.3551, 1.5308, 0 );
/*24*/ glVertex3f( 2.3484, 1.5376, 0 );
/*23*/ glVertex3f( 2.3427, 1.5452, 0 );
/*22*/ glVertex3f( 2.338, 1.5533, 0 );
/*21*/ glVertex3f( 2.3343, 1.562, 0 );
/*20*/ glVertex3f( 2.3317, 1.571, 0 );
/*19*/ glVertex3f( 2.3303, 1.5804, 0 );
/*18*/ glVertex3f( 2.3301, 1.59, 0 );
/*17*/ glVertex3f( 2.3311, 1.5996, 0 );
/*16*/ glVertex3f( 2.3215, 1.6021, 0 );
/*15*/ glVertex3f( 2.312, 1.6045, 0 );
/*14*/ glVertex3f( 2.3024, 1.6067, 0 );
/*13*/ glVertex3f( 2.2928, 1.6087, 0 );
/*12*/ glVertex3f( 2.2831, 1.6106, 0 );
/*11*/ glVertex3f( 2.2735, 1.6123, 0 );
/*10*/ glVertex3f( 2.2638, 1.6139, 0 );
/*9*/ glVertex3f( 2.2541, 1.6153, 0 );
/*8*/ glVertex3f( 2.2443, 1.6166, 0 );
/*7*/ glVertex3f( 2.2346, 1.6177, 0 );
/*6*/ glVertex3f( 2.2248, 1.6186, 0 );
/*5*/ glVertex3f( 2.215, 1.6194, 0 );
/*4*/ glVertex3f( 2.2052, 1.62, 0 );
/*3*/ glVertex3f( 2.1954, 1.6204, 0 );
/*2*/ glVertex3f( 2.1856, 1.6207, 0 );
/*1*/ glVertex3f( 2.1856, 1.1969, 0 );
glEnd();


//++++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 15
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.148, 1.1969, 0 );
/*2*/ glVertex3f( 2.148, 1.6202, 0 );
/*3*/ glVertex3f( 2.1384, 1.6196, 0 );
/*4*/ glVertex3f( 2.1289, 1.6189, 0 );
/*5*/ glVertex3f( 2.1195, 1.6179, 0 );
/*6*/ glVertex3f( 2.11, 1.6168, 0 );
/*7*/ glVertex3f( 2.1006, 1.6155, 0 );
/*8*/ glVertex3f( 2.0912, 1.6141, 0 );
/*9*/ glVertex3f( 2.0818, 1.6125, 0 );
/*10*/ glVertex3f( 2.0725, 1.6107, 0 );
/*11*/ glVertex3f( 2.0632, 1.6087, 0 );
/*12*/ glVertex3f( 2.054, 1.6066, 0 );
/*13*/ glVertex3f( 2.0448, 1.6043, 0 );
/*14*/ glVertex3f( 2.0356, 1.6018, 0 );
/*15*/ glVertex3f( 2.0265, 1.5991, 0 );
/*16*/ glVertex3f( 2.0174, 1.5963, 0 );
/*17*/ glVertex3f( 2.0084, 1.5933, 0 );
/*18*/ glVertex3f( 1.9994, 1.5902, 0 );
/*19*/ glVertex3f( 1.9905, 1.5868, 0 );
/*20*/ glVertex3f( 1.9816, 1.5833, 0 );
/*21*/ glVertex3f( 1.9728, 1.5797, 0 );
/*22*/ glVertex3f( 1.9641, 1.5759, 0 );
/*23*/ glVertex3f( 1.9554, 1.5719, 0 );
/*24*/ glVertex3f( 1.9554, 1.5719, 0 );
/*25*/ glVertex3f( 2.1123, 1.1896, 0 );
/*26*/ glVertex3f( 2.124, 1.1929, 0 );
/*27*/ glVertex3f( 2.1358, 1.1954, 0 );
/*28*/ glVertex3f( 2.148, 1.1969, 0 );


glEnd();

//++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 16
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.0845, 1.1784, 0 );
/*2*/ glVertex3f( 1.9284, 1.5586, 0 );
/*3*/ glVertex3f( 1.9198, 1.5541, 0 );
/*4*/ glVertex3f( 1.9114, 1.5495, 0 );
/*5*/ glVertex3f( 1.903, 1.5448, 0 );
/*6*/ glVertex3f( 1.8947, 1.5399, 0 );
/*7*/ glVertex3f( 1.8866, 1.5348, 0 );
/*8*/ glVertex3f( 1.8785, 1.5297, 0 );
/*9*/ glVertex3f( 1.8704, 1.5244, 0 );
/*10*/ glVertex3f( 1.8625, 1.5189, 0 );
/*11*/ glVertex3f( 1.8547, 1.5133, 0 );
/*12*/ glVertex3f( 1.847, 1.5076, 0 );
/*13*/ glVertex3f( 1.8394, 1.5018, 0 );
/*14*/ glVertex3f( 1.8318, 1.4958, 0 );
/*15*/ glVertex3f( 1.8244, 1.4897, 0 );
/*16*/ glVertex3f( 1.8171, 1.4835, 0 );
/*17*/ glVertex3f( 1.8099, 1.4771, 0 );
/*18*/ glVertex3f( 1.8028, 1.4706, 0 );
/*19*/ glVertex3f( 1.7958, 1.464, 0 );
/*20*/ glVertex3f( 1.7889, 1.4573, 0 );
/*21*/ glVertex3f( 1.7822, 1.4504, 0 );
/*22*/ glVertex3f( 1.7755, 1.4435, 0 );
/*23*/ glVertex3f( 1.769, 1.4364, 0 );
/*24*/ glVertex3f( 1.769, 1.4364, 0 );
/*25*/ glVertex3f( 2.05, 1.1554, 0 );
/*26*/ glVertex3f( 2.0609, 1.1638, 0 );
/*27*/ glVertex3f( 2.0724, 1.1715, 0 );
/*28*/ glVertex3f( 2.0845, 1.1784, 0 );


glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 17
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.7487, 1.4136, 0 );
/*2*/ glVertex3f( 1.7426, 1.4062, 0 );
/*3*/ glVertex3f( 1.7366, 1.3987, 0 );
/*4*/ glVertex3f( 1.7308, 1.391, 0 );
/*5*/ glVertex3f( 1.7251, 1.3833, 0 );
/*6*/ glVertex3f( 1.7196, 1.3754, 0 );
/*7*/ glVertex3f( 1.7143, 1.3675, 0 );
/*8*/ glVertex3f( 1.7091, 1.3594, 0 );
/*9*/ glVertex3f( 1.7041, 1.3513, 0 );
/*10*/ glVertex3f( 1.6992, 1.343, 0 );
/*11*/ glVertex3f( 1.6945, 1.3347, 0 );
/*12*/ glVertex3f( 1.6899, 1.3263, 0 );
/*13*/ glVertex3f( 1.6856, 1.3178, 0 );
/*14*/ glVertex3f( 1.6813, 1.3092, 0 );
/*15*/ glVertex3f( 1.6773, 1.3005, 0 );
/*16*/ glVertex3f( 1.6734, 1.2917, 0 );
/*17*/ glVertex3f( 1.6697, 1.2829, 0 );
/*18*/ glVertex3f( 1.6662, 1.274, 0 );
/*19*/ glVertex3f( 1.6628, 1.265, 0 );
/*20*/ glVertex3f( 1.6597, 1.256, 0 );
/*21*/ glVertex3f( 1.6567, 1.2469, 0 );
/*22*/ glVertex3f( 2.006, 1.1007, 0 );
/*23*/ glVertex3f( 2.0125, 1.1124, 0 );
/*24*/ glVertex3f( 2.0199, 1.1235, 0 );
/*25*/ glVertex3f( 2.0282, 1.1341, 0 );
/*26*/ glVertex3f( 1.7487, 1.4136, 0 );


glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 18
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.9942, 1.0726, 0 );
/*2*/ glVertex3f( 1.6498, 1.2167, 0 );
/*3*/ glVertex3f( 1.6487, 1.2075, 0 );
/*4*/ glVertex3f( 1.6477, 1.1982, 0 );
/*5*/ glVertex3f( 1.6469, 1.189, 0 );
/*6*/ glVertex3f( 1.6462, 1.1797, 0 );
/*7*/ glVertex3f( 1.6457, 1.1705, 0 );
/*8*/ glVertex3f( 1.6453, 1.1612, 0 );
/*9*/ glVertex3f( 1.645, 1.152, 0 );
/*10*/ glVertex3f( 1.6449, 1.1427, 0 );
/*11*/ glVertex3f( 1.6449, 1.1334, 0 );
/*12*/ glVertex3f( 1.645, 1.1242, 0 );
/*13*/ glVertex3f( 1.6453, 1.1149, 0 );
/*14*/ glVertex3f( 1.6458, 1.1057, 0 );
/*15*/ glVertex3f( 1.6464, 1.0964, 0 );
/*16*/ glVertex3f( 1.6471, 1.0872, 0 );
/*17*/ glVertex3f( 1.6479, 1.078, 0 );
/*18*/ glVertex3f( 1.6489, 1.0688, 0 );
/*19*/ glVertex3f( 1.6501, 1.0596, 0 );
/*20*/ glVertex3f( 1.6514, 1.0504, 0 );
/*21*/ glVertex3f( 1.6528, 1.0412, 0 );
/*22*/ glVertex3f( 1.6544, 1.0321, 0 );
/*23*/ glVertex3f( 1.9861, 1.0321, 0 );
/*24*/ glVertex3f( 1.9878, 1.0458, 0 );
/*25*/ glVertex3f( 1.9906, 1.0593, 0 );
/*26*/ glVertex3f( 1.9942, 1.0726, 0 );


glEnd();

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 19
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 1.9865, 1.0019, 0 );
/*2*/ glVertex3f( 1.6632, 1.0019, 0 );
/*3*/ glVertex3f( 1.6668, 0.993, 0 );
/*4*/ glVertex3f( 1.6704, 0.9841, 0 );
/*5*/ glVertex3f( 1.6742, 0.9752, 0 );
/*6*/ glVertex3f( 1.678, 0.9664, 0 );
/*7*/ glVertex3f( 1.682, 0.9577, 0 );
/*8*/ glVertex3f( 1.6862, 0.949, 0 );
/*9*/ glVertex3f( 1.6904, 0.9404, 0 );
/*10*/ glVertex3f( 1.6947, 0.9319, 0 );
/*11*/ glVertex3f( 1.6992, 0.9234, 0 );
/*12*/ glVertex3f( 1.7038, 0.9149, 0 );
/*13*/ glVertex3f( 1.7085, 0.9066, 0 );
/*14*/ glVertex3f( 1.7133, 0.8982, 0 );
/*15*/ glVertex3f( 1.7182, 0.89, 0 );
/*16*/ glVertex3f( 1.7232, 0.8818, 0 );
/*17*/ glVertex3f( 1.7283, 0.8737, 0 );
/*18*/ glVertex3f( 1.7335, 0.8656, 0 );
/*19*/ glVertex3f( 1.7389, 0.8577, 0 );
/*20*/ glVertex3f( 1.9942, 0.9625, 0 );
/*21*/ glVertex3f( 1.9907, 0.9755, 0 );
/*22*/ glVertex3f( 1.9881, 0.9886, 0 );
/*23*/ glVertex3f( 1.9865, 1.0019, 0 );


glEnd();

//++++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 20
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.0288, 0.9003, 0 );
/*2*/ glVertex3f( 2.0202, 0.9112, 0 );
/*3*/ glVertex3f( 2.0125, 0.9227, 0 );
/*4*/ glVertex3f( 2.0058, 0.9348, 0 );
/*5*/ glVertex3f( 1.7593, 0.8337, 0 );
/*6*/ glVertex3f( 1.7662, 0.827, 0 );
/*7*/ glVertex3f( 1.7732, 0.8203, 0 );
/*8*/ glVertex3f( 1.7803, 0.8137, 0 );
/*9*/ glVertex3f( 1.7875, 0.8073, 0 );
/*10*/ glVertex3f( 1.7948, 0.801, 0 );
/*11*/ glVertex3f( 1.8022, 0.7948, 0 );
/*12*/ glVertex3f( 1.8096, 0.7887, 0 );
/*13*/ glVertex3f( 1.8172, 0.7827, 0 );
/*14*/ glVertex3f( 1.8248, 0.7768, 0 );
/*15*/ glVertex3f( 1.8325, 0.771, 0 );
/*16*/ glVertex3f( 1.8403, 0.7653, 0 );
/*17*/ glVertex3f( 1.8482, 0.7598, 0 );
/*18*/ glVertex3f( 1.8561, 0.7543, 0 );
/*19*/ glVertex3f( 1.8642, 0.749, 0 );
/*20*/ glVertex3f( 1.8723, 0.7438, 0 );
/*21*/ glVertex3f( 2.0288, 0.9003, 0 );


glEnd();

//++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 21a
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.1875, 0.75, 0 );
/*2*/ glVertex3f( 2.1846, 0.8372, 0 );
/*3*/ glVertex3f( 2.1756, 0.8366, 0 );
/*4*/ glVertex3f( 2.1666, 0.8364, 0 );
/*5*/ glVertex3f( 2.1575, 0.8366, 0 );
/*6*/ glVertex3f( 2.1486, 0.8373, 0 );
/*7*/ glVertex3f( 2.1396, 0.8384, 0 );
/*8*/ glVertex3f( 2.1308, 0.84, 0 );
/*9*/ glVertex3f( 2.122, 0.842, 0 );
/*10*/ glVertex3f( 2.1134, 0.8444, 0 );
/*11*/ glVertex3f( 2.1049, 0.8473, 0 );
/*12*/ glVertex3f( 2.0965, 0.8506, 0 );
/*13*/ glVertex3f( 2.0882, 0.8543, 0 );
/*14*/ glVertex3f( 2.0802, 0.8585, 0 );
/*15*/ glVertex3f( 2.0723, 0.863, 0 );
/*16*/ glVertex3f( 2.0646, 0.868, 0 );
/*17*/ glVertex3f( 2.0572, 0.8734, 0 );
/*18*/ glVertex3f( 2.05, 0.8792, 0 );
/*19*/ glVertex3f( 1.8991, 0.7283, 0 );
/*20*/ glVertex3f( 1.9072, 0.7241, 0 );
/*21*/ glVertex3f( 1.9154, 0.72, 0 );
/*22*/ glVertex3f( 1.9237, 0.7161, 0 );
/*23*/ glVertex3f( 1.932, 0.7123, 0 );
/*24*/ glVertex3f( 1.9403, 0.7087, 0 );
/*25*/ glVertex3f( 1.9487, 0.7052, 0 );
/*26*/ glVertex3f( 1.9572, 0.7019, 0 );
/*27*/ glVertex3f( 1.9657, 0.6987, 0 );
/*28*/ glVertex3f( 1.9743, 0.6957, 0 );
/*29*/ glVertex3f( 1.9829, 0.6928, 0 );
/*30*/ glVertex3f( 1.9915, 0.6901, 0 );
/*31*/ glVertex3f( 2.0002, 0.6876, 0 );
/*32*/ glVertex3f( 2.009, 0.6852, 0 );
/*33*/ glVertex3f( 2.0177, 0.6829, 0 );
/*34*/ glVertex3f( 2.0265, 0.6808, 0 );
/*35*/ glVertex3f( 2.0354, 0.6789, 0 );
/*36*/ glVertex3f( 2.0442, 0.6771, 0 );
/*37*/ glVertex3f( 2.0531, 0.6754, 0 );
/*38*/ glVertex3f( 2.0621, 0.6739, 0 );
/*39*/ glVertex3f( 2.071, 0.6726, 0 );
/*40*/ glVertex3f( 2.08, 0.6715, 0 );
/*41*/ glVertex3f( 2.089, 0.6704, 0 );
/*42*/ glVertex3f( 2.098, 0.6696, 0 );
/*43*/ glVertex3f( 2.107, 0.6689, 0 );
/*44*/ glVertex3f( 2.116, 0.6684, 0 );
/*45*/ glVertex3f( 2.1251, 0.668, 0 );
/*46*/ glVertex3f( 2.1342, 0.6678, 0 );
/*47*/ glVertex3f( 2.1432, 0.6677, 0 );
/*48*/ glVertex3f( 2.1523, 0.6678, 0 );
/*49*/ glVertex3f( 2.1614, 0.668, 0 );
/*50*/ glVertex3f( 2.1705, 0.6685, 0 );
/*51*/ glVertex3f( 2.1795, 0.669, 0 );
/*52*/ glVertex3f( 2.1886, 0.6698, 0 );
/*53*/ glVertex3f( 2.1977, 0.6707, 0 );
/*54*/ glVertex3f( 2.2067, 0.6717, 0 );
/*55*/ glVertex3f( 2.2158, 0.673, 0 );
/*56*/ glVertex3f( 2.2248, 0.6744, 0 );


glEnd();

//ELEMENTO 21b
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2596, 0.7479, 0 );
/*2*/ glVertex3f( 2.2205, 0.8445, 0 );
/*3*/ glVertex3f( 2.2116, 0.842, 0 );
/*4*/ glVertex3f( 2.2027, 0.8399, 0 );
/*5*/ glVertex3f( 2.1937, 0.8384, 0 );
/*6*/ glVertex3f( 2.1846, 0.8372, 0 );
/*7*/ glVertex3f( 2.1875, 0.75, 0 );


glEnd();

//ELEMENTO 21c
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2248, 0.6744, 0 );
/*2*/ glVertex3f( 2.2243, 0.6841, 0 );
/*3*/ glVertex3f( 2.2249, 0.6936, 0 );
/*4*/ glVertex3f( 2.1875, 0.75, 0 );


glEnd();

//ELEMENTO 21d
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2249, 0.6936, 0 );
/*2*/ glVertex3f( 2.2267, 0.7029, 0 );
/*3*/ glVertex3f( 2.2296, 0.7119, 0 );
/*4*/ glVertex3f( 2.1875, 0.75, 0 );


glEnd();


//ELEMENTO 21e
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2296, 0.7119, 0 );
/*2*/ glVertex3f( 2.2337, 0.7204, 0 );
/*3*/ glVertex3f( 2.2387, 0.7283, 0 );
/*4*/ glVertex3f( 2.1875, 0.75, 0 );
/*5*/ glVertex3f( 2.2387, 0.7283, 0 );
/*6*/ glVertex3f( 2.2447, 0.7356, 0 );
/*7*/ glVertex3f( 2.2517, 0.7422, 0 );
/*8*/ glVertex3f( 2.2596, 0.7479, 0 );
/*9*/ glVertex3f( 2.1875, 0.75, 0 );


glEnd();


//+++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 22
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.2481, 0.8559, 0 );
/*2*/ glVertex3f( 2.2873, 0.7586, 0 );
/*3*/ glVertex3f( 2.2974, 0.7596, 0 );
/*4*/ glVertex3f( 2.3074, 0.7593, 0 );
/*5*/ glVertex3f( 2.3171, 0.7577, 0 );
/*6*/ glVertex3f( 2.3265, 0.7548, 0 );
/*7*/ glVertex3f( 2.3354, 0.7508, 0 );
/*8*/ glVertex3f( 2.3437, 0.7456, 0 );
/*9*/ glVertex3f( 2.3513, 0.7394, 0 );
/*10*/ glVertex3f( 2.3581, 0.7321, 0 );
/*11*/ glVertex3f( 2.3641, 0.7239, 0 );
/*12*/ glVertex3f( 2.3741, 0.7287, 0 );
/*13*/ glVertex3f( 2.3841, 0.7336, 0 );
/*14*/ glVertex3f( 2.3941, 0.7386, 0 );
/*15*/ glVertex3f( 2.404, 0.7437, 0 );
/*16*/ glVertex3f( 2.4138, 0.7488, 0 );
/*17*/ glVertex3f( 2.2835, 0.8793, 0 );
/*18*/ glVertex3f( 2.2723, 0.8705, 0 );
/*19*/ glVertex3f( 2.2604, 0.8627, 0 );
/*20*/ glVertex3f( 2.2481, 0.8559, 0 );


glEnd();


//++++++++++++++++++++++++++++++++++++++++++++++++++++


//ELEMENTO 23
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.717, 0.9627, 0 );
/*2*/ glVertex3f( 2.7094, 0.9713, 0 );
/*3*/ glVertex3f( 2.7033, 0.9809, 0 );
/*4*/ glVertex3f( 2.6986, 0.9914, 0 );
/*5*/ glVertex3f( 2.6955, 1.0025, 0 );
/*6*/ glVertex3f( 2.3467, 1.0025, 0 );
/*7*/ glVertex3f( 2.3456, 0.9924, 0 );
/*8*/ glVertex3f( 2.3439, 0.9823, 0 );
/*9*/ glVertex3f( 2.3417, 0.9723, 0 );
/*10*/ glVertex3f( 2.3389, 0.9626, 0 );
/*11*/ glVertex3f( 2.3355, 0.953, 0 );
/*12*/ glVertex3f( 2.3316, 0.9436, 0 );
/*13*/ glVertex3f( 2.3272, 0.9345, 0 );
/*14*/ glVertex3f( 2.3223, 0.9256, 0 );
/*15*/ glVertex3f( 2.3169, 0.917, 0 );
/*16*/ glVertex3f( 2.311, 0.9087, 0 );
/*17*/ glVertex3f( 2.3047, 0.9007, 0 );
/*18*/ glVertex3f( 2.4414, 0.7639, 0 );
/*19*/ glVertex3f( 2.4495, 0.7684, 0 );
/*20*/ glVertex3f( 2.4575, 0.773, 0 );
/*21*/ glVertex3f( 2.4655, 0.7776, 0 );
/*22*/ glVertex3f( 2.4734, 0.7822, 0 );
/*23*/ glVertex3f( 2.4813, 0.7869, 0 );
/*24*/ glVertex3f( 2.4892, 0.7916, 0 );
/*25*/ glVertex3f( 2.4971, 0.7964, 0 );
/*26*/ glVertex3f( 2.5049, 0.8013, 0 );
/*27*/ glVertex3f( 2.5127, 0.8062, 0 );
/*28*/ glVertex3f( 2.5205, 0.8111, 0 );
/*29*/ glVertex3f( 2.5282, 0.8161, 0 );
/*30*/ glVertex3f( 2.5359, 0.8212, 0 );
/*31*/ glVertex3f( 2.5435, 0.8263, 0 );
/*32*/ glVertex3f( 2.5512, 0.8314, 0 );
/*33*/ glVertex3f( 2.5588, 0.8366, 0 );
/*34*/ glVertex3f( 2.5663, 0.8418, 0 );
/*35*/ glVertex3f( 2.5738, 0.8471, 0 );
/*36*/ glVertex3f( 2.5813, 0.8524, 0 );
/*37*/ glVertex3f( 2.5888, 0.8578, 0 );
/*38*/ glVertex3f( 2.5962, 0.8633, 0 );
/*39*/ glVertex3f( 2.6036, 0.8687, 0 );
/*40*/ glVertex3f( 2.611, 0.8743, 0 );
/*41*/ glVertex3f( 2.6183, 0.8798, 0 );
/*42*/ glVertex3f( 2.6256, 0.8855, 0 );
/*43*/ glVertex3f( 2.6328, 0.8911, 0 );
/*44*/ glVertex3f( 2.64, 0.8968, 0 );
/*45*/ glVertex3f( 2.6472, 0.9026, 0 );
/*46*/ glVertex3f( 2.6544, 0.9084, 0 );
/*47*/ glVertex3f( 2.6615, 0.9143, 0 );
/*48*/ glVertex3f( 2.6685, 0.9202, 0 );
/*49*/ glVertex3f( 2.6756, 0.9261, 0 );
/*50*/ glVertex3f( 2.6826, 0.9321, 0 );
/*51*/ glVertex3f( 2.6895, 0.9381, 0 );
/*52*/ glVertex3f( 2.6964, 0.9442, 0 );
/*53*/ glVertex3f( 2.7033, 0.9503, 0 );
/*54*/ glVertex3f( 2.7102, 0.9565, 0 );
/*55*/ glVertex3f( 2.717, 0.9627, 0 );
/*56*/ glVertex3f( 2.717, 0.9627, 0 );

glEnd();


//+++++++++++++++++++++++++++++++++++++++++++++++++++++

//ELEMENTO 24
glBegin(GL_POLYGON);
/*1*/ glVertex3f( 2.6955, 1.037, 0 );
/*2*/ glVertex3f( 2.682, 1.0915, 0 );
/*3*/ glVertex3f( 2.71, 1.098, 0 );
/*4*/ glVertex3f( 2.733, 1.073, 0 );
/*5*/ glVertex3f( 2.701, 1.177, 0 );
/*6*/ glVertex3f( 2.337, 1.08, 0 );
/*7*/ glVertex3f( 2.3467, 1.037, 0 );

glEnd();


//=============================================================================================================================

glPopMatrix();
glFlush();
}

//===============================================================================================================================


void reshape(int w, int h)
{
if(h<=0) //previne divisão por zero
h = 1;

glViewport(0, 0, w, h); //Ajusta o campo de visão
glMatrixMode(GL_PROJECTION); //Muda para a matriz de Projeção
glLoadIdentity();
gluPerspective(20.0, w/h, 1.0, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

//===============================================================================================================================


void keyboard(unsigned char key, int x, int y)
{
switch (key){

case'e':
case'E':
currentGenMode = GL_EYE_LINEAR;
currentPlane = GL_EYE_PLANE;
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode);
glTexGenfv(GL_S, currentPlane, currentCoeff);
glutPostRedisplay();
break;
case'o':
case'O':
currentGenMode = GL_OBJECT_LINEAR;
currentPlane = GL_OBJECT_PLANE;
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode);
glTexGenfv(GL_S, currentPlane, currentCoeff);
glutPostRedisplay();
break;
case's':
case'S':
currentCoeff = slanted;
glTexGenfv(GL_S, currentPlane, currentCoeff);
glutPostRedisplay();
break;
case'x':
case'X':
currentCoeff = xequalzero;
glTexGenfv(GL_S, currentPlane, currentCoeff);
glutPostRedisplay();
break;
case 27:
exit(0);
break;
default:
break;
}
}

//===============================================================================================================================

int main(int argc, char** argv)
{
glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize (500, 500);

glutInitWindowPosition (100, 100);

glutCreateWindow ("TEXTURA");

init ();

glutDisplayFunc(display);

glutReshapeFunc(reshape);

glutKeyboardFunc(keyboard);

glutMainLoop();

return 0;
}

A Figura 1 mostra o resultado obtido com a aplicação da textura.

Figura 1. Textura no logotipo da Unicamp.

//================================================================================================================================================================================================

Código    Código(Unit)

Aplicativo    Textura.exe(zippado)

Arquivo    Textura(zip)

//-------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Pg Inicial    Visão Geral