Sie sind auf Seite 1von 4

{\rtf\ansi{\fonttbl{\f1\fmodern Courier;}{\f2\fnil CSD12;}}{\colortbl\red0\green

0\blue0;}
{\fs20\f1\cf0 1 /*\line 2 MainFiguras_comp copy.cpp\line 3 Examen Final, R
obot Humanoide - Computacion Grafica FI unam www.openboxer.260mb.com \line 4 "
share your miMainFiguras_comp copy.cppnd!"*/\line 5 \line 6 //#include <gl/g
l.h>
// The GL Header File\line 7 //#include <windows.h> //Solo para Wind
ows\line 8 //#include <GL/glut.h> // The GL Utility Toolkit (Glut) Header\li
ne 9 //#include <stdlib.h>
// Descomentar para Linux\line 10 //#include
<stdio.h>\line 11 //#include <string.h>\line 12 //#include <malloc.h>
//
Solo para Windows\line 13 \line 14 #include "texture.h"\line 15 #include "fig
uras.h"\line 16 #include "Camera.h"\line 17 \line 18 //NEW//////////////////N
EW//////////////////NEW//////////////////NEW////////////////\line 19 CCamera ob
jCamera; \line 20 \line 21 GLfloat g_lookupdown = 0.0f;
// Look Position In
The Z-Axis (NEW) \line 22 //NEW//////////////////NEW//////////////////NEW/////
/////////////NEW////////////////\line 23 \line 24 int font=(int)GLUT_BITMAP_HE
LVETICA_18;\line 25 \line 26 //Otras opciones son:\line 27 /*GLUT_BITMAP_8_BY
_13\line 28 GLUT_BITMAP_9_BY_15\line 29 GLUT_BITMAP_TIMES_ROMAN_10\line 30 GL
UT_BITMAP_TIMES_ROMAN_24\line 31 GLUT_BITMAP_HELVETICA_10\line 32 GLUT_BITMAP_
HELVETICA_12\line 33 GLUT_BITMAP_HELVETICA_18*/\line 34 \line 35 \line 36 \l
ine 37 GLUquadricObj *quadratic;
// Storage For Our Quadratic Objects
( NEW )\line 38 \line 39 \line 40 //GLfloat Diffuse[]= \'7b 1.0f, 1.0f, 1.0f,
1.0f \'7d;
// Diffuse Light Values\line 41 GLfloat Diffuse[]= \'7b
0.5f, 0.5f, 0.5f, 1.0f \'7d;
// Diffuse Light Values\line 42 GLfloat
Specular[] = \'7b 1.0, 1.0, 1.0, 1.0 \'7d;
// Specular Light Values\lin
e 43 GLfloat Position[]= \'7b 0.0f, 7.0f, -5.0f, 0.0f \'7d;
// Light Pos
ition\line 44 GLfloat Position2[]= \'7b 0.0f, 0.0f, -5.0f, 1.0f \'7d;
//
Light Position\line 45 \line 46 GLfloat m_dif1[] = \'7b 0.0f, 0.2f, 1.0f, 1.0
f \'7d;
// Diffuse Light Values\line 47 GLfloat m_spec1[] = \'7b 0.0,
0.0, 0.0, 1.0 \'7d;
// Specular Light Values\line 48 GLfloat m_amb1[
] = \'7b 0.0, 0.0, 0.0, 1.0 \'7d;
// Ambiental Light Values\line 49
GLfloat m_s1[] = \'7b18\'7d;\line 50 \line 51 GLfloat m_dif2[] = \'7b 0.8f, 0.
2f, 0.0f, 1.0f \'7d;
// Diffuse Light Values\line 52 GLfloat m_spec2[
] = \'7b 0.0, 0.0, 0.0, 1.0 \'7d;
// Specular Light Values\line 53 GL
float m_amb2[] = \'7b 0.0, 0.0, 0.0, 1.0 \'7d;
// Ambiental Light Val
ues\line 54 GLfloat m_s2[] = \'7b22\'7d;\line 55 \line 56 CTexture text1;\lin
e 57 CTexture flecha;\line 58 \line 59 CFiguras fig1;\line 60 CFiguras fig2;
\line 61 \line 62 //Movimiento \line 63 float fbrazo_izq = 0.0;\line 64 floa
t fbrazo_der = 0.0;\line 65 \line 66 void InitGL ( GLvoid )
// Inicializam
os parametros\line 67 \'7b\line 68
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// Negro de fondo \line 69 \line 70
glEnable(GL_TEXTURE_2D);\line
71 \line 72
glShadeModel (GL_SMOOTH);\line 73
//glLightfv(GL_LIGHT0, GL_
SPOT_DIRECTION, Position2);\line 74
glEnable(GL_LIGHTING);\line 75
glEna
ble(GL_LIGHT0);\line 76 \line 77
glEnable ( GL_COLOR_MATERIAL );\line 78
//glEnable(GL_CULL_FACE);\line 79
//glCullFace(GL_BACK);\line 80
//glP
olygonMode(GL_BACK, GL_LINE);\line 81 \line 82
glClearDepth(1.0f);
// Configuramos Depth Buffer\line 83
glEnable(GL_DEPTH_TEST
);
// Habilitamos Depth Testing\line 84
glDepthFunc(GL_L
EQUAL);
// Tipo de Depth Testing a realizar\line 85
glH
int(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);\line 86 \line 87
glEnable(G
L_AUTO_NORMAL);\line 88
glEnable(GL_NORMALIZE);\line 89
\line 90
t
ext1.LoadBMP("Texturas/01.bmp");\line 91
text1.BuildGLTexture();\line 92
text1.ReleaseImage();\line 93 \line 94
flecha.LoadTGA("Texturas/arrow.tga"
);\line 95
flecha.BuildGLTexture();\line 96
flecha.ReleaseImage();\line
97 \line 98
objCamera.Position_Camera(0,2.5f,7, 0,2.5f,0, 0, 1, 0);\line 9
9 \line 100 \'7d\line 101 \line 102 void pintaTexto(float x, float y, float z, v
oid *font,char *string)\line 103 \'7b\line 104 \line 105 char *c;
//Alma
cena los caracteres a escribir\line 106 glRasterPos3f(x, y, z); //Posicion ap
artir del centro de la ventana\line 107 //glWindowPos2i(150,100);\line 108 f
or (c=string; *c != '\'5c0'; c++) //Condicion de fin de cadena\line 109 \'7b\l
ine 110
glutBitmapCharacter(font, *c); //imprime\line 111 \'7d\line 112 \'

