Main Page | Namespace List | Class List | File List | Class Members | File Members

airplane.cpp File Reference

#include <GL/glut.h>
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Functions

void setDiffuseMaterialColor (const float *mc)
void drawBody ()
void drawPropellerBlade ()
void drawPropeller ()
void drawWing ()
void drawTailRudderFrame ()
void drawTailRudder ()
void drawAirplane ()

Variables

float g_fPropellerAngle = 0.0f
float g_nPropellerRPS = 0
float g_fRudderAngle = 0.0f
float g_fPlaneAngle = 0.0f
bool g_bRotateLeft = false
bool g_bRotateRight = false
const float colorWhite [4] = { 1.0, 1.0, 1.0, 1.0 }
const float colorBlue [4] = { 0.0, 0.2, 1.0, 1.0 }
const float colorGreen [4] = { 0.0, 1, 0.0, 1.0 }
const float colorDarkGreen [4] = { 0.0, 0.5, 0.0, 1.0 }
const float colorNone [4] = { 0.0, 0.0, 0.0, 0.0 }
const float colorDarkGrey [4] = { 0.2, 0.2, 0.2, 0.0 }
const float colorDarkYellow [4] = { 0.8, 0.8, 0.0, 0.0 }
const float colorDarkRed [4] = { 0.5, 0.0, 0.0, 0.0 }
const float colorDarkBrown [4] = { 0.5, 0.3, 0.0, 0.0 }
const float colorSky [4] = { 0.4, 0.6, 1.0, 0.0 }


Function Documentation

void drawAirplane  ) 
 

Definition at line 211 of file airplane.cpp.

References drawBody(), drawPropeller(), drawTailRudder(), and drawWing().

00212 {
00213   // Draw body of the plane
00214   drawBody();
00215 
00216   // Draw wings of the plane
00217   glPushMatrix();
00218   glTranslatef( 0,-0.15,0 );
00219   drawWing();
00220   glPopMatrix();
00221 
00222   // Draw wing on the other side
00223   glPushMatrix();
00224   glTranslatef( 0,-0.15,0 );
00225   glRotatef( 180,1,0,0 );
00226   drawWing();
00227   glPopMatrix();
00228 
00229   // Draw propeller and tail rudder
00230   drawPropeller();
00231   drawTailRudder();
00232 }

void drawBody  ) 
 

Definition at line 49 of file airplane.cpp.

References colorBlue, and setDiffuseMaterialColor().

Referenced by drawAirplane().

00050 {
00051   glPushMatrix();
00052 
00053   // Setup material
00054   setDiffuseMaterialColor( colorBlue );
00055 
00056   //  glTranslatef( -2.5,0,0 );
00057   //  glRotatef( 90, 0,1,0 );
00058   //glutSolidCone( 0.5,6, 10,10 );
00059 
00060   glTranslatef( -0.7,0,0 );
00061   glScalef( 3,0.5,0.5 );
00062   glutSolidSphere( 1,20,20 );
00063 
00064   glPopMatrix();
00065 }

void drawPropeller  ) 
 

Definition at line 81 of file airplane.cpp.

References colorDarkGreen, drawPropellerBlade(), g_fPropellerAngle, and setDiffuseMaterialColor().

Referenced by drawAirplane().

00082 {
00083   // Setup material
00084   setDiffuseMaterialColor(colorDarkGreen);
00085 
00086   glPushMatrix();
00087   glTranslatef( 2.1, 0,0 );
00088   glRotatef( g_fPropellerAngle, 1,0,0 );
00089 
00090   // A sphere with three rectangular blades
00091   glPushMatrix();
00092   glScalef( 0.2, 0.2, 0.2 );
00093   glutSolidSphere( 1,15,15 );
00094   glPopMatrix();
00095 
00096   drawPropellerBlade();
00097   glRotatef( 120, 1,0,0 );
00098   drawPropellerBlade();
00099   glRotatef( 120, 1,0,0 );
00100   drawPropellerBlade();
00101 
00102   glPopMatrix();
00103 }

