void Model_Robot::draw(Model::DrawMode mode)
{

float lua = theta[LUA];
float lla = theta[LLA];
float rua = theta[RUA];
float rla = theta[RLA];
float lul = theta[LUL];
float lll = theta[LLL];
float rul = theta[RUL];
float rll = theta[RLL];


  torso();
  glPushMatrix();
    glTranslatef(0, head_height / 2, 0);
    head();
  glPopMatrix();
  glPushMatrix();
    glTranslatef(torso_radius, 0, 0);
    glRotatef(lua, 0, 0, 1);
    left_upper_arm();
    glTranslatef(upper_arm_height, 0, 0);
    glRotatef(lla, 0, 0, 1);
    left_lower_arm();
  glPopMatrix();
  glPushMatrix();
    glTranslatef(-torso_radius, 0, 0);
    glRotatef(rua, 0, 0, 1);
    right_upper_arm();
    glTranslatef(-upper_arm_height, 0, 0);
    glRotatef(rla, 0, 0, 1);
    right_lower_arm();
  glPopMatrix();
  glPushMatrix();
    glTranslatef(torso_radius, -torso_height, 0);
    glRotatef(lul, 1, 0, 0);
    left_upper_leg();
    glTranslatef(0, -upper_leg_height, 0);
    glRotatef(lll, 1, 0, 0);
    left_lower_leg();
  glPopMatrix();
  glPushMatrix();
    glTranslatef(-torso_radius, -torso_height, 0);
    glRotatef(rul, 1, 0, 0);
    right_upper_leg();
    glTranslatef(0, -upper_leg_height, 0);
    glRotatef(rll, 1, 0, 0);
    right_lower_leg();
  glPopMatrix();
}
void OddishModel::drawCyborg(GLuint texture1,GLuint texture2,GLuint texture3){
	glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
	glRotatef(thetaO[0], 0.0, 1.0, 0.0);
	glPushMatrix();
	glTranslatef(0,TORSO_HEIGHT_ODDISH-1.0, 0.0);
	torso(texture2);
	glPopMatrix();
	glPushMatrix();

	glTranslatef(0,TORSO_HEIGHT_ODDISH, 0.0);

	glTranslatef(0.0, NECK_HEIGHT_ODDISH+0.5*HEAD_HEIGHT_ODDISH-0.3, 0.0);
	head(texture1);

	glTranslatef(-0.70, NECK_HEIGHT_ODDISH+0.5*HEAD_HEIGHT_ODDISH+0.5, 0.0);
	glTranslatef(1.30, -0.6+NECK_HEIGHT_ODDISH+0.5*HEAD_HEIGHT_ODDISH, 0.0);

	glTranslatef(-0.5, -0.6+NECK_HEIGHT_ODDISH+0.5*HEAD_HEIGHT_ODDISH-4, 0.0);

	glPopMatrix();//add JOINT_POINT_
    glPushMatrix();//add JOINT_POINT_

    glTranslatef(-0.85*(TORSO_RADIUS_ODDISH+JOINT_POINT_RADIUS_ODDISH), 
    	0.9*TORSO_HEIGHT_ODDISH, 0.0);
    joint_point();

    glTranslatef(0.0, -0.5, 0.0);
    //glRotatef(thetaO[3], 1.0, 0.0, 0.0);
    glRotatef(thetaO[3], 1.0, 0.0, 0.0);
    glRotatef(thetaO[11], 0.0, 0.0, 1.0);
    left_upper_arm(texture3);

    glTranslatef(0.0, 0.0,UPPER_ARM_HEIGHT_ODDISH);
    joint_point();
/*
    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    glRotatef(thetaO[4], 1.0, 0.0, 0.0);
    left_lower_arm();
*/
    glTranslatef(0.0, 0.0, LOWER_ARM_HEIGHT_ODDISH);
	//left_hand();

    glPopMatrix();
    glPushMatrix();

    glTranslatef(0.85*(TORSO_RADIUS_ODDISH+JOINT_POINT_RADIUS_ODDISH), 
    	0.9*TORSO_HEIGHT_ODDISH, 0.0);
    joint_point();

    glTranslatef(0.4, -0.5, 0.0);
    glRotatef(thetaO[5], 1.0, 0.0, 0.0);
    glRotatef(thetaO[12], 0.0, 0.0, 1.0);
    right_upper_arm(texture3);

    glTranslatef(0.0, 0.0, UPPER_ARM_HEIGHT_ODDISH);
    joint_point();

	//glBindTexture(GL_TEXTURE_2D, texture4);
    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    glRotatef(thetaO[6], 1.0, 0.0, 0.0);
    right_lower_arm();

    glTranslatef(0.0, 0.0, LOWER_ARM_HEIGHT_ODDISH);
	//right_hand(texture3);

    glPopMatrix();
    glPushMatrix();

    glTranslatef(-(TORSO_RADIUS_ODDISH-JOINT_POINT_RADIUS_ODDISH), 
    	-0.15*JOINT_POINT_HEIGHT_ODDISH, 0.0);
	//joint_point();

    glTranslatef(0, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    glRotatef(thetaO[7], 1.0, 0.0, 0.0);
    glRotatef(thetaO[13], 0.0, 0.0, 1.0);
    //left_upper_leg();

    glTranslatef(0.0, UPPER_LEG_HEIGHT_ODDISH, 0.0);
	//joint_point();

    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    glRotatef(thetaO[8], 1.0, 0.0, 0.0);
    //left_lower_leg();

    glTranslatef(0.7, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    //glTranslatef(0.0, LOWER_LEG_HEIGHT_ODDISH_ODDISH, -0.5*FOOT_HEIGHT_ODDISH);
    glRotatef(thetaO[15], 1.0, 0.0, 0.0);
    left_foot(texture3);

    glPopMatrix();
    glPushMatrix();

    glTranslatef(TORSO_RADIUS_ODDISH-JOINT_POINT_RADIUS_ODDISH, 
    	-0.15*JOINT_POINT_HEIGHT_ODDISH, 0.0);
	//joint_point();

    glTranslatef(0, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    glRotatef(thetaO[9], 1.0, 0.0, 0.0);
    glRotatef(thetaO[14], 0.0, 0.0, 1.0);
    //right_upper_leg();

    glTranslatef(0.0, UPPER_LEG_HEIGHT_ODDISH, 0.0);
	//joint_point();

    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_ODDISH, 0.0);
    glRotatef(thetaO[10], 1.0, 0.0, 0.0);
    //right_lower_leg();

    glTranslatef(-0.3, 0.1*JOINT_POINT_HEIGHT_ODDISH-0.2, 0.0);
	//glTranslatef(0.0, LOWER_LEG_HEIGHT_ODDISH_ODDISH, -0.5*FOOT_HEIGHT_ODDISH);
    glRotatef(thetaO[11], 1.0, 0.0, 0.0);
    right_foot(texture3);
    
    glPopMatrix();
}
Beispiel #3
0
void
display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    mvstack.push( model_view );
    model_view = RotateY( theta[Torso] );
    torso();

    model_view *= ( Translate( 0.0, TORSO_HEIGHT + 0.5 * HEAD_HEIGHT, 0.0 ) *
		    RotateX( theta[Head1] ) *
		    RotateY( theta[Head2] ) *
		    Translate( 0.0, -0.5 * HEAD_HEIGHT, 0.0 ) );

    head();
    model_view = mvstack.pop();

    mvstack.push( model_view );
    model_view *= ( Translate( -( TORSO_WIDTH + UPPER_ARM_WIDTH ),
                                0.9 * TORSO_HEIGHT, 0.0 ) *
		    RotateX( theta[LeftUpperArm] ) );
    left_upper_arm();

    model_view *= ( Translate( 0.0, UPPER_ARM_HEIGHT, 0.0 ) *
		    RotateX( theta[LeftLowerArm] ) );

    left_lower_arm();
    model_view = mvstack.pop();

    mvstack.push( model_view );
    model_view *= ( Translate( TORSO_WIDTH + UPPER_ARM_WIDTH,
                                0.9 * TORSO_HEIGHT, 0.0 ) *
		   RotateX( theta[RightUpperArm] ) );

    right_upper_arm();

    model_view *= ( Translate( 0.0, UPPER_ARM_HEIGHT, 0.0 ) *
		   RotateX( theta[RightLowerArm] ) );

    right_lower_arm();
    model_view = mvstack.pop();

    mvstack.push( model_view );
    model_view *= ( Translate( -( TORSO_WIDTH + UPPER_LEG_WIDTH ),
                                0.1 * UPPER_LEG_HEIGHT, 0.0 ) *
		    RotateX( theta[LeftUpperLeg] ) );

    left_upper_leg();

    model_view *= ( Translate( 0.0, UPPER_LEG_HEIGHT, 0.0 ) *
		    RotateX( theta[LeftLowerLeg] ) );

    left_lower_leg();
    model_view = mvstack.pop();

    mvstack.push( model_view );
    model_view *= ( Translate( TORSO_WIDTH + UPPER_LEG_WIDTH,
			       0.1 * UPPER_LEG_HEIGHT, 0.0 ) *
		    RotateX( theta[RightUpperLeg] ) );

    right_upper_leg();

    model_view *= ( Translate( 0.0, UPPER_LEG_HEIGHT, 0.0 ) *
		    RotateX( theta[RightLowerLeg] ) );

    right_lower_leg();
    model_view = mvstack.pop();

    glutSwapBuffers();
}
void MarillModel::drawCyborg(GLuint texture1,GLuint texture2,GLuint texture3,GLuint texture4){
	glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
	glRotatef(thetaM[0], 0.0, 1.0, 0.0);
	glPushMatrix();
	glTranslatef(0,TORSO_HEIGHT_MARILL-1.0, 0.0);
	torso(texture3);
	glPopMatrix();
	glPushMatrix();

	glTranslatef(0,TORSO_HEIGHT_MARILL, 0.0);
	neck();

	glTranslatef(0.0, NECK_HEIGHT_MARILL+0.5*HEAD_HEIGHT_MARILL-0.3, 0.0);
			//glRotatef(theta[1], 1.0, 0.0, 0.0);
		    //glRotatef(theta[2], 0.0, 1.0, 0.0);

	head(texture2);

	glTranslatef(-0.70, NECK_HEIGHT_MARILL+0.5*HEAD_HEIGHT_MARILL+0.5, 0.0);
	right_ear(texture1);
	glTranslatef(1.30, -0.6+NECK_HEIGHT_MARILL+0.5*HEAD_HEIGHT_MARILL, 0.0);
	left_ear(texture1);

	glTranslatef(-0.5, -0.6+NECK_HEIGHT_MARILL+0.5*HEAD_HEIGHT_MARILL-4, 0.0);
	tail(texture4);

	glPopMatrix();//add JOINT_POINT_
    glPushMatrix();//add JOINT_POINT_

    glTranslatef(-0.85*(TORSO_RADIUS_MARILL+JOINT_POINT_RADIUS_MARILL), 
    	0.9*TORSO_HEIGHT_MARILL, 0.0);
    joint_point();

    glTranslatef(0.0, 0.0, 0.0);
    glRotatef(thetaM[3], 1.0, 0.0, 0.0);
    glRotatef(thetaM[11], 0.0, 0.0, 1.0);
    left_upper_arm(texture4);

    glTranslatef(0.0, 0.0,UPPER_ARM_HEIGHT_MARILL);
    joint_point();
/*
    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    glRotatef(thetaM[4], 1.0, 0.0, 0.0);
    left_lower_arm();
*/
    glTranslatef(0.0, 0.0, LOWER_ARM_HEIGHT_MARILL);
	//left_hand();

    glPopMatrix();
    glPushMatrix();

    glTranslatef(0.85*(TORSO_RADIUS_MARILL+JOINT_POINT_RADIUS_MARILL), 
    	0.9*TORSO_HEIGHT_MARILL, 0.0);
    joint_point();

    glTranslatef(0.0, 0.0, 0.0);
    glRotatef(thetaM[5], 1.0, 0.0, 0.0);
    glRotatef(thetaM[12], 0.0, 0.0, 1.0);
    right_upper_arm(texture4);

    glTranslatef(0.0, 0.0, UPPER_ARM_HEIGHT_MARILL);
    joint_point();

	//glBindTexture(GL_TEXTURE_2D, texture4);
    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    glRotatef(thetaM[6], 1.0, 0.0, 0.0);
    right_lower_arm();

    glTranslatef(0.0, 0.0, LOWER_ARM_HEIGHT_MARILL);
	//right_hand(texture3);

    glPopMatrix();
    glPushMatrix();

    glTranslatef(-(TORSO_RADIUS_MARILL-JOINT_POINT_RADIUS_MARILL), 
    	-0.15*JOINT_POINT_HEIGHT_MARILL, 0.0);
	//joint_point();

    glTranslatef(0, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    glRotatef(thetaM[7], 1.0, 0.0, 0.0);
    glRotatef(thetaM[13], 0.0, 0.0, 1.0);
    //left_upper_leg();

    glTranslatef(0.0, UPPER_LEG_HEIGHT_MARILL, 0.0);
	//joint_point();

    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    glRotatef(thetaM[8], 1.0, 0.0, 0.0);
    //left_lower_leg();

    glTranslatef(0.7, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    //glTranslatef(0.0, LOWER_LEG_HEIGHT_MARILL_MARILL, -0.5*FOOT_HEIGHT_MARILL);
    glRotatef(thetaM[15], 1.0, 0.0, 0.0);
    left_foot(texture4);

    glPopMatrix();
    glPushMatrix();

    glTranslatef(TORSO_RADIUS_MARILL-JOINT_POINT_RADIUS_MARILL, 
    	-0.15*JOINT_POINT_HEIGHT_MARILL, 0.0);
	//joint_point();

    glTranslatef(0, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    glRotatef(thetaM[9], 1.0, 0.0, 0.0);
    glRotatef(thetaM[14], 0.0, 0.0, 1.0);
    //right_upper_leg();

    glTranslatef(0.0, UPPER_LEG_HEIGHT_MARILL, 0.0);
	//joint_point();

    glTranslatef(0.0, 0.1*JOINT_POINT_HEIGHT_MARILL, 0.0);
    glRotatef(thetaM[10], 1.0, 0.0, 0.0);
    //right_lower_leg();

    glTranslatef(-0.3, 0.1*JOINT_POINT_HEIGHT_MARILL-0.2, 0.0);
	//glTranslatef(0.0, LOWER_LEG_HEIGHT_MARILL_MARILL, -0.5*FOOT_HEIGHT_MARILL);
    glRotatef(thetaM[11], 1.0, 0.0, 0.0);
    right_foot(texture4);
    
    glPopMatrix();
}