void sjudgePenguin(int size) { twTriple black = {0,0,0}; twTriple orange = {255.0/255,140.0/255,0}; twTriple white = {1,1,1}; twTriple tie = {55.0/255,123.0/255,230.0/255}; //right foot coordinates int RFootTranslateX = size; double RFootTranslateZ = -size*0.2; //left foot coordinates int LFootTranslateX = -size; double LFootTranslateZ = -size*0.2; //foot coordinates double FootSize = size*0.3; //body int penguinHeight = 2*size; double BodyTranslateZ = -0.2*size; int bodySize = size; //back part of the body double BBodyTranslateY = -0.2*size; double BBodyTranslateZ = -0.5*size; //arms double penguinArms = 2.7*size; double ArmTranslateZ = -0.5*size; double RArmTranslateX = size; double RArmTranslateY = 0.05*size; double LArmTranslateX = -size; double LArmTranslateY = 0.05*size; double armSize = 0.2*size; double armCylinderB =0.4*size; double armCylinderH = 0.1*size; //tie constants double tieHeight = 2.9*size; double TieTranslateZ = 0.4*size; //head constants double penguinHead = 3.7*size; double HeadTranslateZ = -0.5*size; double headSize = 0.6*size; //beak double BeakTranslateY = 0.1*size; double BeakTranslateZ = 0.3*size; double BeakBase = 0.4*size; double BeakHeight = 0.8*size; //right eye double REyeTranslateX = 0.4*size; double REyeTranslateZ = 0.2*size; double eyeSizeW = 0.2*size; double BREyeTranslateX = 0.1*size; double BREyeTranslateZ = 0.1*size; double eyeSizeB = 0.1*size; //left eye double LEyeTranslateX = -0.4*size; double LEyeTranslateZ = 0.2*size; double BLEyeTranslateX = -0.1*size; double BLEyeTranslateZ = 0.1*size; //tail double TailTranslateY = 0.8*size; double TailTranslateZ = -1.2*size; double TailBase = 0.8*size; double TailTop = 0.005*size; double TailHeight = 1.5*size; twTriple penguin[24] = { {-0.3*size,0,0}, //foot coordinates 0 {0.3*size,0,0}, //1 {0,0,-0.5*size}, //2 {-0.6*size,0,0}, //right leg 3 {0,0,0}, //4 {0,0,-0.2*size}, //5 {-0.6*size,0,-0.2*size}, //6 //top part {-0.6*size,size,0}, //7 {-0.6*size,size,-0.2*size}, //8 {0,0,0}, //left leg 9 {0.6*size,0,0}, //10 {0.6*size,0,-0.2*size}, //11 {0,0,-0.2*size}, //12 //top part {0.6*size,size,0}, //13 {0.6*size,size,-0.2*size}, //14 //tie coordinates {-0.2*size,0.1*size,0}, //15 {-0.1*size,-0.1*size,0}, //16 {0.1*size,-0.1*size,0}, //17 {0.2*size,0.1*size,0}, //18 //bottom part of the tie {-0.1*size,-0.1*size,0}, //19 {-0.2*size,-1.5*size,0}, //20 {0,-1.8*size,0}, //21 {0.2*size,-1.5*size,0}, //22 {0.1*size,-0.1*size,0}, //23 }; glShadeModel(GL_SMOOTH); //right foot twColor(orange,0.7,5); glPushMatrix(); glTranslatef(RFootTranslateX,0,RFootTranslateZ); glPushMatrix(); glRotatef(30,0,1,0); glRotatef(90,1,0,0); twDisk(FootSize,6); glPopMatrix(); glBegin(GL_TRIANGLES); { glNormal3f(0,1,0); glVertex3fv(penguin[0]); glVertex3fv(penguin[1]); glVertex3fv(penguin[2]); } glEnd(); glBegin(GL_POLYGON); { glNormal3f(0,1,0); glVertex3fv(penguin[3]); glVertex3fv(penguin[4]); glVertex3fv(penguin[5]); glVertex3fv(penguin[6]); } glEnd(); glBegin(GL_POLYGON); { glNormal3f(1,0,0); glVertex3fv(penguin[3]); glVertex3fv(penguin[6]); glVertex3fv(penguin[8]); glVertex3fv(penguin[7]); } glEnd(); glPopMatrix(); // back to the origin //left foot glPushMatrix(); glTranslatef(LFootTranslateX,0,LFootTranslateZ); glPushMatrix(); glRotatef(30,0,1,0); glRotatef(90,1,0,0); twDisk(FootSize,6); glPopMatrix(); glBegin(GL_TRIANGLES); { glNormal3f(0,1,0); glVertex3fv(penguin[0]); glVertex3fv(penguin[1]); glVertex3fv(penguin[2]); } glEnd(); glBegin(GL_POLYGON); { glNormal3f(0,1,0); glVertex3fv(penguin[9]); glVertex3fv(penguin[10]); glVertex3fv(penguin[11]); glVertex3fv(penguin[12]); } glEnd(); glBegin(GL_POLYGON); { glNormal3f(-1,0,0); glVertex3fv(penguin[10]); glVertex3fv(penguin[13]); glVertex3fv(penguin[14]); glVertex3fv(penguin[11]); } glEnd(); glPopMatrix(); // back to origin //body twColor(white,5,10); glPushMatrix(); glTranslatef(0,penguinHeight,BodyTranslateZ); glPushMatrix(); glScalef(0.7,1.5,0.7); glutSolidSphere(bodySize,20,20); glPopMatrix(); //black part of body twColor(black, 5, 10); glTranslatef(0,BBodyTranslateY,BBodyTranslateZ); glPushMatrix(); glRotatef(10,1,0,0); glScalef(1,1.8,1); glutSolidSphere(bodySize,20,20); glPopMatrix(); glPopMatrix(); // back to origin //right arm glPushMatrix(); glTranslatef(0,penguinArms,ArmTranslateZ); glPushMatrix(); glTranslatef(RArmTranslateX,0,0); glRotatef(-30,0,0,1); glPushMatrix(); glScalef(10,.5,3); glutSolidCube(armSize); glPopMatrix(); glTranslatef(RArmTranslateX,RArmTranslateY,0); glRotatef(30,0,1,0); twSolidCylinder(armCylinderB,armCylinderB,armCylinderH,6,6); glPopMatrix(); //left arm glTranslatef(LArmTranslateX,0,0); glRotatef(30,0,0,1); glPushMatrix(); glScalef(10,.5,3); glutSolidCube(armSize); glPopMatrix(); glTranslatef(LArmTranslateX,LArmTranslateY,0); glRotatef(30,0,1,0); twSolidCylinder(armCylinderB,armCylinderB,armCylinderH,6,6); glPopMatrix(); //back to origin //tie twColor(tie,5,10); glPushMatrix(); glTranslatef(0,tieHeight,TieTranslateZ); glRotatef(-10,1,0,0); glBegin(GL_POLYGON); { glNormal3f(0,0,1); glVertex3fv(penguin[15]); glVertex3fv(penguin[16]); glVertex3fv(penguin[17]); glVertex3fv(penguin[18]); } glEnd(); glBegin(GL_POLYGON); { glNormal3f(0,0,1); glVertex3fv(penguin[19]); glVertex3fv(penguin[20]); glVertex3fv(penguin[21]); glVertex3fv(penguin[22]); glVertex3fv(penguin[23]); } glEnd(); glPopMatrix(); //head twColor(black,5,10); glPushMatrix(); glTranslatef(0,penguinHead,HeadTranslateZ); glutSolidSphere(headSize,20,20); //beak twColor(orange,5,10); glPushMatrix(); glTranslatef(0,BeakTranslateY,BeakTranslateZ); glRotatef(-20,1,0,0); glutSolidCone(BeakBase,BeakHeight,20,20); glPopMatrix(); //right eye glPushMatrix(); twColor(white,0.7,1); glTranslatef(REyeTranslateX,0,REyeTranslateZ); glutSolidSphere(eyeSizeW,20,20); twColor(black,0.7,1); glTranslatef(BREyeTranslateX,0,BREyeTranslateZ); glutSolidSphere(eyeSizeB,20,20); glPopMatrix(); //left eye glPushMatrix(); twColor(white,0.7,1); glTranslatef(LEyeTranslateX,0,LEyeTranslateZ); glutSolidSphere(eyeSizeW,20,20); twColor(black,0.7,1); glTranslatef(BLEyeTranslateX,0,BLEyeTranslateZ); glutSolidSphere(eyeSizeB,20,20); glPopMatrix(); glPopMatrix(); //origin //tail twColor(black,5,10); glPushMatrix(); glTranslatef(0,TailTranslateY,TailTranslateZ); glRotatef(55,1,0,0); twSolidCylinder(TailBase, TailTop, TailHeight, 20,20); glPopMatrix(); //origin }