void drawPropellerBlade  ) 
 

Definition at line 68 of file airplane.cpp.

References colorDarkGreen, and setDiffuseMaterialColor().

Referenced by drawPropeller().

00069 {
00070   // Setup material
00071   setDiffuseMaterialColor(colorDarkGreen);
00072 
00073   glPushMatrix();
00074   glTranslatef( 0,0.5,0 );
00075   glScalef( 0.05, 1,0.15 );
00076   glRotatef( -15, 0,1,0 );
00077   glutSolidCube(1);
00078   glPopMatrix();
00079 }

void drawTailRudder  ) 
 

Definition at line 190 of file airplane.cpp.

References colorDarkRed, drawTailRudderFrame(), g_fRudderAngle, and setDiffuseMaterialColor().

Referenced by drawAirplane().

00191 {
00192   glPushMatrix();
00193   glTranslatef( -1.5, 0.3, 0 );
00194   glScalef( 1.5,1.5,1 );
00195 
00196   // Draw yellow tail unit which holds the rudder
00197   drawTailRudderFrame();
00198 
00199   // Draw rudder itself
00200   setDiffuseMaterialColor( colorDarkRed );
00201   glTranslatef( -0.7,0.5,0 );
00202   glRotatef( g_fRudderAngle, 0,1,0 );
00203   glScalef( 0.3,0.6,0.1 );
00204   glTranslatef( -0.5,0,0 );
00205   glutSolidCube(1);
00206 
00207   glPopMatrix();
00208 }

void drawTailRudderFrame  ) 
 

Definition at line 119 of file airplane.cpp.

References colorDarkYellow, and setDiffuseMaterialColor().

Referenced by drawTailRudder().

00120 {
00121   setDiffuseMaterialColor(colorDarkYellow);
00122 
00123   // The only more difficult object requires some predefined points
00124   const float z = 0.1;
00125 
00126   const float p0[3] = {0,0,-z};
00127   const float p1[3] = {-0.5,1,-z};
00128   const float p2[3] = { -0.7,   1,   -z };
00129   const float p3[3] = { -0.7, 0, -z };
00130 
00131   const float p0z[3] = {   0,  0,   z };
00132   const float p1z[3] = {-0.5,  1,   z };
00133   const float p2z[3] = { -0.7, 1, z };
00134   const float p3z[3] = { -0.7, 0, z };
00135 
00136   glBegin( GL_QUADS );
00137 
00138   // Side of tail unit at -z
00139   glNormal3f( 0,0,-1 );
00140   glVertex3fv( p3 );
00141   glVertex3fv( p2 );
00142   glVertex3fv( p1 );
00143   glVertex3fv( p0 );
00144 
00145   // Side of tail unit at +z
00146   glNormal3f( 0,0,1 );
00147   glVertex3fv( p0z );
00148   glVertex3fv( p1z );
00149   glVertex3fv( p2z );
00150   glVertex3fv( p3z );
00151   glEnd();
00152 
00153   // Two rectangular objects which 'hold' the rudder in place
00154   glPushMatrix();
00155   glTranslatef( -0.85,0.9,0 );
00156   glScalef( 0.3,0.2,2*z );
00157   glutSolidCube(1);
00158   glPopMatrix();
00159   glPushMatrix();
00160   glTranslatef( -0.85,0.1,0 );
00161   glScalef( 0.3,0.2,2*z );
00162   glutSolidCube(1);
00163   glPopMatrix();
00164 
00165   // Finally, the rectangles connecting the two sides
00166   glBegin( GL_QUADS );
00167 
00168   glNormal3f( 0,1,0 );
00169   glVertex3fv( p1  );
00170   glVertex3fv( p1z );
00171   glVertex3fv( p0z );
00172   glVertex3fv( p0  );
00173 
00174   glNormal3f( 0,1,0 );
00175   glVertex3fv( p1z);
00176   glVertex3fv( p1 );
00177   glVertex3fv( p2 );
00178   glVertex3fv( p2z  );
00179 
00180   glNormal3f( 1,0,0 );
00181   glVertex3fv( p2z );
00182   glVertex3fv( p2 );
00183   glVertex3fv( p3 );
00184   glVertex3fv( p3z  );
00185 
00186   glEnd();
00187 }

