87
86
const double pi = 3.14159264;
90
r1 = (float)(outer_radius - tooth_depth/2.0);
91
r2 = (float)(outer_radius + tooth_depth/2.0);
89
r1 = (float)(outer_radius - tooth_depth / 2.0);
90
r2 = (float)(outer_radius + tooth_depth / 2.0);
93
da = (float)(2.0*pi / teeth / 4.0);
92
da = (float)(2.0 * pi / teeth / 4.0);
95
94
glShadeModel(GL_FLAT);
96
95
glNormal3f(0.0, 0.0, 1.0);
98
97
/* draw front face */
99
98
glBegin(GL_QUAD_STRIP);
100
for (i=0;i<=teeth;i++) {
101
angle = (float)(i * 2.0*pi / teeth);
102
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(width*0.5));
103
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(width*0.5));
104
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(width*0.5));
105
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(width*0.5));
99
for (i = 0; i <= teeth; i++) {
100
angle = (float)(i * 2.0 * pi / teeth);
101
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5));
102
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5));
103
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5));
104
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5));
109
108
/* draw front sides of teeth */
110
109
glBegin(GL_QUADS);
111
da = (float)(2.0*pi / teeth / 4.0);
112
for (i=0;i<teeth;i++) {
113
angle = (float)(i * 2.0*pi / teeth);
114
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(width*0.5));
115
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(width*0.5));
116
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(width*0.5));
117
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(width*0.5));
110
da = (float)(2.0 * pi / teeth / 4.0);
111
for (i = 0; i < teeth; i++) {
112
angle = (float)(i * 2.0 * pi / teeth);
113
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5));
114
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5));
115
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(width * 0.5));
116
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5));
123
122
/* draw back face */
124
123
glBegin(GL_QUAD_STRIP);
125
for (i=0;i<=teeth;i++) {
126
angle = (float)(i * 2.0*pi / teeth);
127
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(-width*0.5));
128
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(-width*0.5));
129
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(-width*0.5));
130
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(-width*0.5));
124
for (i = 0; i <= teeth; i++) {
125
angle = (float)(i * 2.0 * pi / teeth);
126
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5));
127
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5));
128
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5));
129
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5));
134
133
/* draw back sides of teeth */
135
134
glBegin(GL_QUADS);
136
da = (float)(2.0*pi / teeth / 4.0);
137
for (i=0;i<teeth;i++) {
138
angle = (float)(i * 2.0*pi / teeth);
139
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(-width*0.5));
140
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(-width*0.5));
141
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(-width*0.5));
142
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(-width*0.5));
135
da = (float)(2.0 * pi / teeth / 4.0);
136
for (i = 0; i < teeth; i++) {
137
angle = (float)(i * 2.0 * pi / teeth);
138
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5));
139
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(-width * 0.5));
140
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5));
141
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5));
146
145
/* draw outward faces of teeth */
147
146
glBegin(GL_QUAD_STRIP);
148
for (i=0;i<teeth;i++) {
149
angle = (float)(i * 2.0*pi / teeth);
150
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(width*0.5));
151
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(-width*0.5));
152
u = (float)(r2*cos(angle+da) - r1*cos(angle));
153
v = (float)(r2*sin(angle+da) - r1*sin(angle));
154
len = (float)(sqrt(u*u + v*v));
147
for (i = 0; i < teeth; i++) {
148
angle = (float)(i * 2.0 * pi / teeth);
149
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5));
150
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5));
151
u = (float)(r2 * cos(angle + da) - r1 * cos(angle));
152
v = (float)(r2 * sin(angle + da) - r1 * sin(angle));
153
len = (float)(sqrt(u * u + v * v));
157
156
glNormal3f(v, -u, 0.0);
158
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(width*0.5));
159
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(-width*0.5));
157
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5));
158
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5));
160
159
glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0);
161
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(width*0.5));
162
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(-width*0.5));
163
u = (float)(r1*cos(angle+3*da) - r2*cos(angle+2*da));
164
v = (float)(r1*sin(angle+3*da) - r2*sin(angle+2*da));
160
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(width * 0.5));
161
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(-width * 0.5));
162
u = (float)(r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da));
163
v = (float)(r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da));
165
164
glNormal3f(v, -u, 0.0);
166
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(width*0.5));
167
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(-width*0.5));
165
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5));
166
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5));
168
167
glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0);
170
glVertex3f((float)(r1*cos(0.0)), (float)(r1*sin(0.0)), (float)(width*0.5));
171
glVertex3f((float)(r1*cos(0.0)), (float)(r1*sin(0.0)), (float)(-width*0.5));
169
glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(width * 0.5));
170
glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(-width * 0.5));
174
173
glShadeModel(GL_SMOOTH);
176
175
/* draw inside radius cylinder */
177
176
glBegin(GL_QUAD_STRIP);
178
for (i=0;i<=teeth;i++) {
179
angle = (float)(i * 2.0*pi / teeth);
177
for (i = 0; i <= teeth; i++) {
178
angle = (float)(i * 2.0 * pi / teeth);
180
179
glNormal3f((float)(-cos(angle)), (float)(-sin(angle)), 0.0);
181
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(-width*0.5));
182
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(width*0.5));
180
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5));
181
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5));
205
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared);
206
gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f);
209
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen);
210
gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f);
213
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue);
214
gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f);
204
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared);
205
gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f);
208
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen);
209
gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f);
212
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue);
213
gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f);
219
218
glEnable(GL_NORMALIZE);
336
334
GHOST_SetCursorShape(window, sCursor);
340
if (!GHOST_GetFullScreen(shSystem))
342
/* Begin fullscreen mode */
344
setting.frequency = 85;
345
setting.xPixels = 640;
346
setting.yPixels = 480;
350
setting.frequency = 75;
351
setting.xPixels = 640;
352
setting.yPixels = 480;
355
sFullScreenWindow = GHOST_BeginFullScreen(shSystem, &setting,
357
FALSE /* stereo flag */);
361
GHOST_EndFullScreen(shSystem);
362
sFullScreenWindow = 0;
338
if (!GHOST_GetFullScreen(shSystem))
340
/* Begin fullscreen mode */
342
setting.frequency = 85;
343
setting.xPixels = 640;
344
setting.yPixels = 480;
348
* setting.frequency = 75;
349
* setting.xPixels = 640;
350
* setting.yPixels = 480;
353
sFullScreenWindow = GHOST_BeginFullScreen(shSystem, &setting,
355
FALSE /* stereo flag */);
358
GHOST_EndFullScreen(shSystem);
359
sFullScreenWindow = 0;
367
364
visibility = GHOST_GetCursorVisibility(window);
368
365
GHOST_SetCursorVisibility(window, !visibility);
372
if (GHOST_GetFullScreen(shSystem))
374
GHOST_EndFullScreen(shSystem);
375
sFullScreenWindow = 0;
381
sTestTimer = GHOST_InstallTimer(shSystem, 0, 1000, testTimerProc, NULL);
385
GHOST_RemoveTimer(shSystem, sTestTimer);
369
if (GHOST_GetFullScreen(shSystem))
371
GHOST_EndFullScreen(shSystem);
372
sFullScreenWindow = 0;
378
sTestTimer = GHOST_InstallTimer(shSystem, 0, 1000, testTimerProc, NULL);
381
GHOST_RemoveTimer(shSystem, sTestTimer);
393
389
char *title = GHOST_GetTitle(sMainWindow);
394
char *ntitle = malloc(strlen(title)+2);
390
char *ntitle = malloc(strlen(title) + 2);
396
392
sprintf(ntitle, "%s-", title);
397
393
GHOST_SetTitle(sMainWindow, ntitle);