7d\line 113 \line 114 \line 115 void display ( void ) // Creamos la funcion do
nde se dibuja\line 116 \'7b\line 117
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_
BUFFER_BIT);\line 118
\line 119
glLoadIdentity();\line 120 \line 121
gl
PushMatrix(); \line 122
glRotatef(g_lookupdown,1.0f,0,0);\line 123 \line 12
4
gluLookAt( objCamera.mPos.x, objCamera.mPos.y, objCamera.mPos.z, \li
ne 125
objCamera.mView.x, objCamera.mView.y, objCamera.mView.z, \
line 126
objCamera.mUp.x, objCamera.mUp.y, objCamera.mUp.z);\
line 127
\line 128 \line 129
glPushMatrix();
\line 130
gl
PushMatrix(); //Creamos cielo\line 131
glColor3f(1.0, 1.0, 1.0);\lin
e 132
glDisable(GL_LIGHTING);\line 133
glTranslatef(0,60
,0);\line 134
fig1.skybox(130.0, 130.0, 130.0,text1.GLindex);\line 1
35
glEnable(GL_LIGHTING);\line 136
glPopMatrix();\line 137
\line 138
glPushMatrix();\line 139
glDisable(GL
_LIGHTING);\line 140
glLineWidth(2.0);\line 141
glBegin(
GL_LINES); //Ejes de Referencia\line 142
glColor3f(1.0, 0.0, 0.0)
;\line 143
glVertex3f(0.0, 0.0, 0.0);\line 144
glV
ertex3f(80.0, 0.0, 0.0);\line 145
glColor3f(0.0, 1.0, 0.0);\line
146
glVertex3f(0.0, 0.0, 0.0);\line 147
glVertex3f
(0.0, 80.0, 0.0);\line 148
glColor3f(0.0, 0.0, 1.0);\line 149
glVertex3f(0.0, 0.0, 0.0);\line 150
glVertex3f(0.0, 0
.0, 80.0);\line 151
glEnd();\line 152
glEnable(GL_LIGHTI
NG);\line 153
\line 154
glPopMatrix();\line 155
\line
156
//Poner Figuras Aqui\line 157
\line 158
glTransl
atef(0.0, 3.5, 0.0);\line 159
glColor3f(0.8, 0.0, 0.2);\line 160
fig2.prisma(4.0, 6.0, 2.0, 0.0); //PPecho\line 161 \line 162 \line 163
glPushMatrix();\line 164
glColor3f(0.2, 0.0, 0.2);\line 165
glTranslatef(0.0, 2.0, 0.0);\line 166
fig2.cilindro(1.0, 0.5
, 15, 0); //CCuello\line 167 \line 168
glColor3f(0.8, 0.0, 0.2);\li
ne 169
glTranslatef(0.0, 1.75, 0.0);\line 170
fig2.esfer
a(1.5, 15, 15, 0); //CCabeza\line 171
glPopMatrix();\line 172 \line 17
3
glPushMatrix();\line 174
glColor3f(0.2, 0.0, 0.2);\line
175
glTranslatef(3.75, 1.25, 0);\line 176
fig2.esfera(
0.75, 15, 15, 0);\line 177
glRotatef(-45, 0, 1, 0);\line 178
glRotatef(fbrazo_izq, 0, 0, 1);\line 179 \line 180
glPushMatr
ix();\line181
glColor3f(0.8, 0.0, 0.2);\line 182
glTran
slatef(2.75, 0, 0);\line 183
fig2.prisma(1.5, 4, 0.75, 0);\line 184
glPopMatrix();\line 185
glPopMatrix();\line 186
\line 187
//Brazo Derecho \line 188
glPushMatrix();\line 189
glColor3f(0.2, 0.0, 0.2);\line 190
glTranslatef(-3.75,
1.25, 0);\line 191
fig2.esfera(0.75, 15, 15, 0);\line 192
glRotatef(-135, 0, 1, 0);\line 193
glRotatef(fbrazo_der, 0, 0,
1);\line 194
glPushMatrix();\line 195
glColor3f(0.8,
0.0, 0.2);\line 196
glTranslatef(2.75, 0, 0);\line 197
fig2.prisma(1.5, 4, 0.75, 0);\line 198
glPopMatrix();\line 1
99
glPopMatrix();\line 200
\line201
//Cintura \line 202
glPushMatrix();\line 203 \line 204
glColor3f(0.0, 0.2, 0.4
);\line 205
glTranslatef(0.0,-2.25, 0.0);\line 206
fig2.
prisma(0.5,6.0,2.0,0);\line 207
//Pierna derecha \line 208
glPush
Matrix();\line 209
glColor3f(0.4, 0.0, 0.2);\line 210
g
lTranslatef(-2.0,-1.75, 0.0);\line 211
fig2.prisma(3.0,2.0,2.0,0);\l
ine 212
//pie derecho \line 213
glPushMatrix();\line 214
glColor3f(0.8, 0.0, 0.2);\line 215
glTranslatef(-1.0,-2, 0
.0);\line 216
fig2.prisma(1.0,4.0,2.0,0);\line 217
glPopM
atrix();\line 218
glPopMatrix();\line 219 \line 220 \line 221
//P
ierna izquierda \line 222
glPushMatrix();\line 223
glColor
3f(0.4, 0.0, 0.2);\line 224
glTranslatef(2.0,-1.75, 0.0);\line 225
fig2.prisma(3.0,2.0,2.0,0);\line 226
//Pie izquierdo \line 227
glPushMatrix();\line 228
glColor3f(0.8, 0.0, 0.2);\li
ne 229
glTranslatef(1.0,-2, 0.0);\line 230
fig2.prisma(1
.0,4.0,2.0,0);\line 231
glPopMatrix();\line 232
glPopMatrix(

);\line 233 \line 234 \line 235