void drawWing  ) 
 

Definition at line 106 of file airplane.cpp.

References colorDarkYellow, and setDiffuseMaterialColor().

Referenced by drawAirplane().

00107 {
00108   setDiffuseMaterialColor(colorDarkYellow);
00109 
00110   glPushMatrix();
00111   glTranslatef( -0.5, 0, 1.75 );
00112   glRotatef( -10, 0,1,0 );
00113   glScalef( 2,0.15, 3 );
00114   glutSolidCube(1);
00115   glPopMatrix();
00116 }

void setDiffuseMaterialColor const float *  mc  ) 
 

Definition at line 39 of file airplane.cpp.

00040 {
00041   glMaterialfv(GL_FRONT, GL_DIFFUSE, mc );
00042   glMaterialfv(GL_FRONT, GL_AMBIENT, mc );
00043   glMaterialfv(GL_FRONT, GL_SPECULAR, colorNone );
00044   glColor4fv(mc);
00045 }


Variable Documentation

const float colorBlue[4] = { 0.0, 0.2, 1.0, 1.0 }
 

Definition at line 21 of file airplane.cpp.

Referenced by drawBody().

const float colorDarkBrown[4] = { 0.5, 0.3, 0.0, 0.0 }
 

Definition at line 28 of file airplane.cpp.

Referenced by renderScene().

const float colorDarkGreen[4] = { 0.0, 0.5, 0.0, 1.0 }
 

Definition at line 23 of file airplane.cpp.

Referenced by __draw_fog(), display(), drawPropeller(), and drawPropellerBlade().

const float colorDarkGrey[4] = { 0.2, 0.2, 0.2, 0.0 }
 

Definition at line 25 of file airplane.cpp.

Referenced by diffuseLighting(), and display().

const float colorDarkRed[4] = { 0.5, 0.0, 0.0, 0.0 }
 

Definition at line 27 of file airplane.cpp.

Referenced by drawTailRudder().

const float colorDarkYellow[4] = { 0.8, 0.8, 0.0, 0.0 }
 

Definition at line 26 of file airplane.cpp.

Referenced by drawTailRudderFrame(), and drawWing().

const float colorGreen[4] = { 0.0, 1, 0.0, 1.0 }
 

Definition at line 22 of file airplane.cpp.

const float colorNone[4] = { 0.0, 0.0, 0.0, 0.0 }
 

Definition at line 24 of file airplane.cpp.

Referenced by setDiffuseMaterialColor().

const float colorSky[4] = { 0.4, 0.6, 1.0, 0.0 }
 

Definition at line 29 of file airplane.cpp.

Referenced by streamVertex().

const float colorWhite[4] = { 1.0, 1.0, 1.0, 1.0 }
 

Definition at line 20 of file airplane.cpp.

Referenced by diffuseLighting(), and display().

bool g_bRotateLeft = false
 

Definition at line 14 of file airplane.cpp.

bool g_bRotateRight = false
 

Definition at line 15 of file airplane.cpp.

float g_fPlaneAngle = 0.0f
 

Definition at line 13 of file airplane.cpp.

float g_fPropellerAngle = 0.0f
 

Definition at line 8 of file airplane.cpp.

Referenced by drawPropeller().

float g_fRudderAngle = 0.0f
 

Definition at line 12 of file airplane.cpp.

Referenced by drawTailRudder().

float g_nPropellerRPS = 0
 

Definition at line 9 of file airplane.cpp.


Generated on Thu Jan 20 02:46:58 2005 for Main_Demo by doxygen 1.3.6