00001 #include "Objects.h"
00002
00003 void drawNet()
00004 {
00005 int x = 2, y = 2;
00006 float test;
00007 float startX = 0, startY = 0, startZ = 2;
00008
00009 glColor3f(RGB(0xDD), RGB(0xDD), RGB(0xDD));
00010
00011 glBegin(GL_POLYGON);
00012 glVertex3f(startX, startY+2, startZ);
00013 glVertex3f(startX, startY, startZ);
00014 glVertex3f(startX+0.3, startY, startZ);
00015 glVertex3f(startX+0.3, startY+2, startZ);
00016 glEnd();
00017
00018
00019 glBegin(GL_POLYGON);
00020 glVertex3f(startX+25.7, startY+2, startZ);
00021 glVertex3f(startX+25.7, startY, startZ);
00022 glVertex3f(startX+26.0, startY, startZ);
00023 glVertex3f(startX+26.0, startY+2, startZ);
00024 glEnd();
00025
00026
00027 glBegin(GL_POLYGON);
00028 glVertex3f(startX, startY+2, startZ);
00029 glVertex3f(startX, startY+2.3, startZ);
00030 glVertex3f(startX+26, startY+2.3, startZ);
00031 glVertex3f(startX+26, startY+2, startZ);
00032 glEnd();
00033
00034
00035
00036 test = 0;
00037 for(y=0; y <= 5; y++)
00038 {
00039 glPushMatrix();
00040 for(x=0; x <= 63; x++)
00041 {
00042
00043 glTranslated(0.4,test,0);
00044 glBegin(GL_POLYGON);
00045 glColor3f(RGB(0x7D), RGB(0x9A), RGB(0x7C));
00046 glVertex3f(startX, startY-0.02, startZ);
00047 glVertex3f(startX, startY+0.2, startZ);
00048 glVertex3f(startX+0.2, startY+0.2, startZ);
00049 glVertex3f(startX+0.2, startY-0.02, startZ);
00050 glEnd();
00051 test = 0;
00052 }
00053 glPopMatrix();
00054 test = 0.4*(float)y;
00055 }
00056
00057 }
00058
00059 void drawTable()
00060 {
00061
00062 glBegin(GL_POLYGON);
00063 glColor3f(RGB(0x6D), RGB(0x8A), RGB(0x6C));
00064 glVertex3f(0.3, -0.01, 0);
00065 glVertex3f(0.3, -0.01, 26);
00066 glVertex3f(25.7, -0.01, 26);
00067 glVertex3f(25.7, -0.01, 0);
00068 glEnd();
00069
00070
00071 glBegin(GL_POLYGON);
00072 glColor3f(1.0, 1.0, 1.0);
00073 glVertex3f(0, -0.011, 0.0);
00074 glVertex3f(0, -0.011, 26.3);
00075 glVertex3f(26, -0.011, 26.3);
00076 glVertex3f(26, -0.011, 0.0);
00077 glEnd();
00078
00079
00080 glBegin(GL_POLYGON);
00081 glColor3f(RGB(0x7A), RGB(0x7A), RGB(0x6C));
00082 glVertex3f(0.3,-0.01,0);
00083 glVertex3f(0.3,26,0);
00084 glVertex3f(25.7,26,0);
00085 glVertex3f(25.7,-0.01,0);
00086 glEnd();
00087
00088
00089 glBegin(GL_POLYGON);
00090 glColor3f(1.0, 1.0, 1.0);
00091 glVertex3f(0.0,0.0,-0.01);
00092 glVertex3f(0.0,26.3,-0.01);
00093 glVertex3f(26,26.3,-0.01);
00094 glVertex3f(26,0.0,-0.01);
00095 glEnd();
00096
00097
00098 drawNet();
00099 }
00100
00101
00102
00103 void drawRacket(float x, float y, float z)
00104 {
00105 static GLMmodel* pmodel = NULL;
00106
00107 glPushMatrix();
00108
00109 glTranslated(x,y,z);
00110
00111 glColor3f(RGB(0xFF), RGB(0xFF), RGB(255));
00112 if (!pmodel) {
00113 pmodel = glmReadOBJ("racket3.obj");
00114 if (!pmodel) exit(0);
00115 glmUnitize(pmodel);
00116 glmFacetNormals(pmodel);
00117 glmVertexNormals(pmodel, 90.0);
00118 glmScale(pmodel,2);
00119 }
00120 glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
00121 glPopMatrix();
00122 }
00123
00124 void drawBall()
00125 {
00126 glPushMatrix();
00127 glTranslated(ball.location[0], ball.location[1], ball.location[2]);
00128 glColor3f(1.0, 1.0, 1.0);
00129 glutSolidSphere(ball.radius,30,30);
00130 glPopMatrix();
00131 }
00132
00133 void drawBallShadow()
00134 {
00135 int i;
00136
00137 glPushMatrix();
00138 glTranslated(ball.location[0], 0.2, ball.location[2]);
00139 for(i = 0; i < 4; i++)
00140 {
00141 glRotated(90.0, 0.0, 1.0, 0.0);
00142 glBegin(GL_POLYGON);
00143 glColor3f(0.0, 0.0, 0.0);
00144 glVertex3f(0, 0.0, 0.0);
00145 glColor3f(RGB(0x6D), RGB(0x8A), RGB(0x6C));
00146
00147 glVertex3f(0, 0.0, 0.5);
00148 glVertex3f(0.5, 0.0, 0.5);
00149 glVertex3f(0.5, 0.0, 0.0);
00150 glEnd();
00151 }
00152 glPopMatrix();
00153 }
00154
00155 void drawRacketShadow()
00156 {
00157 int i;
00158
00159 glPushMatrix();
00160 glTranslated(racket.location[0], 0.2, racket.location[2]);
00161 for(i = 0; i < 4; i++)
00162 {
00163 glRotated(180.0, 0.0, 1.0, 0.0);
00164 glBegin(GL_POLYGON);
00165 glColor3f(0.0, 0.0, 0.0);
00166 glVertex3f(0, 0.0, 0.0);
00167 glColor3f(RGB(0x6D), RGB(0x8A), RGB(0x6C));
00168
00169 glVertex3f(0, 0.0, 0.5);
00170 glVertex3f(0.5, 0.0, 0.5);
00171 glVertex3f(2.0, 0.0, 0.0);
00172 glEnd();
00173
00174
00175 glBegin(GL_POLYGON);
00176 glColor3f(0.0, 0.0, 0.0);
00177 glVertex3f(0, 0.0, 0.0);
00178 glColor3f(RGB(0x6D), RGB(0x8A), RGB(0x6C));
00179
00180 glVertex3f(0, 0.0, 0.5);
00181 glVertex3f(-0.5, 0.0, 0.5);
00182 glVertex3f(-2.0, 0.0, 0.0);
00183 glEnd();
00184
00185 }
00186 glPopMatrix();
00187 }
00188
00189 void drawShadows()
00190 {
00191 drawRacketShadow();
00192 drawBallShadow();
00193 }
00194
00195 void drawPlane()
00196 {
00197
00198 glPushMatrix();
00199 glTranslated(12.5,-0.02,12.5);
00200
00201 glBegin(GL_POLYGON);
00202 glColor3f(RGB(0x6D), RGB(0x8A), RGB(0x6C));
00203 glVertex3f(-50, -0.02, -50);
00204 glVertex3f(-50, -0.02, 50);
00205 glVertex3f(50.0, -0.02, 50);
00206 glVertex3f(50.0, -0.02, -50);
00207 glEnd();
00208 glPopMatrix();
00209 }