glPopMatrix();\line 236 \line 237 \line
238
\line 239
\line 240 \line 241 \line 242
glPopMatrix();
\line 243
glPopMatrix();\line 244 \line 245
glDisable(GL_TEXTURE_2D);\line
246
glDisable(GL_LIGHTING);\line 247
glDisable(GL_DEPTH_TEST);\line 248
glColor3f(1.0,0.0,0.0);\line 249
pintaTexto(-0.25, 0.23,-0.25,(void *
)font,"Figuras");\line 250
pintaTexto(-0.25, 0.21,-0.25,(void *)font,"Crea
r modelos basicos");\line 251
glColor3f(1.0,1.0,1.0);\line 252
glEnable
(GL_DEPTH_TEST);\line 253
glEnable(GL_LIGHTING);\line 254
glEnable(GL_TEXT
URE_2D);\line 255 \line 256
glutSwapBuffers ( );\line 257 \line 258 \'7d\line
259 \line 260 void animacion()\line 261 \'7b\line 262
/*fig2.text_izq-= 0.00
1;\line 263
fig2.text_der-= 0.001;\line 264
if(fig2.text_izq<-1)\line 265
fig2.text_izq=0;\line 266
if(fig2.text_der<0)\line 267
fig2.text_
der=1;*/\line 268
glutPostRedisplay();\line 269 \'7d\line 270 \line 271 void
reshape ( int width , int height ) // Creamos funcion Reshape\line 272 \'7b\li
ne 273 if (height==0)
// Prevenir division entre c
ero\line 274
\'7b\line 275
height=1;\line 276
\'7d\line 277 \line 27
8
glViewport(0,0,width,height); \line 279 \line 280
glMatrixMode(GL_PROJEC
TION);
// Seleccionamos Projection Matrix\line 281
glLoadIden
tity();\line 282 \line 283
// Tipo de Vista\line 284
\line 285
glFrustu
m (-0.1, 0.1,-0.1, 0.1, 0.1, 170.0);\line 286 \line 287
glMatrixMode(GL_MODEL
VIEW);
// Seleccionamos Modelview Matrix\line 288
glLoadI
dentity();\line 289 \'7d\line 290 \line 291 void keyboard ( unsigned char key, i
nt x, int y ) // Create Keyboard Function\line 292 \'7b\line 293
switch ( ke
y ) \'7b\line 294
case 'w': //Movimientos de camara\line 295
case
'W':\line 296
objCamera.Move_Camera( CAMERASPEED+0.2 );\line 297
break;\line 298 \line 299
case 's':\line 300
case 'S':\line 301
objCamera.Move_Camera(-(CAMERASPEED+0.2));\line 302
break;\line
303 \line 304
case 'a':\line 305
case 'A':\line 306
objCam
era.Strafe_Camera(-(CAMERASPEED+0.4));\line 307
break;\line 308 \line 3
09
case 'd':\line 310
case 'D':\line 311
objCamera.Strafe_C
amera( CAMERASPEED+0.4 );\line 312
break;\line 313 \line 314
case
'r':
//\line 315
fbrazo_izq ++;\line 316
break;\line
317 \line 318
case 'R':
//\line 319
fbrazo_izq --;\line 3
20
break;\line 321 \line 322
case 'f':
//\line 323
cas
e 'F':\line 324
\line 325
break;\line326 \line 327
case
27:
// Cuando Esc es presionado...\line 328
exit ( 0 ); // Sal
imos del programa\line 329
break;
\line 330
default:
// Cualquier otra\line 331
break;\line 332 \'7d\line 333 \line 334
glutPostRedisplay();\line 335 \'7d\line 336 \line 337 void arrow_keys ( int a_
keys, int x, int y ) // Funcion para manejo de teclas especiales (arrow keys)\l
ine 338 \'7b\line 339 switch ( a_keys ) \'7b\line 340
case GLUT_KEY_PAGE_UP
:\line 341
//pos_camY -= 0.5f;\line 342
//pos_cam.y += 0.5f;\line 34
3
//eye_cam.y += 0.5f;\line 344
objCamera.UpDown_Camera(CAMERASPEED)
;\line 345
break;\line 346 \line 347
case GLUT_KEY_PAGE_DOWN:\line 348
//pos_camY += 0.5f;\line 349
//pos_cam.y -= 0.5f;\line 350
//e
ye_cam.y -= 0.5f;\line 351
objCamera.UpDown_Camera(-CAMERASPEED);\line 352
break;\line 353 \line 354
case GLUT_KEY_UP:
// Presionamos tecla
ARRIBA...\line 355
g_lookupdown -= 1.0f;\line 356
break;\line 357 \l
ine358
case GLUT_KEY_DOWN:
// Presionamos tecla ABAJO...\line
359
g_lookupdown += 1.0f;\line 360
break;\line 361 \line 362
case
GLUT_KEY_LEFT:\line 363
objCamera.Rotate_View(-CAMERASPEED);\line 364
break;\line 365 \line 366
case GLUT_KEY_RIGHT:\line 367
objCamera.Ro
tate_View( CAMERASPEED);\line 368
break;\line 369 \line 370
default:\l
ine 371
break;\line 372 \'7d\line 373 glutPostRedisplay();\line 374 \'
7d\line 375 \line 376 \line 377 int main ( int argc, char** argv ) // Main Fun
ction\line 378 \'7b\line379 glutInit
(&argc, argv); // Inicializamo
s OpenGL\line 380 glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); /
/ Display Mode (Clores RGB y alpha | Buffer Doble )\line 381 glutInitWindowSiz
e (500, 500); // Tama\u210\'f1o de la Ventana\line 382 glutInitWindowPositi
on (0, 0); //Posicion de la Ventana\line 383 glutCreateWindow
("Figura Exam

en"); // Nombre de la Ventana\line 384 \line 385 //glutFullScreen


( );
// Full Screen\line 386 InitGL ();
// Parametros inicial
es de la aplicacion\line 387 glutDisplayFunc
( display ); //Indicamos a G
lut funci\u219\'f3n de dibujo\line 388 glutReshapeFunc
( reshape ); //Ind
icamos a Glut funci\u219\'f3n en caso de cambio de tamano\line 389 glutKeyboar
dFunc
( keyboard ); //Indicamos a Glut funci\u219\'f3n de manejo de teclado\l
ine 390 glutSpecialFunc
( arrow_keys ); //Otras\line 391 glutIdleFunc
( animacion );\line 392 glutMainLoop
( );
// \line 393 \li
ne 394 return 0;\line 395 \'7d\line 396 }}

Das könnte Ihnen auch gefallen