Sei sulla pagina 1di 27

Benemrita Universidad Autnoma de Puebla

Facultad de Ciencias de la Computacin


Proyecto Final de Graficacin en OpenGL y C++
Manuel Prez Garrido
Para compilar:
g++main.cppomainlGLlGLUlglut

Para ejecutar:
./main

Codigo:

/*
*File:main.cpp
*Author:ManuelPerezGarrido
*
*Createdon07denoviembrede2017,07:12PM
*/
#include<GL/gl.h>
#include<GL/glu.h>
#include<GL/glut.h>
#include<iostream>
usingstd::cerr;
usingstd::cout;
usingstd::endl;
#include<iomanip>
usingstd::fixed;
usingstd::setprecision;
usingstd::setw;
#include<cmath>
usingstd::sqrt;
#include<cstdlib>
usingstd::rand;
usingstd::srand;
#include<ctime>
usingstd::time;

classRenderState
{
public:
floatmouseX,mouseY,cameraX,cameraY;
boolmouseLeftDown,mouseRightDown;

RenderState()
{
this>mouseX=0;
this>mouseY=0;
this>mouseLeftDown=false;
this>mouseRightDown=false;
this>cameraX=0.0f;
this>cameraY=0.0f;
}
};
RenderStaters;

voidilumination()
{
glMatrixMode(GL_MODELVIEW);
gluLookAt(10,1,10,0,0,0,5,1,5);
glMatrixMode(GL_PROJECTION);
gluPerspective(35,1,1,20);
GLfloatlight_position[]={1.0,1.0,1.0,0.0};
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
glShadeModel(GL_SMOOTH);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT,GL_DIFFUSE);
glEnable(GL_DEPTH_TEST);
}

voidinit(void)
{
glClearColor(0.894,0.941,1,1.0);
ilumination();
RenderState*rsp=newRenderState();
rs=*rsp;
}

voidexit()
{
delete&rs;
}

voidline(floatx1=0,floaty1=0,floatz1=0,
floatx2=0,floaty2=0,floatz2=0)
{
glBegin(GL_LINES);
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glEnd();
}

