Untitled
unknown
plain_text
2 years ago
52 kB
9
Indexable
#include <iostream>
#include<GL/gl.h>
#ifdef __APPLE__
#else
#include <GL/glut.h>
#endif
#include <stdlib.h>
#include <bits/stdc++.h>
#include<GL/gl.h>
#include<math.h>
using namespace std;
const int width = 1000;
const int height = 1000;
GLfloat eyeX = 13.5;
GLfloat eyeY = 30.79;
GLfloat eyeZ = 103.29;
GLfloat lookX = 20.0;
GLfloat lookY = 12.0;
GLfloat lookZ = -4;
static GLfloat v_cube[8][3] =
{
{0,0,0},
{0,0,1},
{0,1,0},
{0,1,1},
{1,0,0},
{1,0,1},
{1,1,0},
{1,1,1}
};
static GLubyte c_ind[6][4] =
{
{0,2,6,4},
{1,5,7,3},
{0,4,5,1},
{2,3,7,6},
{0,1,3,2},
{4,6,7,5}
};
static void getNormal3p(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2, GLfloat x3, GLfloat y3, GLfloat z3)
{
GLfloat Ux, Uy, Uz, Vx, Vy, Vz, Nx, Ny, Nz;
Ux = x2-x1;
Uy = y2-y1;
Uz = z2-z1;
Vx = x3-x1;
Vy = y3-y1;
Vz = z3-z1;
Nx = Uy*Vz - Uz*Vy;
Ny = Uz*Vx - Ux*Vz;
Nz = Ux*Vy - Uy*Vx;
glNormal3f(Nx,Ny,Nz);
}
void cube(float r,float g,float b)
{
glBegin(GL_QUADS);
glColor3d(r,g,b);
for (GLint i = 0; i <6; i++)
{
getNormal3p(v_cube[c_ind[i][0]][0], v_cube[c_ind[i][0]][1], v_cube[c_ind[i][0]][2],
v_cube[c_ind[i][1]][0], v_cube[c_ind[i][1]][1], v_cube[c_ind[i][1]][2],
v_cube[c_ind[i][2]][0], v_cube[c_ind[i][2]][1], v_cube[c_ind[i][2]][2]);
for (GLint j=0; j<4; j++)
{
glVertex3fv(&v_cube[c_ind[i][j]][0]);
}
}
glEnd();
}
void circle(GLfloat xAxis, GLfloat yAxis, GLfloat zAxis, GLfloat radius, GLfloat rColor, GLfloat gColor, GLfloat bColor)
{
glPushMatrix(); // Push the current matrix onto the stack
glTranslatef(xAxis, yAxis, zAxis);
glColor3f(rColor/255.0, gColor/255.0, bColor/255.0); // Red color used to draw.
glutSolidSphere(radius, 20, 20);
glPopMatrix(); // Pop the matrix from the stack to revert to the previous state
}
static void key(unsigned char key, int x, int y)
{
float switchSpeed = 0.5;
switch (key)
{
case 'd':
eyeX=eyeX+switchSpeed;
printf("eye x = %f \n", eyeX);
break;
case 'a':
eyeX=eyeX-switchSpeed;
printf("eye x = %f \n", eyeX);
break;
case 'w':
eyeY=eyeY+switchSpeed;
printf("eye y = %f\n", eyeY);
break;
case 's':
eyeY=eyeY-switchSpeed;
printf("eye y = %f\n", eyeY);
break;
case '1':
eyeZ=eyeZ+switchSpeed;
printf("eye z = %f\n", eyeZ);
break;
case '2':
eyeZ=eyeZ-switchSpeed;
printf("eye z = %f\n", eyeZ);
break;
case 'i':
lookX=lookX+switchSpeed;
printf("L X = %f\n", lookX);
break;
case 'j':
lookX=lookX-switchSpeed;
printf("L X = %f\n", lookX);
break;
case 'o':
lookY=lookY+switchSpeed;
printf("L Y = %f\n", lookY);
break;
case 'k':
lookY=lookY-switchSpeed;
printf("L Y = %f\n", lookY);
break;
case 'p':
lookZ=lookZ+switchSpeed;
printf("L Z = %f\n", lookZ);
break;
case 'l':
lookZ=lookZ-switchSpeed;
printf("L Z = %f\n", lookZ);
break;
}
glutPostRedisplay();
}
void createBaseField(){
//FIELD
glPushMatrix();
glTranslated(-332,0-12,-200);
glScaled(680,1,380);
cube(0.4,0.8,0.5);
glPopMatrix();
//Sky
glPushMatrix();
glTranslated(-1532,-220,-200);
glScaled(2700,1000,1);
cube(100/255.0, 255/255.0,255/255.0);
glPopMatrix();
}
void groundDoor()
{
float xBasePosition = -44;
float yBasePosition = -12.2;
float zBasePosition = 50;
// ground door
glPushMatrix();
glTranslated(xBasePosition+25, yBasePosition, zBasePosition+0.5);
glScaled(10, 10, 1);
cube(0.6, 0.4, 0.2);
glPopMatrix();
// unlocker
circle(xBasePosition+26.6, yBasePosition+4.7, zBasePosition+1, 0.7, 244, 255, 244);
// ground door
glPushMatrix();
glTranslated(xBasePosition+25, yBasePosition+0.4, zBasePosition+1.7);
glScaled(10, 1, 1.3);
cube(0.4, 0.4, 0.5);
glPopMatrix();
}
float pillarColorR = 0.961;
float pillarColorG = 0.925;
float pillarColorB= 0.902;
void groundFloor() {
float xBasePosition = -45;
float yBasePosition = 0-12;
float zBasePosition = 50;
float floorColorR = 0.82;
float floorColorG = 0.663;
float floorColorB = 0.573;
float roofColorR = 0.961;
float roofColorG = 0.925;
float roofColorB = 0.902;
// down floor wall 1
glPushMatrix();
glTranslated(xBasePosition,yBasePosition,zBasePosition);
glScaled(40,12,1);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// down floor wall 2
glPushMatrix();
glTranslated(xBasePosition+40,yBasePosition,zBasePosition-15);
glScaled(0,12,15);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// down floor wall 3
glPushMatrix();
glTranslated(xBasePosition,yBasePosition,zBasePosition-15);
glScaled(40,12,1);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// down floor wall 4
glPushMatrix();
glTranslated(xBasePosition,yBasePosition,zBasePosition-15);
glScaled(0,12,15);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// down floor pillar 1
glPushMatrix();
glTranslated(xBasePosition+58,yBasePosition,zBasePosition-15);
glScaled(2,12,2);
cube(pillarColorR,pillarColorG,pillarColorB);
glPopMatrix();
// down floor pillar 2
glPushMatrix();
glTranslated(xBasePosition+58,yBasePosition,zBasePosition-1.5);
glScaled(2,12,2);
cube(pillarColorR,pillarColorG,pillarColorB);
glPopMatrix();
// down floor roof
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+12,zBasePosition-15);
glScaled(60,0.1,16);
cube(roofColorR,roofColorG,roofColorB);
glPopMatrix();
}
void secondFloor() {
float xBasePosition = -35;
float yBasePosition = 0-12;
float zBasePosition = 50;
float floorColorR = 0.969;
float floorColorG = 0.702;
float floorColorB = 0.573;
float roofColorR = 0.961;
float roofColorG = 0.925;
float roofColorB = 0.902;
float balconyColorR = 0.969;
float balconyColorG = 0.802;
float balconyColorB = 0.573;
// 2nd floor pillar 1
glPushMatrix();
glTranslated(xBasePosition+4,yBasePosition+12,zBasePosition-15);
glScaled(2,10.5,2);
cube(0.859, 0.682, 0.557);
glPopMatrix();
// 2nd floor pillar 2
glPushMatrix();
glTranslated(xBasePosition+4,yBasePosition+12,zBasePosition-2);
glScaled(2,10.5,2);
cube(0.859, 0.682, 0.557);
glPopMatrix();
// 2nd floor balcony wall 1
glPushMatrix();
glTranslated(xBasePosition+50,yBasePosition+12,zBasePosition-15);
glScaled(1,5,16);
cube(0.969,0.802,0.573);
glPopMatrix();
// 2nd floor balcony wall 2
glPushMatrix();
glTranslated(xBasePosition+39.5,yBasePosition+12,zBasePosition);
glScaled(10.5,5,1);
cube(balconyColorR,balconyColorG,balconyColorB);
glPopMatrix();
// 2nd floor balcony wall 3
glPushMatrix();
glTranslated(xBasePosition+39.5,yBasePosition+12,zBasePosition-15);
glScaled(10.5,5,1);
cube(balconyColorR,balconyColorG,balconyColorB);
glPopMatrix();
// floor room
// 2nd floor wall 4
glPushMatrix();
glTranslated(xBasePosition+14,yBasePosition+12,zBasePosition-15);
glScaled(1,10,15);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 2nd floor wall 5
glPushMatrix();
glTranslated(xBasePosition+14,yBasePosition+12,zBasePosition-0.5);
glScaled(26-0.5,10,1);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 2nd floor wall 6
glPushMatrix();
glTranslated(xBasePosition+14,yBasePosition+12,zBasePosition-15-0.5);
glScaled(26-0.5,10,1);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 2nd floor wall 7
glPushMatrix();
glTranslated(xBasePosition+39,yBasePosition+12,zBasePosition-15-0.5);
glScaled(1,10,15-0.5);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 2nd floor roof
glPushMatrix();
glTranslated(xBasePosition+05,yBasePosition+22,zBasePosition-15-0.5);
glScaled(35-0.5,1,16);
cube(roofColorR, roofColorG, roofColorB);
glPopMatrix();
}
void thirdFloor() {
float xBasePosition = -31;
float yBasePosition = 10-12;
float zBasePosition = 50;
float balconyColorR = 0.841;
float balconyColorG = 0.884;
float balconyColorB = 0.376;
float floorColorR = 0.941;
float floorColorG = 0.784;
float floorColorB = 0.376;
float roofColorR = 0.961;
float roofColorG = 0.925;
float roofColorB = 0.902;
float roofColorR2 = 0.829;
float roofColorG2 = 0.514;
float roofColorB2 = 0.124;
// 3rd floor balcony wall 1
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+12,zBasePosition-15);
glScaled(1,5,15);
cube(balconyColorR,balconyColorG,balconyColorB);
glPopMatrix();
// 3rd floor balcony wall 2
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+12,zBasePosition);
glScaled(11,5,1);
cube(balconyColorR,balconyColorG,balconyColorB);
glPopMatrix();
// 3rd floor balcony wall 3
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+12,zBasePosition-15);
glScaled(11,5,1);
cube(balconyColorR,balconyColorG,balconyColorB);
glPopMatrix();
// floor room
// 3rd floor wall 4
glPushMatrix();
glTranslated(xBasePosition+11,yBasePosition+12,zBasePosition-15);
glScaled(1,10,16);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 3rd floor wall 5
glPushMatrix();
glTranslated(xBasePosition+11,yBasePosition+12,zBasePosition);
glScaled(14,10,1);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 3rd floor wall 6
glPushMatrix();
glTranslated(xBasePosition+11,yBasePosition+12,zBasePosition-15);
glScaled(14,10,1);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
// 3rd floor wall 7
glPushMatrix();
glTranslated(xBasePosition+25,yBasePosition+12,zBasePosition-15);
glScaled(1,10,16);
cube(floorColorR,floorColorG,floorColorB);
glPopMatrix();
//3rd floor roof
glPushMatrix();
glTranslated(xBasePosition+11,yBasePosition+22,zBasePosition-15);
glScaled(15,1,16);
cube(roofColorR,roofColorG,roofColorB);
glPopMatrix();
//3rd floor roof pillar 1
glPushMatrix();
glTranslated(xBasePosition+11,yBasePosition+23,zBasePosition-15);
glScaled(2,6,2);
cube(pillarColorR,pillarColorG,pillarColorB);
glPopMatrix();
//3rd floor roof pillar 2
glPushMatrix();
glTranslated(xBasePosition+11,yBasePosition+23,zBasePosition-0.2);
glScaled(1.2,6,1.2);
cube(pillarColorR,pillarColorG,pillarColorB);
glPopMatrix();
//3rd floor roof 2
glPushMatrix();
glTranslated(xBasePosition+26.5,yBasePosition+23,zBasePosition-15);
glRotatef(155, 0, 0, 1);
glScaled(16.5,1,17);
cube(roofColorR2,roofColorG2,roofColorB2);
glPopMatrix();
}
void createGate()
{
float xBasePosition = -31;
float yBasePosition = 0-12;
float zBasePosition = 50;
// Front gate door
glPushMatrix();
glTranslated(xBasePosition +24, yBasePosition+1, zBasePosition+11);
glScaled(25, 5, 1);
cube(0.3, 0.1, 0.3);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition +26.5, yBasePosition+1, zBasePosition+12);
glScaled(1.5, 5, 1);
cube(0.7, 0.1, 0.1);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition +45, yBasePosition+1, zBasePosition+12);
glScaled(1.5, 5, 1);
cube(0.7, 0.1, 0.1);
glPopMatrix();
}
void createWalls() {
float xBasePosition = -31;
float yBasePosition = 0-12;
float zBasePosition = 50;
//wall <-
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition-22);
glScaled(1,6,35);
cube(0.9,0.4,0.22);
glPopMatrix();
//wall back
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition-23);
glScaled(94,6,1);
cube(0.9,0.4,0.22);
glPopMatrix();
//wall ->
glPushMatrix();
glTranslated(xBasePosition+66.5,yBasePosition,zBasePosition-22);
glScaled(1,6,35);
cube(0.9,0.4,0.22);
glPopMatrix();
//wall front <- part
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition+12);
glScaled(53,6,1);
cube(0.9,0.4,0.22);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition+46.5,yBasePosition,zBasePosition+12);
glScaled(20,6,1);
cube(0.9,0.4,0.22);
glPopMatrix();
}
void window(float xBasePosition, float yBasePosition, float zBasePosition, float rotateDegree, float rX, float rY, float rZ) {
// total glass
glPushMatrix();
glTranslated(xBasePosition,yBasePosition,zBasePosition);
glRotated(rotateDegree, rX, rY, rZ);
glScaled(7,5,0.01);
cube(0.6, 0.6, 1.0);
glPopMatrix();
// out line
glPushMatrix();
glTranslated(xBasePosition-0.5,yBasePosition-0.5,zBasePosition-0.2);
glRotated(rotateDegree, rX, rY, rZ);
glScaled(7.7,5.65,0.01);
cube(0.9,0.9,0.9);
glPopMatrix();
float xPlus = 0.12;
float zPlus = -3;
if(rotateDegree == 0) {
xPlus = 3.2;
zPlus = 0.2;
}
// middle line
glPushMatrix();
glTranslated(xBasePosition+xPlus,yBasePosition+0.06,zBasePosition+zPlus);
glRotated(rotateDegree, rX, rY, rZ);
glScaled(0.7, 5.35,0.01);
cube(0.9,0.9,0.9);
glPopMatrix();
}
void createWindows() {
float xBasePosition = -31;
float yBasePosition = -8;
float zBasePosition = 50;
// ground window 1
window(xBasePosition-8.5, yBasePosition+0.5, zBasePosition+2, 0, 0, 0, 0);
// ground window 2
window(xBasePosition+1.5, yBasePosition+0.5, zBasePosition+2, 0, 0, 0, 0);
// 2nd floor window 1
window(xBasePosition+14.5, yBasePosition+11.5, zBasePosition+2, 0, 0, 0, 0);
// 2nd floor window 2
window(xBasePosition+25.5, yBasePosition+11.5, zBasePosition+2, 0, 0, 0, 0);
// 3rd floor window 1
window(xBasePosition+15, yBasePosition+20.55, zBasePosition+2, 0, 0, 0, 0);
// 3rd floor window 2
window(xBasePosition+26.5, yBasePosition+20.65, zBasePosition-2, 89, 0, 1, 0);
}
void createDoors() {
groundDoor();
}
void buildHouse() {
groundFloor();
secondFloor();
thirdFloor();
createWindows();
createDoors();
createWalls();
createGate();
}
void buildPlayingField() {
float xBasePosition = -31+98;
float yBasePosition = 0.5-12;
float zBasePosition = 50+1;
//field base
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition-22);
glScaled(37,0.8,33);
cube(0.192, 0.729, 0.122);
glPopMatrix();
//border up
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition-22);
glScaled(37,1,.80);
cube(1,1,1);
glPopMatrix();
//border square top
glPushMatrix();
glTranslated(xBasePosition-14,yBasePosition,zBasePosition-14);
glScaled(13.5,1,0.7);
cube(1,1,1);
glPopMatrix();
//border square left
glPushMatrix();
glTranslated(xBasePosition-14,yBasePosition,zBasePosition-14);
glRotated(+90,0,1,0);
glScaled(8,1,0.7);
cube(1,1,1);
glPopMatrix();
//border square right
glPushMatrix();
glTranslated(xBasePosition-1,yBasePosition,zBasePosition-14);
glRotated(+90,0,1,0);
glScaled(8,1,0.7);
cube(1,1,1);
glPopMatrix();
// Border down
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition+10.5);
glScaled(37,1,.80);
cube(1,1,1);
glPopMatrix();
//border square top
glPushMatrix();
glTranslated(xBasePosition-14,yBasePosition,zBasePosition+3);
glScaled(13.5,1,0.7);
cube(1,1,1);
glPopMatrix();
//border square left
glPushMatrix();
glTranslated(xBasePosition-14,yBasePosition,zBasePosition+3);
glRotated(-90,0,1,0);
glScaled(8,1,0.7);
cube(1,1,1);
glPopMatrix();
//border square right
glPushMatrix();
glTranslated(xBasePosition,yBasePosition,zBasePosition+3);
glRotated(-90,0,1,0);
glScaled(8,1,0.7);
cube(1,1,1);
glPopMatrix();
//middle line
glPushMatrix();
glTranslated(xBasePosition-26.5,yBasePosition,zBasePosition-4);
glScaled(37,1,.30);
cube(1,1,1);
glPopMatrix();
// Goal Post 1
glPushMatrix();
glTranslated(xBasePosition-4,yBasePosition,zBasePosition-22);
glScaled(1,8,1);
cube(0.85,0.85,0.85);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition-11,yBasePosition,zBasePosition-22);
glScaled(1,8,1);
cube(0.85,0.85,0.85);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition-11,yBasePosition+7,zBasePosition-22);
glScaled(7,1,1);
cube(0.85,0.85,0.85);
glPopMatrix();
// Goal Post 2
glPushMatrix();
glTranslated(xBasePosition-4,yBasePosition,zBasePosition+10);
glScaled(1,8,1);
cube(0.85,0.85,0.85);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition-11,yBasePosition,zBasePosition+10);
glScaled(1,8,1);
cube(0.85,0.85,0.85);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition-11,yBasePosition+7,zBasePosition+10);
glScaled(7,1,1);
cube(0.85,0.85,0.85);
glPopMatrix();
// sitting position
glPushMatrix();
glTranslated(xBasePosition+13.5,yBasePosition,zBasePosition-22);
glScaled(2,1.5,33);
cube(0.75,0.85,0.85);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition+15.5,yBasePosition,zBasePosition-22);
glScaled(2,3,33);
cube(0.75,0.55,0.85);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition+17.5,yBasePosition,zBasePosition-22);
glScaled(2,5.5,33);
cube(0.75,0.85,0.35);
glPopMatrix();
}
void createHills() {
float xBasePosition = -183;
float yBasePosition = 0.5-12-14;
float zBasePosition = -90;
// hill 1
glPushMatrix();
glTranslated(xBasePosition-83,yBasePosition-35,zBasePosition-11);
glRotated(40, 1, 0, 1);
glScaled(105,55,1);
cube(0.35,0.35,0.35);
glPopMatrix();
// hill 2
glPushMatrix();
glTranslated(xBasePosition-33,yBasePosition-30,zBasePosition-14);
glRotated(40, 1, 0, 1);
glScaled(115,55,1);
cube(0.75,0.35,0.35);
glPopMatrix();
// hill 3
glPushMatrix();
glTranslated(xBasePosition+43,yBasePosition-30,zBasePosition-12);
glRotated(47, 1, 0, 1);
glScaled(115,55,1);
cube(0.25,0.45,0.35);
glPopMatrix();
float rightShift = 172;
// hill 4
glPushMatrix();
glTranslated(xBasePosition-83+rightShift+2,yBasePosition-38,zBasePosition-3);
glRotated(46, 1, 0, 1);
glScaled(105,55,1);
cube(0.35,0.35,0.35);
glPopMatrix();
// hill 5
glPushMatrix();
glTranslated(xBasePosition+33+rightShift,yBasePosition-11,zBasePosition-44);
glRotated(60, 1, 0, 1);
glScaled(85,85,1);
cube(0.75,0.35,0.35);
glPopMatrix();
// hill 6
glPushMatrix();
glTranslated(xBasePosition+88+rightShift,yBasePosition-38,zBasePosition+2);
glRotated(45, 0, 0, 1);
glScaled(75,75,1);
cube(0.25,0.45,0.35);
glPopMatrix();
float rightShift2 = 350;
// hill 7
glPushMatrix();
glTranslated(xBasePosition-83+rightShift2+57,yBasePosition-44,zBasePosition-3);
glRotated(44, 0, 0, 1);
glScaled(85,85,1);
cube(0.35,0.35,0.35);
glPopMatrix();
// hill 8
glPushMatrix();
glTranslated(xBasePosition+33+rightShift2+72,yBasePosition-31,zBasePosition-44);
glRotated(55, 0, 0, 1);
glScaled(85,85,1);
cube(0.75,0.35,0.35);
glPopMatrix();
// hill 9
glPushMatrix();
glTranslated(xBasePosition+88+rightShift2+20,yBasePosition-44,zBasePosition+2);
glRotated(50, 0, 0, 1);
glScaled(75,75,1);
cube(0.25,0.45,0.35);
glPopMatrix();
}
float sunXPosition = -183;
float sunYPosition = 45;
float sunZPosition = -90;
float cloud1XPosition = -190;
float cloud1YPosition = 72;
float cloud1ZPosition = -57;
float cloud2XPosition = -253;
float cloud2YPosition = 45;
float cloud2ZPosition = -90;
float cloud3XPosition = -100;
float cloud4XPosition = 13;
void createSunAndCloud() {
// sun
circle(sunXPosition, sunYPosition, sunZPosition, 6, 255, 255, 0);
// cloud 1
circle(cloud1XPosition+14, cloud1YPosition, cloud1ZPosition, 5, 245, 255, 255);
circle(cloud1XPosition+23, cloud1YPosition, cloud1ZPosition, 8, 255, 245, 235);
circle(cloud1XPosition+32, cloud1YPosition, cloud1ZPosition, 5, 245, 255, 255);
// cloud 2
circle(cloud2XPosition+13, cloud2YPosition+13, cloud2ZPosition, 5, 245, 255, 255);
circle(cloud2XPosition+22, cloud2YPosition+13.5, cloud2ZPosition, 8, 255, 245, 245);
circle(cloud2XPosition+33, cloud2YPosition+13, cloud2ZPosition, 5, 245, 255, 255);
// cloud 3
circle(cloud3XPosition+14, cloud1YPosition-1.2, cloud1ZPosition, 5, 245, 255, 255);
circle(cloud3XPosition+23, cloud1YPosition-1.2, cloud1ZPosition, 8, 255, 245, 235);
circle(cloud3XPosition+32, cloud1YPosition-1.2, cloud1ZPosition, 5, 245, 255, 255);
// cloud 4
circle(cloud4XPosition+13, cloud2YPosition+13+1.5, cloud2ZPosition, 5, 245, 255, 255);
circle(cloud4XPosition+22, cloud2YPosition+13.5+1.5, cloud2ZPosition, 8, 255, 245, 245);
circle(cloud4XPosition+33, cloud2YPosition+13+1.5, cloud2ZPosition, 5, 245, 255, 255);
}
void road()
{
// Foot path
glPushMatrix();
glTranslated(-170,-10,64+1);
glScaled(400,1,4);
cube(0.7,0.7,0.7);
glPopMatrix();
//upper Border line
glPushMatrix();
glTranslated(-170,-10.5,69);
glScaled(400,0.7,.5);
cube(1,1,1);
glPopMatrix();
// Main road
glPushMatrix();
glTranslated(-170,-11,65.3);
glScaled(400,1,14);
cube(0,0,0);
glPopMatrix();
//lower Border line
glPushMatrix();
glTranslated(-170,-10.5,79.5);
glScaled(400,0.7,.45);
cube(1,1,1);
glPopMatrix();
// Foot path
glPushMatrix();
glTranslated(-170,-10,80.3);
glScaled(400,1,4);
cube(0.7,0.7,0.7);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-168,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-154,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-140,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-126,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-112,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-98,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-84,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-70,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-56,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-42,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-28,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(-14,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(0,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(14,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(28,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(42,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(56,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(210,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(196,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(182,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(168,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(154,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(140,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(126,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(112,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(98,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(84,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
//middle lines
glPushMatrix();
glTranslated(70,-10.5,75.3);
glScaled(8,1,.2);
cube(1,1,1);
glPopMatrix();
}
float windmillFan1Degree = 0;
float windmillFan2Degree = 120;
float windmillFan3Degree = 240;
void windMill(float xBasePosition,float yBasePosition,float zBasePosition) {
// pillar
glPushMatrix();
glTranslated(xBasePosition,yBasePosition,zBasePosition);
glScaled(2,26,2);
cube(0.9,0.9,0.9);
glPopMatrix();
// center circle
circle(xBasePosition+1, yBasePosition+24, zBasePosition+2, 2.5, 255, 255, 0);
// Fan 1
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+24,zBasePosition+2);
glRotated(windmillFan1Degree, 0, 0, 1);
glScaled(17,2,0.5);
cube(1,1,1);
glPopMatrix();
// Fan 2
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+24,zBasePosition+2);
glRotated(windmillFan2Degree, 0, 0, 1);
glScaled(17,2,0.5);
cube(1,1,1);
glPopMatrix();
// Fan 3
glPushMatrix();
glTranslated(xBasePosition,yBasePosition+24,zBasePosition+2);
glRotated(windmillFan3Degree, 0, 0, 1);
glScaled(17,2,0.5);
cube(1,1,1);
glPopMatrix();
}
void windMills() {
float xBasePosition = -150;
float yBasePosition = -10.5;
float zBasePosition = -25;
// windmill 1
windMill(xBasePosition, yBasePosition, zBasePosition);
// windmill 2
windMill(xBasePosition+37, yBasePosition, zBasePosition);
// windmill 3
windMill(xBasePosition+174, yBasePosition, zBasePosition);
// windmill 4
windMill(xBasePosition+214, yBasePosition, zBasePosition);
// windmill 5
windMill(xBasePosition+254, yBasePosition, zBasePosition);
// windmill 6
windMill(xBasePosition+294, yBasePosition, zBasePosition);
}
void createTree(float xBasePosition, float yBasePosition, float zBasePosition) {
// pillar
glPushMatrix();
glTranslated(xBasePosition, yBasePosition, zBasePosition);
glScaled(1, 10, 1);
cube(166/255.0, 137/255.0, 101/255.0);
glPopMatrix();
// center circle
circle(xBasePosition+1, yBasePosition+6.5, zBasePosition+1.4, 2.35, 0, 247, 32);
// outside circle 1
circle(xBasePosition+4.5, yBasePosition+8, zBasePosition+1.4, 2.5, 0, 235, 22);
// outside circle 2
circle(xBasePosition+2, yBasePosition+11, zBasePosition+1.4, 2.5, 0, 241, 32);
// outside circle 3
circle(xBasePosition-1.5, yBasePosition+8, zBasePosition+1.4, 2.5, 0, 242, 32);
}
void trees() {
float xBasePosition = -100;
float yBasePosition = -6.5;
float zBasePosition = 17;
// between windmill and hills
// tree x
createTree(xBasePosition-15, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition-30, yBasePosition, zBasePosition-52);
// tree x
createTree(xBasePosition-55, yBasePosition, zBasePosition-65);
// tree x
createTree(xBasePosition-65, yBasePosition, zBasePosition-60);
// tree x
createTree(xBasePosition-73, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition-88, yBasePosition, zBasePosition-50);
float shift1 = 45;
// tree x
createTree(xBasePosition-1+shift1, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition+18+shift1, yBasePosition, zBasePosition-52);
// tree x
createTree(xBasePosition+39+shift1, yBasePosition, zBasePosition-65);
// tree x
createTree(xBasePosition+65+shift1, yBasePosition, zBasePosition-60);
// tree x
createTree(xBasePosition+83+shift1, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition+98+shift1, yBasePosition, zBasePosition-50);
float shift2 = 130;
// tree x
createTree(xBasePosition-1+shift2, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition+28+shift2, yBasePosition, zBasePosition-52);
// tree x
createTree(xBasePosition+49+shift2, yBasePosition, zBasePosition-65);
// tree x
createTree(xBasePosition+85+shift2, yBasePosition, zBasePosition-60);
// tree x
createTree(xBasePosition+113+shift2, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition+150+shift2, yBasePosition, zBasePosition-50);
float shift3 = 180;
// tree x
createTree(xBasePosition-1+shift3, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition+28+shift3, yBasePosition, zBasePosition-52);
// tree x
createTree(xBasePosition+49+shift3, yBasePosition, zBasePosition-65);
// tree x
createTree(xBasePosition+85+shift3, yBasePosition, zBasePosition-60);
// tree x
createTree(xBasePosition+113+shift3, yBasePosition, zBasePosition-55);
// tree x
createTree(xBasePosition+150+shift3, yBasePosition, zBasePosition-50);
// between windmill and house
// tree x
createTree(xBasePosition-10, yBasePosition, zBasePosition-5);
// tree x
createTree(xBasePosition+4-8, yBasePosition, zBasePosition-11-5);
// tree x
createTree(xBasePosition+29-6, yBasePosition, zBasePosition-5);
// tree x
createTree(xBasePosition+33-7, yBasePosition, zBasePosition+18-5);
float shift4 = 120;
// tree x
createTree(xBasePosition+shift4-10, yBasePosition, zBasePosition-5);
// tree x
createTree(xBasePosition+4+shift4, yBasePosition, zBasePosition-11-5);
// tree x
createTree(xBasePosition+29+shift4-8, yBasePosition, zBasePosition-5);
// tree x
createTree(xBasePosition+37+shift4, yBasePosition, zBasePosition+18-14);
float shift5 = 189;
// tree x
createTree(xBasePosition+4+shift5, yBasePosition, zBasePosition-11-5);
// tree x
createTree(xBasePosition+29+shift5-8, yBasePosition, zBasePosition-5);
// tree x
createTree(xBasePosition+33+shift5, yBasePosition, zBasePosition+18-10);
// tree inside house
createTree(xBasePosition+122, yBasePosition, zBasePosition+23);
// tree inside house
createTree(xBasePosition+56, yBasePosition, zBasePosition+43);
}
void humanFrontFace(float xBasePosition,float yBasePosition, float zBasePosition) {
// Head
glPushMatrix();
circle(xBasePosition, yBasePosition+6.6, zBasePosition+1.3, 0.85, 249, 241, 210);
glPopMatrix();
// hair
glPushMatrix();
circle(xBasePosition, yBasePosition+7, zBasePosition+1.3, 0.75, 55, 66, 33);
glPopMatrix();
// Body (torso)
glPushMatrix();
glTranslated(xBasePosition-1.2, yBasePosition+5.0-2.5, zBasePosition+1);
glScaled(2.5, 3.5, 0.8);
cube(0.106, 0.051, 0.588);
glPopMatrix();
//left arm
glPushMatrix();
glTranslated(xBasePosition-1.35, yBasePosition+9.0-4, zBasePosition+1.2);
glRotated(45.0, 0.0, 0.0, 1.0);
glScaled(0.5, 3, 0.5);
cube(0.106, 0.051, 0.588);
glPopMatrix();
//left hand
glPushMatrix();
circle(xBasePosition-3.35, yBasePosition+11.4-4, zBasePosition+1.5, 0.5, 249, 241, 210);
glPopMatrix();
//right arm
glPushMatrix();
glTranslated(xBasePosition+0.6, yBasePosition+10.0-4.2, zBasePosition+1.5);
glRotated(-45.0, 0.0, 0.0, 1.0);
glScaled(0.8, 3, 0.8);
cube(0.106, 0.051, 0.588);
glPopMatrix();
//right hand
glPushMatrix();
circle(xBasePosition+3.6, yBasePosition+12.5-4.6, zBasePosition+1.5, 0.5, 249, 241, 210);
glPopMatrix();
//left leg
glPushMatrix();
glTranslated(xBasePosition -1.2, yBasePosition+0.7, zBasePosition+1);
glScaled(0.4, 2, 0.4);
cube(0.749, 1, 0);
glPopMatrix();
//left foot
glPushMatrix();
glTranslated(xBasePosition -1.3, yBasePosition, zBasePosition+1);
glScaled(0.6, 0.6, 0.6);
cube(0.4, 0.055, 0.055);
glPopMatrix();
//left leg
glPushMatrix();
glTranslated(xBasePosition+0.5+0.3, yBasePosition+0.7, zBasePosition+1);
glScaled(0.4, 2, 0.4);
cube(0.749, 1, 0);
glPopMatrix();
//left foot
glPushMatrix();
glTranslated(xBasePosition+0.5+0.2, yBasePosition, zBasePosition+1);
glScaled(0.6, 0.6, 0.6);
cube(0.4, 0.055, 0.055);
glPopMatrix();
}
void humanRightFace(float xBasePosition,float yBasePosition, float zBasePosition) {
// Head
glPushMatrix();
circle(xBasePosition, yBasePosition+6.6, zBasePosition+1.3, 0.85, 249, 241, 210);
glPopMatrix();
// hair
glPushMatrix();
circle(xBasePosition, yBasePosition+7, zBasePosition+1.3, 0.75, 55, 66, 33);
glPopMatrix();
// Body (torso)
glPushMatrix();
glTranslated(xBasePosition-1.2, yBasePosition+5.0-2.5, zBasePosition+1);
glScaled(2.5, 3.5, 0.8);
cube(0.106, 0.051, 0.588);
glPopMatrix();
//left arm
glPushMatrix();
glTranslated(xBasePosition-1.35, yBasePosition+9.0-4, zBasePosition+1.2);
glRotated(45.0, 0.0, 0.0, 1.0);
glScaled(0.5, 3, 0.5);
cube(0.106, 0.051, 0.588);
glPopMatrix();
//left hand
glPushMatrix();
circle(xBasePosition-3.35, yBasePosition+11.4-4, zBasePosition+1.5, 0.5, 249, 241, 210);
glPopMatrix();
//right arm
glPushMatrix();
glTranslated(xBasePosition+0.6, yBasePosition+10.0-4.2, zBasePosition+1.5);
glRotated(-45.0, 0.0, 0.0, 1.0);
glScaled(0.8, 3, 0.8);
cube(0.106, 0.051, 0.588);
glPopMatrix();
//right hand
glPushMatrix();
circle(xBasePosition+3.6, yBasePosition+12.5-4.6, zBasePosition+1.5, 0.5, 249, 241, 210);
glPopMatrix();
//left leg
glPushMatrix();
glTranslated(xBasePosition -1.2, yBasePosition+0.7, zBasePosition+1);
glScaled(0.4, 2, 0.4);
cube(0.749, 1, 0);
glPopMatrix();
//left foot
glPushMatrix();
glTranslated(xBasePosition -1.3, yBasePosition, zBasePosition+1);
glScaled(0.6, 0.6, 0.6);
cube(0.4, 0.055, 0.055);
glPopMatrix();
//left leg
glPushMatrix();
glTranslated(xBasePosition+0.5+0.3, yBasePosition+0.7, zBasePosition+1);
glScaled(0.4, 2, 0.4);
cube(0.749, 1, 0);
glPopMatrix();
//left foot
glPushMatrix();
glTranslated(xBasePosition+0.5+0.2, yBasePosition, zBasePosition+1);
glScaled(0.6, 0.6, 0.6);
cube(0.4, 0.055, 0.055);
glPopMatrix();
}
void humanXAxisFace(float xBasePosition,float yBasePosition, float zBasePosition) {
// Head
glPushMatrix();
circle(xBasePosition, yBasePosition+6.6, zBasePosition+1.3, 0.85, 249, 241, 210);
glPopMatrix();
// hair
glPushMatrix();
circle(xBasePosition, yBasePosition+7, zBasePosition+1.3, 0.75, 55, 66, 33);
glPopMatrix();
// Body (torso)
glPushMatrix();
glTranslated(xBasePosition-1.2, yBasePosition+5.0-2.5, zBasePosition+1);
glScaled(2.5, 3.5, 0.8);
cube(0.906, 0.451, 0.588);
glPopMatrix();
//left arm
glPushMatrix();
glTranslated(xBasePosition-2.35, yBasePosition+9.0-4, zBasePosition+1.2);
glScaled(1.4, 1, 0.5);
cube(0.106, 0.051, 0.588);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition-2.35, yBasePosition+9.0-5.3, zBasePosition+1.1);
glScaled(0.8, 1.5, 0.5);
cube(0.306, 5.051, 0.588);
glPopMatrix();
//left hand
glPushMatrix();
circle(xBasePosition-2.17, yBasePosition+11.4-7.9, zBasePosition+1.5, 0.5, 249, 241, 210);
glPopMatrix();
//right arm
glPushMatrix();
glTranslated(xBasePosition+0.6, yBasePosition+10.0-4.2-0.75, zBasePosition+1.5);
glScaled(2, 1, 0.5);
cube(0.106, 0.051, 0.588);
glPopMatrix();
glPushMatrix();
glTranslated(xBasePosition+1.8, yBasePosition+10.0-5.5-0.75, zBasePosition+1.5);
glScaled(0.8, 1.5, 0.5);
cube(0.306, 5.051, 0.588);
glPopMatrix();
//right hand
glPushMatrix();
circle(xBasePosition+1.8, yBasePosition+12.5-8.6, zBasePosition+1.3, 0.5, 249, 241, 210);
glPopMatrix();
//left leg
glPushMatrix();
glTranslated(xBasePosition -1.2, yBasePosition+0.7, zBasePosition+1);
glScaled(0.4, 2, 0.4);
cube(0.749, 1, 0);
glPopMatrix();
//left foot
glPushMatrix();
glTranslated(xBasePosition -1.3, yBasePosition, zBasePosition+1);
glScaled(0.6, 0.6, 0.6);
cube(0.4, 0.055, 0.055);
glPopMatrix();
//left leg
glPushMatrix();
glTranslated(xBasePosition+0.5+0.3, yBasePosition+0.7, zBasePosition+1);
glScaled(0.4, 2, 0.4);
cube(0.749, 1, 0);
glPopMatrix();
//left foot
glPushMatrix();
glTranslated(xBasePosition+0.5+0.2, yBasePosition, zBasePosition+1);
glScaled(0.6, 0.6, 0.6);
cube(0.4, 0.055, 0.055);
glPopMatrix();
}
float human1XBasePosition = -20;
float human1YBasePosition = -8.5;
float human1ZBasePosition = 66;
float human2XBasePosition = 56;
float human2YBasePosition = -8.5;
float human2ZBasePosition = 36;
float human3XBasePosition = 56;
float human3YBasePosition = -8.5;
float human3ZBasePosition = 59;
float human4XBasePosition = 56;
float human4YBasePosition = -8.5;
float human4ZBasePosition = 45;
float ballYAxis = 0.6;
float human5XBasePosition = 70.5;
float human5YBasePosition = -8.5;
float human5ZBasePosition = -38;
float human6XBasePosition = 56;
float human6YBasePosition = -8.5;
float human6ZBasePosition = 78;
void humans() {
// Human football watcher
glPushMatrix();
glRotatef(90.0f, 0.0f, 1.0f, 0.0f); // Rotate around the Y-axis by 45 degrees
humanRightFace(human1XBasePosition-20, human1YBasePosition, human1ZBasePosition+14);
glPopMatrix();
glPushMatrix();
glRotatef(90.0f, 0.0f, 1.0f, 0.0f); // Rotate around the Y-axis by 45 degrees
humanRightFace(human1XBasePosition-25.5, human1YBasePosition, human1ZBasePosition+14);
glPopMatrix();
// Goal Man 2
glPushMatrix();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f); // Rotate around the Y-axis by 45 degrees
humanRightFace(human4ZBasePosition+3, human1YBasePosition, human1ZBasePosition-133);
glPopMatrix();
// GoalPost Human 2
humanFrontFace(human2XBasePosition, human2YBasePosition, human2ZBasePosition);
// GoalPost Human 3
humanFrontFace(human3XBasePosition, human3YBasePosition, human3ZBasePosition);
// GoalPost Human 4
humanFrontFace(human4XBasePosition, human4YBasePosition, human4ZBasePosition);
// GoalPost football
circle(human4XBasePosition, human1YBasePosition+ballYAxis, human4ZBasePosition+2.6, 1, 255,243,233);
// footpath human 1
glPushMatrix();
glRotatef(90.0f, 0.0f, 1.0f, 0.0f); // Rotate around the Y-axis by 45 degrees
// human x axis face
humanXAxisFace(human5XBasePosition-139, human5YBasePosition, human5ZBasePosition-25);
glPopMatrix();
// footpath human 2
glPushMatrix();
glRotatef(90.0f, 0.0f, 1.0f, 0.0f); // Rotate around the Y-axis by 45 degrees
// human x axis face
humanXAxisFace(human6XBasePosition-139, human6YBasePosition, human6ZBasePosition-25);
glPopMatrix();
// footpath human 2
glPushMatrix();
glRotatef(90.0f, 0.0f, 1.0f, 0.0f); // Rotate around the Y-axis by 45 degrees
// human x axis face
humanXAxisFace(human6XBasePosition-139, human6YBasePosition, human6ZBasePosition+65);
glPopMatrix();
}
void car(float baseXPosition, float baseYPosition, float baseZPosition, float color1, float color2, float color3)
{
color1 = color1/255.0;
color2 = color2/255.0;
color3 = color3/255.0;
// chaka 1
circle(3.3+baseXPosition, -5.5+baseYPosition, 76+baseZPosition, 0.7, 221,221,221);
// chaka 1
circle(8.5+baseXPosition, -5.5+baseYPosition, 76+baseZPosition, 0.7, 221,221,221);
glPushMatrix();
glTranslated(1+baseXPosition,-6+baseYPosition,75+baseZPosition);
glScaled(1,1,1);
//Lower
glPushMatrix();
glTranslated(baseXPosition, baseYPosition, baseZPosition);
glScaled(9.80 ,1.75 ,1);
cube(color1,color2,color3);
glPopMatrix();
//Upper
glPushMatrix();
glTranslated(3.30+baseXPosition,3.60+baseYPosition,0+baseZPosition);
glScaled(3.5,.5,0);
cube(color1,color2,color3);
glPopMatrix();
//Left angle
glPushMatrix();
glTranslated(1+baseXPosition,1+baseYPosition,0+baseZPosition);
glRotated(43,0,0,1);
glScaled(3.80,.60,0.2);
cube(color1,color2,color3);
glPopMatrix();
//Divide
glPushMatrix();
glTranslated(5+baseXPosition,1.5+baseYPosition,0+baseZPosition);
glScaled(.5,2.5,0);
cube(color1,color2,color3);
glPopMatrix();
//Left Window
glBegin(GL_TRIANGLES);
glColor3f(0.0,0.0,0.0);
glVertex2f(4.0+baseXPosition,4.0+baseYPosition);
glColor3f(0.0,0.0,0.0);
glVertex2f(4.0+baseXPosition,0.0+baseYPosition);
glColor3f(0.0,0.0,0.0);
glVertex2f(0.0+baseXPosition,0.0+baseYPosition);
glEnd();
glPushMatrix();
glTranslated(4+baseXPosition,1.5+baseYPosition,0+baseZPosition);
glScaled(1,2.2,0);
cube(0.0,0.0,0.0);
glPopMatrix();
//Right angle
glPushMatrix();
glTranslated(6.50+baseXPosition,3.75+baseYPosition,0+baseZPosition);
glRotated(-45,0,0,1);
glScaled(3.30,.5,0);
cube(color1,color2,color3);
glPopMatrix();
//Right window
glPushMatrix();
glTranslated(5.5+baseXPosition,1.5+baseYPosition,0+baseZPosition);
glScaled(1,2.2,0);
cube(0.0,0.0,0.0);
glPopMatrix();
glBegin(GL_TRIANGLES);
glColor3f(0.0,0.0,0.0);
glVertex2f(6.5+baseXPosition,4.0+baseYPosition);
glColor3f(0.0,0.0,0.0);
glVertex2f(10+baseXPosition,0.0+baseYPosition);
glColor3f(0.0,0.0,0.0);
glVertex2f(6.5+baseXPosition,0.0+baseYPosition);
glEnd();
glPopMatrix();
}
float car1XAxis = -110;
float car2XAxis = 100;
void makeCars() {
//left to right car
glPushMatrix();
glTranslated(car1XAxis,0,0);
car(0, 0, 0, 0, 0, 245);
glPopMatrix();
//right to left car
glPushMatrix();
glTranslated(car2XAxis,0,4.4);
car(0, 0, 0, 211, 44, 0);
glPopMatrix();
//car on the field
glPushMatrix();
glTranslated(-70,0,-26.4);
car(0, 0, 0, 155, 23, 22);
glPopMatrix();
//car on the field
glPushMatrix();
glTranslated(-71,0,-17.4);
car(0, 0, 0, 233, 43, 233);
glPopMatrix();
//car on the field
glPushMatrix();
glTranslated(-69,0,-21.4);
car(0, 0, 0, 53, 53, 193);
glPopMatrix();
//car on the field
glPushMatrix();
glTranslated(-69,0,-12.4);
car(0, 0, 0, 53, 53, 193);
glPopMatrix();
}
void busX()
{
float baseXPosition = 0;
float baseYPosition = -6;
float baseZPosition = 0;
glPushMatrix();
glTranslated(11+baseXPosition,-1+baseYPosition,83.5+baseZPosition);
glScaled(20,7,5);
cube(0.5,0,0.7);
glPopMatrix();
glPushMatrix();
glTranslated(30+baseXPosition,-1+baseYPosition,83.5+baseZPosition);
glScaled(5,3.5,5);
cube(0.5,0,.2);
glPopMatrix();
glPushMatrix();
circle(26+baseXPosition,-1+baseYPosition, 88+baseZPosition, 1.5, 178.5,178.5,178.5);
glScaled(2,3.5,5);
glPopMatrix();
glPushMatrix();
circle(15+baseXPosition,-1+baseYPosition, 88+baseZPosition, 1.5, 178.5,178.5,178.5);
glScaled(2,3.5,5);
glPopMatrix();
glPushMatrix();
glTranslated(13+baseXPosition,2.5+baseYPosition,88+baseZPosition);
glScaled(2,2,1);
cube(1,1,1);
glPopMatrix();
glPushMatrix();
glTranslated(17+baseXPosition,2.5+baseYPosition,88+baseZPosition);
glScaled(2,2,1);
cube(1,1,1);
glPopMatrix();
glPushMatrix();
glTranslated(21+baseXPosition,2.5+baseYPosition,88+baseZPosition);
glScaled(2,2,1);
cube(1,1,1);
glPopMatrix();
glPushMatrix();
glTranslated(25+baseXPosition,2.5+baseYPosition,88+baseZPosition);
glScaled(2,2,1);
cube(1,1,1);
glPopMatrix();
glPushMatrix();
glTranslated(29+baseXPosition,2.5+baseYPosition,88+baseZPosition);
glScaled(1.7,2,1);
cube(1,1,1);
glPopMatrix();
}
float moveBusX = -90;
void bus() {
glPushMatrix();
glTranslated(moveBusX, 1, -12.5);
busX();
glPopMatrix();
}
float scalingFactor = 1;
void movingSun() {
// sun
sunYPosition += 0.001 * scalingFactor;
}
void movingClouds() {
// cloud 1
cloud1XPosition += 0.0125 * scalingFactor;
// cloud 2
cloud2XPosition += 0.02 * scalingFactor;
// cloud 3
cloud3XPosition += 0.0155 * scalingFactor;
// cloud 4
cloud4XPosition += 0.018 * scalingFactor;
}
void movingWindMill() {
// windmill 1
windmillFan1Degree -= 0.1 * scalingFactor;
windmillFan2Degree -= 0.1 * scalingFactor;
windmillFan3Degree -= 0.1 * scalingFactor;
}
float goalKeeper1MoveBy = 0.005;
float goalKeeper2MoveBy = -0.005;
float human4MoveBy = 0.005;
float footBallMoveBy = 0.009;
void MovingHumanInFootballField() {
human2XBasePosition += goalKeeper1MoveBy * scalingFactor;
if((int)human2XBasePosition == 59) {
goalKeeper1MoveBy = -0.005;
} else if((int)human2XBasePosition == 54) {
goalKeeper1MoveBy = 0.005;
}
human3XBasePosition += goalKeeper2MoveBy * scalingFactor;
if((int)human3XBasePosition == 51) {
goalKeeper2MoveBy = 0.005;
} else if((int)human3XBasePosition == 58) {
goalKeeper2MoveBy = -0.005;
}
human4ZBasePosition += human4MoveBy * scalingFactor;
if((int)human4ZBasePosition == 45) {
human4MoveBy = 0.005;
} else if((int)human4ZBasePosition == 55) {
human4MoveBy = -0.005;
}
ballYAxis += footBallMoveBy * scalingFactor;
if((int)ballYAxis == 4) {
footBallMoveBy = -0.009;
} else if((int)ballYAxis == 0) {
footBallMoveBy = 0.009;
}
}
float human5MoveBy = 0.0109;
float human6MoveBy = -0.0123;
movingHumanInFootPath() {
human5ZBasePosition += human5MoveBy * scalingFactor;
if((int)human5ZBasePosition == 108) {
human5MoveBy = -0.009;
} else if((int)human5ZBasePosition == -49) {
human5MoveBy = 0.009;
}
human6ZBasePosition += human6MoveBy * scalingFactor;
if((int)human5ZBasePosition == 108) {
human6MoveBy = 0.009;
} else if((int)human5ZBasePosition == -49) {
human6MoveBy = -0.009;
}
}
float car1MovingFactor = 0.05718;
float car2MovingFactor = -0.05318;
float car3MovingFactor = 0.05718;
void movingCars() {
car1XAxis += car1MovingFactor * scalingFactor;
;
car2XAxis += car2MovingFactor * scalingFactor;
printf("%2f \n", car1XAxis);
printf("%2f \n", car2XAxis);
if((int)car1XAxis == 66) {
car1XAxis = -100;
}
if((int)car2XAxis == -66) {
car2XAxis = 90;
}
}
void movingBus() {
moveBusX += car1MovingFactor*scalingFactor;
if((int)moveBusX == 90) {
moveBusX = -90;
}
}
void initMovingThings() {
movingSun();
movingClouds();
movingWindMill();
MovingHumanInFootballField();
movingHumanInFootPath();
movingCars();
movingBus();
}
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// near x, max x, near y, max y, near z, max z
glFrustum(-3.5, 3, -3, 3, 2.0, 800.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(eyeX,eyeY,eyeZ, lookX,lookY,lookZ, 0,1,0);
glViewport(0, 0, width, height);
createBaseField();
buildHouse();
buildPlayingField();
createHills();
createSunAndCloud();
windMills();
trees();
road();
makeCars();
humans();
bus();
initMovingThings();
glutSwapBuffers();
}
int main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowPosition(100,100);
glutInitWindowSize(900,700);
glutCreateWindow("Duplex House");
glShadeModel( GL_SMOOTH );
glEnable( GL_DEPTH_TEST );
glutDisplayFunc(display);
glutKeyboardFunc(key);
glutIdleFunc(display);
glutMainLoop();
return 0;
}
Editor is loading...