void ayipGazebo(float gazeboXPos, float gazeboYPos, float gazeboZPos, float gazeboEdge, float gazeboHeight) { //~~~~~~~~~~ defining variables // colors GLfloat raisedPlatformColor[3] = {.93, .91, .67}; // pale goldenrod GLfloat gazeboTopColor[3] = {.17, .36, .25}; // cucumber green GLfloat standingPlatformColor[3] = {.2, 0, 0}; // maroon GLfloat columnColor[3] = {.93, .85, .68}; // wheat // * supporting structures * // //--> standing platform const float gazeboPlatformEdge = gazeboEdge; const float gazeboPlatformHeight = .05*gazeboHeight; //--> raised platform const float gazeboRaisedPlatformEdge = .947*gazeboEdge; const float gazeboRaisedPlatformHeight = .1*gazeboPlatformHeight; //--> columns on the platform const float gazeboPlatformColEdge = .125*gazeboEdge; const float gazeboPlatformColHeight = .3*gazeboHeight; //--> columns below the platform const float gazeboBottomColEdge = .25*gazeboEdge; const float gazeboBottomColHeight = .2*gazeboHeight; // * ornamental structures * // //--> gazebo top const float gazeboTopEdge = 1.5*gazeboEdge; const float gazeboTopHeight = .445*gazeboHeight; // points to connect to create the top in an array const int numPoints = 5; twTriple points[numPoints] = { {0,gazeboPlatformHeight+gazeboRaisedPlatformHeight+gazeboPlatformColHeight+.9*gazeboTopHeight,0}, // top {-.5*gazeboTopEdge,gazeboPlatformHeight+gazeboRaisedPlatformHeight+gazeboPlatformColHeight-.27*gazeboTopHeight,.5*gazeboTopEdge}, //front left {.5*gazeboTopEdge,gazeboPlatformHeight+gazeboRaisedPlatformHeight+gazeboPlatformColHeight-.27*gazeboTopHeight,.5*gazeboTopEdge}, // front right {.5*gazeboTopEdge,gazeboPlatformHeight+gazeboRaisedPlatformHeight+gazeboPlatformColHeight-.27*gazeboTopHeight,-.5*gazeboTopEdge}, // back right {-.5*gazeboTopEdge,gazeboPlatformHeight+gazeboRaisedPlatformHeight+gazeboPlatformColHeight-.27*gazeboTopHeight,-.5*gazeboTopEdge} // back left }; //~~~~~~~~~~ drawing structures glTranslatef(0,gazeboBottomColHeight+.5*gazeboPlatformHeight,0); //-> draw standing platform glPushMatrix(); // begin gazebo platform matrix glColor3fv(standingPlatformColor); // set color to maroon glTranslatef(gazeboXPos,gazeboYPos,gazeboZPos); glPushMatrix(); glScalef(gazeboPlatformEdge,gazeboPlatformHeight,gazeboPlatformEdge); glutSolidCube(1); glPopMatrix(); glPopMatrix(); // end gazebo platform matrix //-> draw raised platform (on top of the main platform) glPushMatrix(); // begin gazebo raised platform matrix glColor3fv(raisedPlatformColor); // set color to pale goldenrod glTranslatef(0,.5*gazeboPlatformHeight+.5*gazeboRaisedPlatformHeight,0); glPushMatrix(); glScalef(gazeboRaisedPlatformEdge,gazeboRaisedPlatformHeight,gazeboRaisedPlatformEdge); glutSolidCube(1); glPopMatrix(); glPopMatrix(); // end gazebo raised platform matrix //-> draw columns on the platform glPushMatrix(); // begin gazebo platform columns matrix glColor3fv(columnColor); // set color to wheat //---> front left glTranslatef(-.5*gazeboPlatformEdge+.5*gazeboPlatformColEdge,.5*gazeboPlatformHeight+.5*gazeboPlatformColHeight,.5*gazeboPlatformEdge-.5*gazeboPlatformColEdge); glPushMatrix(); glScalef(gazeboPlatformColEdge,gazeboPlatformColHeight,gazeboPlatformColEdge); glutSolidCube(1); glPopMatrix(); //---> front right glTranslatef(gazeboPlatformEdge-gazeboPlatformColEdge,0,0); glPushMatrix(); glScalef(gazeboPlatformColEdge,gazeboPlatformColHeight,gazeboPlatformColEdge); glutSolidCube(1); glPopMatrix(); //---> back right glTranslatef(0,0,-gazeboPlatformEdge+gazeboPlatformColEdge); glPushMatrix(); glScalef(gazeboPlatformColEdge,gazeboPlatformColHeight,gazeboPlatformColEdge); glutSolidCube(1); glPopMatrix(); //---> back left glTranslatef(-gazeboPlatformEdge+gazeboPlatformColEdge,0,0); glPushMatrix(); glScalef(gazeboPlatformColEdge,gazeboPlatformColHeight,gazeboPlatformColEdge); glutSolidCube(1); glPopMatrix(); glPopMatrix(); // end gazebo platform columns matrix //-> draw columns below the platform glPushMatrix(); // begin gazebo bottom columns matrix //---> front left glTranslatef(-.5*gazeboPlatformEdge+.5*gazeboBottomColEdge,-.5*gazeboPlatformHeight-.5*gazeboBottomColHeight,.5*gazeboPlatformEdge-.5*gazeboBottomColEdge); glPushMatrix(); glScalef(gazeboBottomColEdge,gazeboBottomColHeight,gazeboBottomColEdge); glutSolidCube(1); glPopMatrix(); //---> front right glTranslatef(gazeboPlatformEdge-gazeboBottomColEdge,0,0); glPushMatrix(); glScalef(gazeboBottomColEdge,gazeboBottomColHeight,gazeboBottomColEdge); glutSolidCube(1); glPopMatrix(); //---> back right glTranslatef(0,0,-gazeboPlatformEdge+gazeboBottomColEdge); glPushMatrix(); glScalef(gazeboBottomColEdge,gazeboBottomColHeight,gazeboBottomColEdge); glutSolidCube(1); glPopMatrix(); //---> back left glTranslatef(-gazeboPlatformEdge+gazeboBottomColEdge,0,0); glPushMatrix(); glScalef(gazeboBottomColEdge,gazeboBottomColHeight,gazeboBottomColEdge); glutSolidCube(1); glPopMatrix(); glPopMatrix(); // end gazebo bottom column matrix //-> draw top glPushMatrix(); // begin gazebo top matrix glColor3fv(gazeboTopColor); // set color to cucumber glLineWidth(1); // set line width to 1 glPushMatrix(); // begin solid top matrix glBegin(GL_TRIANGLE_FAN); // front glVertex3fv(points[0]); glVertex3fv(points[1]); glVertex3fv(points[2]); // right glVertex3fv(points[3]); // back glVertex3fv(points[4]); // left glVertex3fv(points[1]); glEnd(); glPopMatrix(); // end solid top matrix glPopMatrix(); // end gazebo top matrix }