voidlogo()
{
glPushMatrix();
glScalef(0.02,0.02,0.02);
glTranslatef(100,100,25);
glColor3f(0,0,0);
//
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(21.758,250.887,0);
glVertex3f(65.771,250.887,0);
glVertex3f(65.771,214.718,0);
glVertex3f(21.758,214.718,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(67.857,250.895,0);
glVertex3f(67.857,214.722,0);
glVertex3f(190.793,214.730,0);
glVertex3f(190.793,250.895,0);
glEnd();

glPushMatrix();
glTranslated(0,0,0.5);
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(39.304,227.555,0);
glVertex3f(39.280,227.146,0);
glVertex3f(39.184,226.666,0);
glVertex3f(38.968,226.185,0);
glVertex3f(38.703,225.608,0);
glVertex3f(38.174,224.983,0);
glVertex3f(37.645,224.550,0);
glVertex3f(37.020,224.166,0);
glVertex3f(36.155,223.925,0);
glVertex3f(35.362,223.853,0);
glVertex3f(34.713,223.925,0);
glVertex3f(34.208,224.093,0);
glVertex3f(33.607,224.334,0);
glVertex3f(33.078,224.743,0);
glVertex3f(32.693,225.103,0);
glVertex3f(32.309,225.584,0);
glVertex3f(32.020,226.065,0);
glVertex3f(31.852,226.497,0);
glVertex3f(31.684,227.074,0);
glVertex3f(30.963,226.834,0);
glVertex3f(30.073,226.882,0);
glVertex3f(29.015,227.195,0);
glVertex3f(28.174,227.796,0);
glVertex3f(27.429,228.733,0);
glVertex3f(26.900,229.767,0);
glVertex3f(26.708,230.849,0);
glVertex3f(26.900,232.123,0);
glVertex3f(27.357,233.276,0);
glVertex3f(27.958,234.166,0);
glVertex3f(28.727,234.791,0);
glVertex3f(29.561,235.200,0);
glVertex3f(30.291,235.322,0);
glVertex3f(31.004,235.290,0);
glVertex3f(31.756,235.200,0);
glVertex3f(31.828,235.320,0);
glVertex3f(31.948,235.921,0);
glVertex3f(32.309,236.498,0);
glVertex3f(32.765,237.099,0);
glVertex3f(33.439,237.772,0);
glVertex3f(34.352,238.204,0);
glVertex3f(35.410,238.325,0);
glVertex3f(36.275,238.253,0);
glVertex3f(37.044,238.036,0);
glVertex3f(37.958,237.435,0);
glVertex3f(38.439,236.858,0);
glVertex3f(38.848,236.257,0);
glVertex3f(39.208,235.440,0);
glVertex3f(39.328,234.767,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(39.334,233.013,0);
glVertex3f(61.330,233.013,0);
glVertex3f(61.330,229.196,0);
glVertex3f(39.334,229.196,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(54.140,229.196,0);
glVertex3f(59.596,229.196,0);
glVertex3f(59.596,224.131,0);
glVertex3f(57.641,224.131,0);
glVertex3f(57.607,226.707,0);
glVertex3f(56.018,226.707,0);
glVertex3f(56.018,224.131,0);
glVertex3f(55.984,224.131,0);
glVertex3f(54.140,224.131,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(99.270,240.441,0);
glVertex3f(98.930,240.934,0);
glVertex3f(98.624,241.274,0);
glVertex3f(98.233,241.682,0);
glVertex3f(97.587,242.192,0);
glVertex3f(97.094,242.634,0);
glVertex3f(96.414,242.042,0);
glVertex3f(95.751,243.382,0);
glVertex3f(94.833,243.806,0);
glVertex3f(94.273,243.993,0);
glVertex3f(93.474,244.214,0);
glVertex3f(92.726,244.401,0);
glVertex3f(91.978,244.452,0);
glVertex3f(91.162,244.452,0);
glVertex3f(90.159,244.469,0);
glVertex3f(89.615,244.418,0);
glVertex3f(89.122,244.316,0);
glVertex3f(88.510,244.180,0);
glVertex3f(87.983,244.010,0);
glVertex3f(87.388,243.755,0);
glVertex3f(86.691,243.484,0);
glVertex3f(85.994,243.127,0);
glVertex3f(85.297,242.719,0);
glVertex3f(84.651,242.175,0);
glVertex3f(84.159,241.750,0);
glVertex3f(83.649,241.274,0);
glVertex3f(83.207,240.730,0);
glVertex3f(82.714,240.101,0);
glVertex3f(82.306,239.523,0);
glVertex3f(81.864,238.826,0);
glVertex3f(81.507,238.214,0);
glVertex3f(81.218,237.551,0);
glVertex3f(81.014,236.990,0);
glVertex3f(80.861,236.446,0);
glVertex3f(80.691,235.818,0);
glVertex3f(80.572,235.069,0);
glVertex3f(80.487,234.304,0);
glVertex3f(80.470,233.777,0);
glVertex3f(80.453,233.013,0);
glVertex3f(80.470,232.265,0);
glVertex3f(80.470,231.398,0);
glVertex3f(80.606,230.463,0);
glVertex3f(80.776,229.630,0);
glVertex3f(80.997,228.831,0);
glVertex3f(81.252,228.151,0);
glVertex3f(81.626,227.505,0);
glVertex3f(82.017,226.876,0);
glVertex3f(82.374,226.298,0);
glVertex3f(82.867,225.618,0);
glVertex3f(80.309,225.125,0);
glVertex3f(83.819,224.598,0);
glVertex3f(84.244,224.224,0);
glVertex3f(84.804,223.748,0);
glVertex3f(85.365,223.375,0);
glVertex3f(85.892,223.086,0);
glVertex3f(86.487,222.763,0);
glVertex3f(87.082,222.525,0);
glVertex3f(87.813,222.219,0);
glVertex3f(88.663,221.998,0);
glVertex3f(89.632,221.828,0);
glVertex3f(90.499,221.743,0);
glVertex3f(91.349,221.692,0);
glVertex3f(92.539,221.777,0);
glVertex3f(93.780,221.998,0);
glVertex3f(94.782,222.287,0);
glVertex3f(95.751,222.780,0);
glVertex3f(96.771,223.426,0);
glVertex3f(97.502,223.969,0);
glVertex3f(98.148,224.479,0);
glVertex3f(98.828,225.074,0);
glVertex3f(99.219,225.584,0);
glVertex3f(96.720,228.151,0);
glVertex3f(96.431,227.658,0);
glVertex3f(95.887,227.114,0);
glVertex3f(95.428,226.723,0);
glVertex3f(94.833,226.315,0);
glVertex3f(94.290,226.026,0);
glVertex3f(93.729,225.737,0);
glVertex3f(92.998,225.533,0);
glVertex3f(92.131,225.448,0);
glVertex3f(91.383,225.397,0);
glVertex3f(90.431,225.397,0);
glVertex3f(89.734,225.516,0);
glVertex3f(89.071,225.652,0);
glVertex3f(88.255,225.992,0);
glVertex3f(87.677,226.366,0);
glVertex3f(87.014,226.842,0);
glVertex3f(86.606,227.250,0);
glVertex3f(86.215,227.641,0);
glVertex3f(85.756,228.219,0);
glVertex3f(85.331,228.814,0);
glVertex3f(84.940,229.358,0);
glVertex3f(84.668,229.919,0);
glVertex3f(84.363,230.803,0);
glVertex3f(84.278,231.432,0);
glVertex3f(84.176,232.197,0);
glVertex3f(84.193,232.826,0);
glVertex3f(84.159,233.455,0);
glVertex3f(84.159,234.151,0);
glVertex3f(84.193,234.661,0);
glVertex3f(84.346,235.341,0);
glVertex3f(84.651,236.106,0);
glVertex3f(84.923,236.752,0);
glVertex3f(85.348,237.313,0);
glVertex3f(85.807,237.976,0);
glVertex3f(86.317,238.520,0);
glVertex3f(86.878,239.013,0);
glVertex3f(87.473,239.455,0);
glVertex3f(88.068,239.812,0);
glVertex3f(88.697,240.152,0);
glVertex3f(89.394,240.441,0);
glVertex3f(90.142,240.594,0);
glVertex3f(90.958,240.662,0);
glVertex3f(91.825,240.679,0);
glVertex3f(92.505,240.577,0);
glVertex3f(93.338,240.288,0);
glVertex3f(93.967,239.999,0);
glVertex3f(94.680,239.625,0);
glVertex3f(95.258,239.234,0);
glVertex3f(95.717,238.877,0);
glVertex3f(96.193,238.401,0);
glVertex3f(96.652,238.078,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(99.219,225.584,0);
glVertex3f(96.720,228.151,0);
glVertex3f(96.431,227.658,0);
glVertex3f(95.887,227.114,0);
glVertex3f(95.428,226.723,0);
glVertex3f(94.833,226.315,0);
glVertex3f(94.290,226.026,0);
glVertex3f(93.729,225.737,0);
glVertex3f(92.998,225.533,0);
glVertex3f(92.131,225.448,0);
glVertex3f(91.383,225.397,0);
glVertex3f(90.431,225.397,0);
glVertex3f(89.734,225.516,0);
glVertex3f(89.071,225.652,0);
glVertex3f(88.255,225.992,0);
glVertex3f(87.677,226.366,0);
glVertex3f(87.014,226.842,0);
glVertex3f(86.606,227.250,0);
glVertex3f(86.215,227.641,0);
glVertex3f(85.756,228.219,0);
glVertex3f(85.331,228.814,0);
glVertex3f(84.940,229.358,0);
glVertex3f(84.668,229.919,0);
glVertex3f(84.363,230.803,0);
glVertex3f(84.278,231.432,0);
glVertex3f(84.176,232.197,0);
glVertex3f(84.193,232.826,0);
glVertex3f(84.159,233.455,0);
glVertex3f(84.159,234.151,0);
glVertex3f(84.193,234.661,0);
glVertex3f(84.346,235.341,0);
glVertex3f(84.651,236.106,0);
glVertex3f(84.923,236.752,0);
glVertex3f(85.348,237.313,0);
glVertex3f(85.807,237.976,0);
glVertex3f(86.317,238.520,0);
glVertex3f(86.878,239.013,0);
glVertex3f(87.473,239.455,0);
glVertex3f(88.068,239.812,0);
glVertex3f(88.697,240.152,0);
glVertex3f(89.394,240.441,0);
glVertex3f(90.142,240.594,0);
glVertex3f(90.958,240.662,0);
glVertex3f(91.825,240.679,0);
glVertex3f(92.505,240.577,0);
glVertex3f(93.338,240.288,0);
glVertex3f(93.967,239.999,0);
glVertex3f(94.680,239.625,0);
glVertex3f(95.258,239.234,0);
glVertex3f(95.717,238.877,0);
glVertex3f(96.193,238.401,0);
glVertex3f(96.652,238.078,0);
glVertex3f(99.270,240.441,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(108.188,238.601,0);
glVertex3f(109.427,238.517,0);
glVertex3f(110.484,238.777,0);
glVertex3f(111.542,237.940,0);
glVertex3f(112.504,237.363,0);
glVertex3f(113.417,236.690,0);
glVertex3f(114.186,235.921,0);
glVertex3f(115.004,234.815,0);
glVertex3f(115.581,233.565,0);
glVertex3f(115.965,232.267,0);
glVertex3f(116.206,230.873,0);
glVertex3f(116.206,229.430,0);
glVertex3f(116.061,228.036,0);
glVertex3f(115.773,226.738,0);
glVertex3f(115.244,225.584,0);
glVertex3f(114.379,224.286,0);
glVertex3f(113.393,223.396,0);
glVertex3f(112.275,222.603,0);
glVertex3f(110.472,221.810,0);
glVertex3f(109.042,221.593,0);
glVertex3f(107.167,221.581,0);
glVertex3f(105.484,222.026,0);
glVertex3f(103.946,222.747,0);
glVertex3f(102.744,223.757,0);
glVertex3f(102.022,224.574,0);
glVertex3f(101.205,225.776,0);
glVertex3f(100.628,226.786,0);
glVertex3f(100.292,228.228,0);
glVertex3f(100.051,229.574,0);
glVertex3f(100.099,231.257,0);
glVertex3f(100.328,232.428,0);
glVertex3f(100.965,234.094,0);
glVertex3f(101.782,235.392,0);
glVertex3f(102.744,236.450,0);
glVertex3f(103.897,237.267,0);
glVertex3f(105.292,237.988,0);
glVertex3f(106.638,238.421,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(108.226,234.962,0);
glVertex3f(108.925,234.914,0);
glVertex3f(109.523,234.775,0);
glVertex3f(110.121,234.580,0);
glVertex3f(110.664,234.247,0);
glVertex3f(111.180,233.859,0);
glVertex3f(111.615,233.415,0);
glVertex3f(112.077,232.776,0);
glVertex3f(112.403,232.054,0);
glVertex3f(112.620,231.305,0);
glVertex3f(112.756,230.500,0);
glVertex3f(112.756,229.667,0);
glVertex3f(112.675,228.862,0);
glVertex3f(112.512,228.113,0);
glVertex3f(112.213,227.447,0);
glVertex3f(111.724,226.697,0);
glVertex3f(111.167,226.184,0);
glVertex3f(110.535,225.726,0);
glVertex3f(109.516,225.268,0);
glVertex3f(108.708,225.143,0);
glVertex3f(107.649,225.136,0);
glVertex3f(106.698,225.392,0);
glVertex3f(105.828,225.809,0);
glVertex3f(105.149,226.392,0);
glVertex3f(104.742,226.864,0);
glVertex3f(104.280,227.558,0);
glVertex3f(103.954,228.140,0);
glVertex3f(103.764,228.973,0);
glVertex3f(103.628,229.750,0);
glVertex3f(103.655,230.722,0);
glVertex3f(103.784,231.398,0);
glVertex3f(104.144,232.360,0);
glVertex3f(104.606,233.109,0);
glVertex3f(105.149,233.720,0);
glVertex3f(105.801,234.192,0);
glVertex3f(106.589,234.608,0);
glVertex3f(107.350,234.858,0);
glEnd();
//P
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(128.188,238.601,0);
glVertex3f(129.427,238.517,0);
glVertex3f(130.484,238.777,0);
glVertex3f(131.542,237.940,0);
glVertex3f(132.504,237.363,0);
glVertex3f(133.417,236.690,0);
glVertex3f(134.186,235.921,0);
glVertex3f(135.004,234.815,0);
glVertex3f(135.581,233.565,0);
glVertex3f(135.965,232.267,0);
glVertex3f(136.206,230.873,0);
glVertex3f(136.206,229.430,0);
glVertex3f(136.061,228.036,0);
glVertex3f(135.773,226.738,0);
glVertex3f(135.244,225.584,0);
glVertex3f(134.379,224.286,0);
glVertex3f(133.393,223.396,0);
glVertex3f(132.275,222.603,0);
glVertex3f(130.472,221.810,0);
glVertex3f(129.042,221.593,0);
glVertex3f(127.167,221.581,0);
glVertex3f(125.484,222.026,0);
glVertex3f(123.946,222.747,0);
glVertex3f(122.744,223.757,0);
glVertex3f(122.022,224.574,0);
glVertex3f(121.205,225.776,0);
glVertex3f(120.628,226.786,0);
glVertex3f(120.292,228.228,0);
glVertex3f(120.051,229.574,0);
glVertex3f(120.099,231.257,0);
glVertex3f(120.328,232.428,0);
glVertex3f(120.965,234.094,0);
glVertex3f(121.782,235.392,0);
glVertex3f(122.744,236.450,0);
glVertex3f(123.897,237.267,0);
glVertex3f(125.292,237.988,0);
glVertex3f(126.638,238.421,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(128.226,234.962,0);
glVertex3f(128.925,234.914,0);
glVertex3f(129.523,234.775,0);
glVertex3f(130.121,234.580,0);
glVertex3f(130.664,234.247,0);
glVertex3f(131.180,233.859,0);
glVertex3f(131.615,233.415,0);
glVertex3f(132.077,232.776,0);
glVertex3f(132.403,232.054,0);
glVertex3f(132.620,231.305,0);
glVertex3f(132.756,230.500,0);
glVertex3f(132.756,229.667,0);
glVertex3f(132.675,228.862,0);
glVertex3f(132.512,228.113,0);
glVertex3f(132.213,227.447,0);
glVertex3f(131.724,226.697,0);
glVertex3f(131.167,226.184,0);
glVertex3f(130.535,225.726,0);
glVertex3f(129.516,225.268,0);
glVertex3f(128.708,225.143,0);
glVertex3f(127.649,225.136,0);
glVertex3f(126.698,225.392,0);
glVertex3f(125.828,225.809,0);
glVertex3f(125.149,226.392,0);
glVertex3f(124.742,226.864,0);
glVertex3f(124.280,227.558,0);
glVertex3f(123.954,228.140,0);
glVertex3f(123.764,228.973,0);
glVertex3f(123.628,229.750,0);
glVertex3f(123.655,230.722,0);
glVertex3f(123.784,231.398,0);
glVertex3f(124.144,232.360,0);
glVertex3f(124.606,233.109,0);
glVertex3f(125.149,233.720,0);
glVertex3f(125.801,234.192,0);
glVertex3f(126.589,234.608,0);
glVertex3f(127.350,234.858,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(120.648,215.055,0);
glVertex3f(124.158,215.055,0);
glVertex3f(124.062,223.180,0);
glVertex3f(120.648,228.517,0);
glEnd();

//P
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(148.188,238.601,0);
glVertex3f(149.427,238.517,0);
glVertex3f(150.484,238.777,0);
glVertex3f(151.542,237.940,0);
glVertex3f(152.504,237.363,0);
glVertex3f(153.417,236.690,0);
glVertex3f(154.186,235.921,0);
glVertex3f(155.004,234.815,0);
glVertex3f(155.581,233.565,0);
glVertex3f(155.965,232.267,0);
glVertex3f(156.206,230.873,0);
glVertex3f(156.206,229.430,0);
glVertex3f(156.061,228.036,0);
glVertex3f(155.773,226.738,0);
glVertex3f(155.244,225.584,0);
glVertex3f(154.379,224.286,0);
glVertex3f(153.393,223.396,0);
glVertex3f(152.275,222.603,0);
glVertex3f(150.472,221.810,0);
glVertex3f(149.042,221.593,0);
glVertex3f(147.167,221.581,0);
glVertex3f(145.484,222.026,0);
glVertex3f(143.946,222.747,0);
glVertex3f(142.744,223.757,0);
glVertex3f(142.022,224.574,0);
glVertex3f(141.205,225.776,0);
glVertex3f(140.628,226.786,0);
glVertex3f(140.292,228.228,0);
glVertex3f(140.051,229.574,0);
glVertex3f(140.099,231.257,0);
glVertex3f(140.328,232.428,0);
glVertex3f(140.965,234.094,0);
glVertex3f(141.782,235.392,0);
glVertex3f(142.744,236.450,0);
glVertex3f(143.897,237.267,0);
glVertex3f(145.292,237.988,0);
glVertex3f(146.638,238.421,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(148.226,234.962,0);
glVertex3f(148.925,234.914,0);
glVertex3f(149.523,234.775,0);
glVertex3f(150.121,234.580,0);
glVertex3f(150.664,234.247,0);
glVertex3f(151.180,233.859,0);
glVertex3f(151.615,233.415,0);
glVertex3f(152.077,232.776,0);
glVertex3f(152.403,232.054,0);
glVertex3f(152.620,231.305,0);
glVertex3f(152.756,230.500,0);
glVertex3f(152.756,229.667,0);
glVertex3f(152.675,228.862,0);
glVertex3f(152.512,228.113,0);
glVertex3f(152.213,227.447,0);
glVertex3f(151.724,226.697,0);
glVertex3f(151.167,226.184,0);
glVertex3f(150.535,225.726,0);
glVertex3f(149.516,225.268,0);
glVertex3f(148.708,225.143,0);
glVertex3f(147.649,225.136,0);
glVertex3f(146.698,225.392,0);
glVertex3f(145.828,225.809,0);
glVertex3f(145.149,226.392,0);
glVertex3f(144.742,226.864,0);
glVertex3f(144.280,227.558,0);
glVertex3f(143.954,228.140,0);
glVertex3f(143.764,228.973,0);
glVertex3f(143.628,229.750,0);
glVertex3f(143.655,230.722,0);
glVertex3f(143.784,231.398,0);
glVertex3f(144.144,232.360,0);
glVertex3f(144.606,233.109,0);
glVertex3f(145.149,233.720,0);
glVertex3f(145.801,234.192,0);
glVertex3f(146.589,234.608,0);
glVertex3f(147.350,234.858,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(140.648,215.055,0);
glVertex3f(144.158,215.055,0);
glVertex3f(144.062,223.180,0);
glVertex3f(140.648,228.517,0);
glEnd();

//E
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(168.188,238.601,0);
glVertex3f(169.427,238.517,0);
glVertex3f(170.484,238.777,0);
glVertex3f(171.542,237.940,0);
glVertex3f(172.504,237.363,0);
glVertex3f(173.417,236.690,0);
glVertex3f(174.186,235.921,0);
glVertex3f(175.004,234.815,0);
glVertex3f(175.581,233.565,0);
glVertex3f(175.965,232.267,0);
glVertex3f(176.206,230.873,0);
glVertex3f(176.206,229.430,0);
glVertex3f(176.061,228.036,0);
glVertex3f(175.773,226.738,0);
glVertex3f(175.244,225.584,0);
glVertex3f(174.379,224.286,0);
glVertex3f(173.393,223.396,0);
glVertex3f(172.275,222.603,0);
glVertex3f(170.472,221.810,0);
glVertex3f(169.042,221.593,0);
glVertex3f(167.167,221.581,0);
glVertex3f(165.484,222.026,0);
glVertex3f(163.946,222.747,0);
glVertex3f(162.744,223.757,0);
glVertex3f(162.022,224.574,0);
glVertex3f(161.205,225.776,0);
glVertex3f(160.628,226.786,0);
glVertex3f(160.292,228.228,0);
glVertex3f(160.051,229.574,0);
glVertex3f(160.099,231.257,0);
glVertex3f(160.328,232.428,0);
glVertex3f(160.965,234.094,0);
glVertex3f(161.782,235.392,0);
glVertex3f(162.744,236.450,0);
glVertex3f(163.897,237.267,0);
glVertex3f(165.292,237.988,0);
glVertex3f(166.638,238.421,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(168.226,234.962,0);
glVertex3f(168.925,234.914,0);
glVertex3f(169.523,234.775,0);
glVertex3f(170.121,234.580,0);
glVertex3f(170.664,234.247,0);
glVertex3f(171.180,233.859,0);
glVertex3f(171.615,233.415,0);
glVertex3f(172.077,232.776,0);
glVertex3f(172.403,232.054,0);
glVertex3f(172.620,231.305,0);
glVertex3f(172.756,230.500,0);
glVertex3f(163.655,230.722,0);
glVertex3f(163.784,231.398,0);
glVertex3f(164.144,232.360,0);
glVertex3f(164.606,233.109,0);
glVertex3f(165.149,233.720,0);
glVertex3f(165.801,234.192,0);
glVertex3f(166.589,234.608,0);
glVertex3f(167.350,234.858,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(175.700,228.113,0);
glVertex3f(172.512,228.113,0);
glVertex3f(172.213,227.447,0);
glVertex3f(171.724,226.697,0);
glVertex3f(171.167,226.184,0);
glVertex3f(170.535,225.726,0);
glVertex3f(169.516,225.268,0);
glVertex3f(168.708,225.143,0);
glVertex3f(167.649,225.136,0);
glVertex3f(166.698,225.392,0);
glVertex3f(165.828,225.809,0);
glVertex3f(165.149,226.392,0);
glVertex3f(164.742,226.864,0);
glVertex3f(164.280,227.558,0);
glEnd();
//L
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(178.534,243.712,0);
glVertex3f(178.534,227.243,0);
glVertex3f(178.763,226.642,0);
glVertex3f(179.051,225.885,0);
glVertex3f(179.280,225.284,0);
glVertex3f(179.688,224.695,0);
glVertex3f(180.025,224.226,0);
glVertex3f(180.482,223.625,0);
glVertex3f(181.023,223.048,0);
glVertex3f(181.623,222.591,0);
glVertex3f(182.309,222.123,0);
glVertex3f(183.138,221.714,0);
glVertex3f(184.088,221.293,0);
glVertex3f(185.001,221.077,0);
glVertex3f(186.133,220.984,0);
glVertex3f(186.133,224.443,0);
glVertex3f(185.164,224.707,0);
glVertex3f(184.737,224.851,0);
glVertex3f(183.919,225.428,0);
glVertex3f(182.910,226.197,0);
glVertex3f(182.236,227.495,0);
glVertex3f(181.866,228.938,0);
glVertex3f(181.866,243.712,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0.93,0.91,0.21);
glBegin(GL_POLYGON);
glVertex3f(186.133,224.443,0);
glVertex3f(185.164,224.707,0);
glVertex3f(184.737,224.851,0);
glVertex3f(183.919,225.428,0);
glVertex3f(182.910,226.197,0);
glVertex3f(182.236,227.495,0);
glVertex3f(181.866,228.938,0);
glVertex3f(181.866,243.712,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(30.639,233.015,0);
glVertex3f(30.903,232.997,0);
glVertex3f(31.129,232.944,0);
glVertex3f(31.355,232.871,0);
glVertex3f(31.561,232.745,0);
glVertex3f(31.756,232.599,0);
glVertex3f(31.921,232.431,0);
glVertex3f(32.095,232.190,0);
glVertex3f(32.218,231.918,0);
glVertex3f(32.301,231.635,0);
glVertex3f(32.352,231.331,0);
glVertex3f(32.352,231.017,0);
glVertex3f(32.321,230.713,0);
glVertex3f(32.260,230.431,0);
glVertex3f(32.147,230.179,0);
glVertex3f(31.962,229.897,0);
glVertex3f(31.751,229.703,0);
glVertex3f(31.512,229.530,0);
glVertex3f(31.127,229.357,0);
glVertex3f(30.821,229.310,0);
glVertex3f(30.420,229.307,0);
glVertex3f(30.061,229.404,0);
glVertex3f(29.732,229.561,0);
glVertex3f(29.475,229.781,0);
glVertex3f(29.321,229.959,0);
glVertex3f(29.146,230.221,0);
glVertex3f(29.023,230.441,0);
glVertex3f(28.951,230.755,0);
glVertex3f(28.900,231.048,0);
glVertex3f(28.910,231.415,0);
glVertex3f(28.959,231.670,0);
glVertex3f(29.095,232.033,0);
glVertex3f(29.270,232.316,0);
glVertex3f(29.475,232.546,0);
glVertex3f(29.722,232.725,0);
glVertex3f(30.020,232.882,0);
glVertex3f(30.307,232.976,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(35.506,236.052,0);
glVertex3f(35.770,236.034,0);
glVertex3f(35.997,235.981,0);
glVertex3f(36.223,235.908,0);
glVertex3f(36.428,235.782,0);
glVertex3f(36.623,235.635,0);
glVertex3f(36.788,235.468,0);
glVertex3f(36.962,235.227,0);
glVertex3f(37.086,234.955,0);
glVertex3f(37.168,234.672,0);
glVertex3f(37.219,234.368,0);
glVertex3f(37.219,234.054,0);
glVertex3f(37.188,233.750,0);
glVertex3f(37.127,233.467,0);
glVertex3f(37.014,233.216,0);
glVertex3f(36.829,232.933,0);
glVertex3f(36.618,232.740,0);
glVertex3f(36.379,232.567,0);
glVertex3f(35.994,232.394,0);
glVertex3f(35.688,232.347,0);
glVertex3f(35.288,232.344,0);
glVertex3f(34.928,232.441,0);
glVertex3f(34.599,232.598,0);
glVertex3f(34.342,232.818,0);
glVertex3f(34.188,232.996,0);
glVertex3f(34.014,233.258,0);
glVertex3f(33.890,233.477,0);
glVertex3f(33.818,233.792,0);
glVertex3f(33.767,234.085,0);
glVertex3f(33.777,234.452,0);
glVertex3f(33.826,234.707,0);
glVertex3f(33.962,235.070,0);
glVertex3f(34.137,235.353,0);
glVertex3f(34.342,235.583,0);
glVertex3f(34.589,235.761,0);
glVertex3f(34.887,235.918,0);
glVertex3f(35.175,236.013,0);
glEnd();

glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(2);
glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(35.495,229.914,0);
glVertex3f(35.759,229.896,0);
glVertex3f(35.985,229.843,0);
glVertex3f(36.211,229.770,0);
glVertex3f(36.417,229.644,0);
glVertex3f(36.612,229.498,0);
glVertex3f(36.776,229.330,0);
glVertex3f(36.951,229.089,0);
glVertex3f(37.074,228.817,0);
glVertex3f(37.157,228.534,0);
glVertex3f(37.208,228.230,0);
glVertex3f(37.208,227.916,0);
glVertex3f(37.177,227.612,0);
glVertex3f(37.116,227.330,0);
glVertex3f(37.003,227.078,0);
glVertex3f(36.818,226.796,0);
glVertex3f(36.607,226.602,0);
glVertex3f(36.368,226.429,0);
glVertex3f(35.983,226.256,0);
glVertex3f(35.677,226.209,0);
glVertex3f(35.276,226.206,0);
glVertex3f(34.917,226.303,0);
glVertex3f(34.588,226.460,0);
glVertex3f(34.331,226.680,0);
glVertex3f(34.177,226.858,0);
glVertex3f(34.002,227.120,0);
glVertex3f(33.879,227.340,0);
glVertex3f(33.807,227.654,0);
glVertex3f(33.756,227.947,0);
glVertex3f(33.766,228.314,0);
glVertex3f(33.815,228.569,0);
glVertex3f(33.951,228.932,0);
glVertex3f(34.126,229.215,0);
glVertex3f(34.331,229.445,0);
glVertex3f(34.578,229.623,0);
glVertex3f(34.876,229.781,0);
glVertex3f(35.163,229.875,0);
glEnd();
//
glTranslatef(100,100,25);
glPopMatrix();
}

voidtree(floatx=0,floaty=0,floatz=0)
{
GLUquadricObj*quadratic;
quadratic=gluNewQuadric();
//trunk
glPushMatrix();
glRotatef(90,1,0,0);
glTranslatef(x,z,y);
glColor3f(0.4,0.3,0.1);
gluCylinder(quadratic,0.1f,0.1f,0.8,50,50);
glTranslatef(x,z,y);
glPopMatrix();
//leaves
glPushMatrix();
glTranslatef(x,y+1,z);
glColor3f(0.4,0.7,0.3);
glutSolidSphere(.5,50,10);
glTranslatef(x,(y+1),z);
glPopMatrix();
}

voidcar(floatx=0,floaty=0,floatz=0,
floatr=0,floatg=0,floatb=0)
{
glPushMatrix();
/////////////////////////////
glRotatef(90,0,1,0);
//tire1
glPushMatrix();
glRotated(90,0,1,0);
glTranslatef((z+0.53),(y0.23),(x+0.3));
glScalef(0.5,0.5,0.5);
glColor3f(0,0,0);
glutSolidTorus(0.1,0.1,30,30);
glTranslatef(z+0.53,(y0.23),(x+0.3));
glPopMatrix();
//tire2
glPushMatrix();
glRotated(90,0,1,0);
glTranslatef((z0.2),(y0.23),(x+0.3));
glScalef(0.5,0.5,0.5);
glColor3f(0,0,0);
glutSolidTorus(0.1,0.1,30,30);
glTranslatef(z0.2,(y0.23),(x+0.3));
glPopMatrix();
//tire3
glPushMatrix();
glRotated(90,0,1,0);
glTranslatef((z+0.53),(y0.23),(x0.3));
glScalef(0.5,0.5,0.5);
glColor3f(0,0,0);
glutSolidTorus(0.1,0.1,30,30);
glTranslatef(z+0.53,(y0.23),(x0.3));
glPopMatrix();
//tire4
glPushMatrix();
glRotated(90,0,1,0);
glTranslatef((z0.2),(y0.23),(x0.3));
glScalef(0.5,0.5,0.5);
glColor3f(0,0,0);
glutSolidTorus(0.1,0.1,30,30);
glTranslatef(z0.2,(y0.23),(x0.3));
glPopMatrix();
//Carga
glPushMatrix();
glTranslatef(x,y,z);
glScalef(0.6,0.4,1.0);
glColor3f(r,g,b);
glutSolidCube(1);
glTranslatef(x,y,z);
glPopMatrix();
//Frente
glPushMatrix();
glTranslatef(x,y0.09,z+0.65);
glScalef(0.6,0.23,0.32);
glColor3f(r,g,b);
glutSolidCube(1);
glTranslatef((x),(y0.09),(z+0.65));
glPopMatrix();
/////////////////////////////
glPopMatrix();
}

voidwindow(floatx=0,floaty=0,floatz=0)
{
glPushMatrix();
glScalef(0.6,0.4,0.6);
glTranslatef(x,y,z);
glPolygonMode(GL_FRONT,GL_FILL);
glLineWidth(3);
glColor3f(0,0,0);
line(3,2,0,5,2,0);
line(5,2,0,5,0,0);
line(5,0,0,3,0,0);
line(3,0,0,3,2,0);
glColor3f(0.5,0.7,1);
glBegin(GL_POLYGON);
glVertex3f(3,2,0);
glVertex3f(5,2,0);
glVertex3f(5,0,0);
glVertex3f(3,0,0);
glEnd();
glTranslatef(x,y,z);
glPopMatrix();
}

voidstore()
{
glPushMatrix();
glScalef(1.5,1.2,1.7);
//Store
glColor3f(1,1,0.79);
glPushMatrix();
glScalef(6,1.5,3);
glTranslatef(0,0.6,0.8);
glutSolidCube(1.0);
glTranslatef(0,0.6,0.8);
glPopMatrix();
for(floati=7.0;i<0;i+=2)
{
window(i,0.4,1.45);
}
//Roof1
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glColor3f(0,0,1);
glPushMatrix();
glScalef(7,0.5,4);
glTranslatef(0,3,0.5);
glutSolidCube(1.0);
glTranslatef(0,3,0.5);
glPopMatrix();
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
//Roof2
glColor3f(1,1,0.79);
glPushMatrix();
glScalef(6.5,2,3.5);
glTranslatef(0,1.35,0.6);
glutSolidCube(1.0);
glTranslatef(0,1.35,0.6);
glPopMatrix();
glPopMatrix();
}

voidparkingLot()
{
floatr,g,b;
glColor3f(0.9,0.9,0.4);
glLineWidth(2);
line(4.5,0.18,6.5,
4.5,0.18,0.5);
line(6.0,0.18,6.5,
6.0,0.18,0.5);
line(3.5,0.18,6.5,
3.5,0.18,0.5);
line(1.9,0.18,6.5,
1.9,0.18,0.5);

for(floati=6.5;i>1.5;i=1)
{
line(6.0,0.18,i,
4.5,0.18,i);
line(3.5,0.18,i,
1.9,0.18,i);
}
line(4.2,0.18,6.5,
4.2,0.18,0.5);
line(5.7,0.18,6.5,
5.7,0.18,0.5);
for(floati=6.5;i>1.5;i=1)
{
line(5.7,0.18,i,
4.2,0.18,i);
}
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
srand(5);
for(floati=1;i<=6;i++)
{
r=(rand()%255);
g=(rand()%255);
b=(rand()%255);
r=r/255;
g=g/255;
b=b/255;
car(i,0.5,5.1,r,g,b);
}
srand(8);
for(floati=1;i<=5;i++)
{
r=(rand()%255);
g=(rand()%255);
b=(rand()%255);
r=r/255;
g=g/255;
b=b/255;
car(i,0.5,2.5,r,g,b);
}
srand(2);
for(floati=3;i<=5;i++)
{
r=(rand()%255);
g=(rand()%255);
b=(rand()%255);
r=r/255;
g=g/255;
b=b/255;
car(i,0.5,5.1,r,g,b);
}
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
}

voidstreetLight(floatx=0,floaty=0,floatz=0)
{
floatr;
GLUquadricObj*quadratic;
quadratic=gluNewQuadric();
//lamppost
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glPushMatrix();
glRotatef(90,1,0,0);
glTranslatef(x,z,y);
glColor3f(0.8,0.8,0.8);
gluCylinder(quadratic,0.05f,0.05f,1.6,50,50);
glTranslatef(x,z,y);
glPopMatrix();
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
//light
srand(time(0));
r=(rand()%2);
glPushMatrix();
glTranslatef(x,y+1.7,z);
glColor3f(r,r,r);
glutSolidSphere(.2,50,10);
glTranslatef(x,(y+1.7),z);
glPopMatrix();
}

voidenvironment()
{
floatZOOM=1.8;
floatZOOMSQRT=sqrt(ZOOM);
//glScalef(1.0f/ZOOMSQRT,1.0f/ZOOMSQRT,1);
glScalef(1.0f/ZOOMSQRT,1.0f/ZOOMSQRT,1.0f/ZOOMSQRT);
glScalef(1.0f/ZOOMSQRT,1.0f/ZOOMSQRT,1.0f/ZOOMSQRT);
//floor
glPushMatrix();
glColor3f(0.4,0.5,0.5);
glScalef(15.0,0.3,15.0);
glutSolidCube(1.0);
glPopMatrix();
//grassleft
glPushMatrix();
glColor3f(0.4,0.7,0.3);
glScalef(0.9,0.3,14.0);
glTranslatef(7.25,0.1,0);
glutSolidCube(1.0);
glTranslatef(7.25,0.1,0);
glPopMatrix();
//grassright
glPushMatrix();
glColor3f(0.4,0.7,0.3);
glScalef(0.9,0.3,14.0);
glTranslatef(7.25,0.1,0);
glutSolidCube(1.0);
glTranslatef(7.25,0.1,0);
glPopMatrix();
//trees
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
for(floati=6;i<6;i+=1.2)
{
tree(6.5,0,i);
tree(6.5,0,i);
}
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
//Store
store();
glPushMatrix();
glTranslatef(2,0.5,0);
glDisable(GL_DEPTH_TEST);
logo();
glEnable(GL_DEPTH_TEST);
glTranslatef(2,0.5,0);
glPopMatrix();
glPopMatrix();
//Parkinglot
parkingLot();
for(floati=6.5;i>1;i=2)
{
streetLight(1.7,0,i);
streetLight(4,0,i);
}
}

voiddisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glColor3f(0.0,0.0,0.0);
glLoadIdentity();
glTranslatef(0,0,10.0f);
glRotatef(rs.cameraX,1,0,0);
glRotatef(rs.cameraY,0,1,0);
environment();
glFlush();
}

voidmouseCallback(intbutton,intstate,intx,inty)
{
rs.mouseX=x;
rs.mouseY=y;
if(button==GLUT_LEFT_BUTTON)
{
if(state==GLUT_DOWN)
{
rs.mouseLeftDown=true;
}
else
if(state==GLUT_UP)
rs.mouseLeftDown=false;
}
}

voidmouseMotionCallback(intx,inty)
{
if(rs.mouseLeftDown)
{
rs.cameraY+=(xrs.mouseX);
rs.cameraX+=(yrs.mouseY);
rs.mouseX=x;
rs.mouseY=y;
}
}

voididleCallback()
{
glutPostRedisplay();
}

intmain(intargc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(600,600);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutIdleFunc(idleCallback);
glutMouseFunc(mouseCallback);
glutMotionFunc(mouseMotionCallback);
glViewport(0,0,(GLsizei)600,(GLsizei)600);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(1.0,1.0,1.0,1.0,3,20.0);
glMatrixMode(GL_MODELVIEW);
glutMainLoop();
exit();
return0;
}

Potrebbero piacerti anche