~ubuntu-branches/debian/sid/xscreensaver/sid

« back to all changes in this revision

Viewing changes to hacks/glx/chessmodels.c

  • Committer: Bazaar Package Importer
  • Author(s): Jose Luis Rivas, Tormod Volden, Jose Luis Rivas
  • Date: 2008-07-15 14:48:48 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20080715144848-c6c6mhyxij0dk2p7
Tags: 5.05-3
[ Tormod Volden ]
* debian/patches/10_jwz-xscreensaver-randr-patch-3.patch:
  from upstream, addresses issues with xrandr/xinerama
  (Closes: #482385, #428797, #471920, #453708, #473681, #479715, #480231)
* fixed typo "screen < real_nscreens" in driver/lock:1527 from above patch
* drop 61_DualHead-nVidia_bug471920.patch (obsolete)
* drop 67_XineRama-mode_bug473681.patch (obsolete)
* fix m6502.o typo in hacks/Makefile.in
* refresh 53_XScreenSaver.ad.in.patch
* refresh (disabled) 60_add-ant-hack.patch

[ Jose Luis Rivas ]
* add xscreensaver-demo desktop file, thanks to Daniel Dickinson
  (Closes: #480592)
* update package descriptions (thanks jwz)
* fix categories in xscreensaver.menu
* change build-deps from xlibmesa-gl-dev to libgl1-mesa-dev,
  xutils to xutils-dev, x-dev to x11proto-core-dev.
* bump Standards-Version to 3.8.0
* add Vcs fields and Homepage to debian/control
* Flurry is not installed until the bug get fixed (Closes: #484112)

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
 *
5
5
 * glChess - A 3D chess interface
6
6
 *
 
7
 * Copyright (C) 2006  John-Paul Gignac <jjgignac@users.sf.net>
 
8
 *
7
9
 * Copyright (C) 2002  Robert  Ancell <bob27@users.sourceforge.net>
8
10
 *                     Michael Duelli <duelli@users.sourceforge.net>
9
11
 *
25
27
/* chessmodels.c: Contains the code for piece model creation */
26
28
 
27
29
#include <math.h>
28
 
#include <GL/glx.h>
29
 
#include <GL/gl.h>
30
 
#include <GL/glu.h>
 
30
#include <stdlib.h>
 
31
 
 
32
#ifdef HAVE_COCOA
 
33
# include <OpenGL/gl.h>
 
34
#else
 
35
# include <GL/glx.h>
 
36
# include <GL/gl.h>
 
37
#endif
31
38
 
32
39
#include "chessmodels.h"
33
40
 
34
 
#define ROT 16
35
 
 
36
 
#define piece_size 0.095
37
 
#define EPSILON 0.001
38
 
 
39
 
/* Make a revolved piece */
40
 
void revolve_line(double *trace_r, double *trace_h, double max_ih, int rot) {
41
 
  double theta, norm_theta, sin_theta, cos_theta;
42
 
  double norm_ptheta = 0.0, sin_ptheta = 0.0, cos_ptheta = 1.0;
43
 
  double radius, pradius;
44
 
  double max_height = max_ih, height, pheight;
45
 
  double dx, dy, len;
46
 
  int npoints, p;
47
 
  double dtheta = (2.0*M_PI) / rot;
48
 
 
49
 
  /* Get the number of points */
50
 
  for(npoints = 0; 
51
 
      fabs(trace_r[npoints]) > EPSILON || fabs(trace_h[npoints]) > EPSILON;
52
 
      ++npoints);
53
 
 
54
 
  /* If less than two points, can not revolve */
55
 
  if(npoints < 2)
56
 
    return;
57
 
 
58
 
  /* If the max_height hasn't been defined, find it */
59
 
  if(max_height < EPSILON)
60
 
    for(p = 0; p < npoints; ++p)
61
 
      if(max_height < trace_h[p])
62
 
        max_height = trace_h[p];
63
 
 
64
 
  /* Draw the revolution */
65
 
  for(theta = dtheta; rot > 0; --rot) {
66
 
    sin_theta = sin(theta);
67
 
    cos_theta = cos(theta);
68
 
    norm_theta = theta / (2.0 * M_PI);
69
 
    pradius = trace_r[0] * piece_size;
70
 
    pheight = trace_h[0] * piece_size;
71
 
    
72
 
    for(p = 1; p < npoints; ++p) {
73
 
      radius = trace_r[p] * piece_size;
74
 
      height = trace_h[p] * piece_size;
75
 
 
76
 
      /* Get the normalized lengths of the normal vector */
77
 
      dx = radius - pradius;
78
 
      dy = height - pheight;
79
 
      len = sqrt(dx*dx + dy*dy);
80
 
      dx /= len;
81
 
      dy /= len;
82
 
 
83
 
      /* If only triangles required */
84
 
      if (fabs(radius) < EPSILON) {
85
 
        glBegin(GL_TRIANGLES);
86
 
 
87
 
        glNormal3f(dy * sin_ptheta, -dx, dy * cos_ptheta);
88
 
        glTexCoord2f(norm_ptheta, pheight / max_height);
89
 
        glVertex3f(pradius * sin_ptheta, pheight, pradius * cos_ptheta);
90
 
        
91
 
        glNormal3f(dy * sin_theta, -dx, dy * cos_theta);
92
 
        glTexCoord2f(norm_theta, pheight / max_height);
93
 
        glVertex3f(pradius * sin_theta, pheight, pradius * cos_theta);
94
 
        
95
 
        glTexCoord2f(0.5 * (norm_theta + norm_ptheta),
96
 
                     height / max_height);
97
 
        glVertex3f(0.0, height, 0.0);
98
 
        
99
 
        glEnd();
100
 
      } 
101
 
      
102
 
      else {
103
 
        glBegin(GL_QUADS);
104
 
 
105
 
        glNormal3f(dy * sin_ptheta, -dx, dy * cos_ptheta);
106
 
        glTexCoord2f(norm_ptheta, pheight / max_height);
107
 
        glVertex3f(pradius * sin_ptheta, pheight, pradius * cos_ptheta);
108
 
 
109
 
        glNormal3f(dy * sin_theta, -dx, dy * cos_theta);
110
 
        glTexCoord2f(norm_theta, pheight / max_height);
111
 
        glVertex3f(pradius * sin_theta, pheight, pradius * cos_theta);
112
 
 
113
 
        glTexCoord2f(norm_theta, height / max_height);
114
 
        glVertex3f(radius * sin_theta, height, radius * cos_theta);
115
 
 
116
 
        glNormal3f(dy * sin_ptheta, -dx, dy * cos_ptheta);
117
 
        glTexCoord2f(norm_ptheta, height / max_height);
118
 
        glVertex3f(radius * sin_ptheta, height, radius * cos_ptheta);
119
 
 
120
 
        glEnd();
121
 
      }
122
 
 
123
 
      pradius = radius;
124
 
      pheight = height;
125
 
    }
126
 
 
127
 
    sin_ptheta = sin_theta;
128
 
    cos_ptheta = cos_theta;
129
 
    norm_ptheta = norm_theta;
130
 
    theta += dtheta;
131
 
  }
132
 
}
133
 
 
134
 
void gen_model_lists(void) {
 
41
/* End of Data */
 
42
#define ENDOFDATA 65535
 
43
 
 
44
/* Section headers */
 
45
#define SPIN 65534
 
46
#define VERTICES 65533
 
47
#define QUADS 65532
 
48
#define TRIANGLES 65531
 
49
#define POLARQUADSTRIP 65530
 
50
#define QUADSTRIP 65529
 
51
 
 
52
/* Special spin-related commands */
 
53
#define SEAM 65528
 
54
#define PATTERN 65527
 
55
#define STEPUP 65526
 
56
#define STEPDOWN 65525
 
57
#define SETBACKREF 65524
 
58
#define BACKREF 65523
 
59
 
 
60
unsigned short classic_pawn_data[] = {
 
61
  SPIN,16,
 
62
  350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880,
 
63
  SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340,
 
64
  ENDOFDATA
 
65
};
 
66
 
 
67
unsigned short classic_rook_data[] = {
 
68
  SPIN,16,
 
69
  380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300,
 
70
  ENDOFDATA
 
71
};
 
72
 
 
73
unsigned short classic_knight_data[] = {
 
74
  SPIN,16,
 
75
  410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580,
 
76
 
 
77
  VERTICES,
 
78
  260,580,260, -260,580,260, -260,580,-80, 260,580,-80, 80,1620,400,
 
79
  100,1680,340, -100,1680,340, -80,1620,400, 100,1680,340, 100,1680,300,
 
80
  -100,1680,300, -100,1680,340, 100,1680,300, 50,1680,160, -50,1680,160,
 
81
  -100,1680,300, 50,1680,160, 100,1680,20, -100,1680,20, -50,1680,160,
 
82
  100,1680,20, 100,1680,-20, -100,1680,-20, -100,1680,20, 100,1680,-20,
 
83
  40,1680,-110, -40,1680,-110, -100,1680,-20, 40,1680,-110,
 
84
  100,1680,-200, -100,1680,-200, -40,1680,-110, 100,1680,-200,
 
85
  100,1680,-440, -100,1680,-440, -100,1680,-200, -100,1680,-440,
 
86
  100,1680,-440, 100,1500,-440, -100,1500,-440, -100,1500,-440,
 
87
  100,1500,-440, 55,1480,-280, -55,1480,-280, -100,1680,300, -50,1680,160,
 
88
  -100,1400,130, -120,1380,240, -50,1680,160, -80,1680,20, -120,1380,20,
 
89
  -100,1400,130, -83,1660,20, -80,1680,20, -100,1680,-20, -100,1660,-38,
 
90
  -120,1380,20, -88,1620,20, -100,1620,-74, -120,1360,-20, -120,1360,-20,
 
91
  -100,1620,-74, -100,1580,-110, -60,1400,-140, -100,1680,-200,
 
92
  -55,1480,-280, -60,1400,-140, -100,1580,-110, -100,1680,-200,
 
93
  -100,1680,-440, -100,1500,-440, -55,1480,-280, 100,1680,300,
 
94
  120,1380,240, 100,1400,130, 50,1680,160, 50,1680,160, 100,1400,130,
 
95
  120,1380,20, 80,1680,20, 83,1660,20, 100,1660,-38, 100,1680,-20,
 
96
  80,1680,20, 120,1380,20, 120,1360,-20, 100,1620,-74, 88,1620,20,
 
97
  120,1360,-20, 60,1400,-140, 100,1580,-110, 100,1620,-74, 100,1680,-200,
 
98
  100,1580,-110, 60,1400,-140, 55,1480,-280, 100,1680,-200, 55,1480,-280,
 
99
  100,1500,-440, 100,1680,-440, 88,1620,20, 100,1620,-74, 80,1640,-56,
 
100
  61,1640,20, 61,1640,20, 80,1640,-56, 100,1660,-38, 83,1660,20,
 
101
  -88,1620,20, -61,1640,20, -80,1640,-56, -100,1620,-74, -61,1640,20,
 
102
  -83,1660,20, -100,1660,-38, -80,1640,-56, 35,1780,-80, 35,1780,-440,
 
103
  -35,1780,-440, -35,1780,-80, 35,1780,-80, 35,1680,-80, 35,1680,-440,
 
104
  35,1780,-440, -35,1780,-80, -35,1780,-440, -35,1680,-440, -35,1680,-80,
 
105
  35,1780,-80, -35,1780,-80, -35,1680,-80, 35,1680,-80, 35,1780,-440,
 
106
  35,1680,-440, -35,1680,-440, -35,1780,-440, -100,1400,130, -120,1380,20,
 
107
  120,1380,20, 100,1400,130, -100,1400,130, 100,1400,130, 120,1380,240,
 
108
  -120,1380,240, -260,580,-80, -55,1480,-280, 0,1500,-360, 0,780,-400,
 
109
  260,580,-80, 0,780,-400, 0,1500,-360, 55,1480,-280, -50,1380,40,
 
110
  -200,880,400, 200,880,400, 50,1380,40, -200,880,400, -260,580,260,
 
111
  260,580,260, 200,880,400, -50,1380,40, -140,1220,-40, -260,580,260,
 
112
  -200,880,400, -140,1220,-40, -114,1220,-222, -260,580,-80, -260,580,260,
 
113
  -55,1480,-280, -114,1220,-222, -140,1220,-40, -60,1400,-140,
 
114
  50,1380,40, 200,880,400, 260,580,260, 140,1220,-40, 140,1220,-40,
 
115
  260,580,260, 260,580,-80, 114,1220,-222, 55,1480,-280, 60,1400,-140,
 
116
  140,1220,-40, 114,1220,-222, 260,580,-80, 144,580,-260, 0,780,-400,
 
117
  144,580,-260, -144,580,-260, 0,780,-400, -260,580,-80, 0,780,-400,
 
118
  -144,580,-260, 0,1400,400, 80,1620,400, -80,1620,400, 0,1400,400,
 
119
  -80,1620,400, -120,1380,240, -120,1380,240, -80,1620,400, -100,1680,340,
 
120
  -120,1380,240, -100,1680,340, -100,1680,300, 0,1400,400, 120,1380,240,
 
121
  80,1620,400, 120,1380,240, 100,1680,340, 80,1620,400, 120,1380,240,
 
122
  100,1680,300, 100,1680,340, 0,1400,400, -120,1380,240, 120,1380,240,
 
123
  -60,1400,-140, -140,1220,-40, -45,1380,-20, -45,1380,-20, -140,1220,-40,
 
124
  -50,1380,40, 60,1400,-140, 45,1380,-20, 140,1220,-40, 45,1380,-20,
 
125
  50,1380,40, 140,1220,-40, 60,1400,-140, 120,1360,-20, 45,1380,-20,
 
126
  50,1380,40, 45,1380,-20, 120,1360,-20, 50,1380,40, 120,1360,-20,
 
127
  120,1380,20, -60,1400,-140, -45,1380,-20, -120,1360,-20, -50,1380,40,
 
128
  -120,1360,-20, -45,1380,-20, -50,1380,40, -120,1380,20, -120,1360,-20,
 
129
  88,1620,20, 61,1640,20, 83,1660,20, 100,1620,-74, 100,1660,-38,
 
130
  80,1640,-56, -88,1620,20, -83,1660,20, -61,1640,20, -100,1620,-74,
 
131
  -80,1640,-56, -100,1660,-38, -40,1680,-110, -100,1680,-200,
 
132
  -100,1580,-110, -100,1680,-20, -40,1680,-110, -100,1580,-110,
 
133
  40,1680,-110, 100,1580,-110, 100,1680,-200, 100,1680,-20, 100,1580,-110,
 
134
  40,1680,-110,
 
135
 
 
136
  QUADS, 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19,
 
137
  20,21,22,23, 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39,
 
138
  40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59,
 
139
  60,61,62,63, 64,65,66,67, 68,69,70,71, 72,73,74,75, 76,77,78,79,
 
140
  80,81,82,83, 84,85,86,87, 88,89,90,91, 92,93,94,95, 96,97,98,99,
 
141
  100,101,102,103, 104,105,106,107, 108,109,110,111, 112,113,114,115,
 
142
  116,117,118,119, 120,121,122,123, 124,125,126,127, 128,129,130,131,
 
143
  132,133,134,135, 136,137,138,139, 140,141,142,143, 144,145,146,147,
 
144
  148,149,150,151, 152,153,154,155, 156,157,158,159, 160,161,162,163,
 
145
  164,165,166,167, 168,169,170,171, 172,173,174,175, 176,177,178,179,
 
146
  180,181,182,183,
 
147
 
 
148
  TRIANGLES, 184,185,186, 187,188,189, 190,191,192, 193,194,195,
 
149
  196,197,198, 199,200,201, 202,203,204, 205,206,207, 208,209,210,
 
150
  211,212,213, 214,215,216, 217,218,219, 220,221,222, 223,224,225,
 
151
  226,227,228, 229,230,231, 232,233,234, 235,236,237, 238,239,240,
 
152
  241,242,243, 244,245,246, 247,248,249, 250,251,252, 253,254,255,
 
153
  256,257,258, 259,260,261, 262,263,264, 265,266,267, 268,269,270,
 
154
 
 
155
  ENDOFDATA
 
156
};
 
157
 
 
158
unsigned short classic_bishop_data[] = {
 
159
  SPIN,16,
 
160
  400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940,
 
161
  SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480,
 
162
  SEAM,100,1600,SEAM,80,1700,SEAM,120,1770,SEAM,80,1840,0,1840,
 
163
  ENDOFDATA
 
164
};
 
165
 
 
166
unsigned short classic_queen_data[] = {
 
167
  SPIN,16,
 
168
  480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180,
 
169
  SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920,
 
170
  SEAM,240,2000,SEAM,170,2000,SEAM,95,2080,SEAM,70,2080,SEAM,90,2140,
 
171
  SEAM,70,2200,0,2200,
 
172
  ENDOFDATA
 
173
};
 
174
 
 
175
unsigned short classic_king_data[] = {
 
176
  SPIN,16,
 
177
  500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260,
 
178
  SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970,
 
179
  SEAM,160,2010,0,2010,
 
180
 
 
181
  VERTICES, 
 
182
  -30,2010,35, 30,2010,35, 30,2310,35, -30,2310,35, -90,2110,35,
 
183
  -30,2110,35, -30,2210,35, -90,2210,35, 90,2110,35, 90,2210,35,
 
184
  30,2210,35, 30,2110,35, 30,2010,-35, -30,2010,-35, -30,2310,-35,
 
185
  30,2310,-35, -30,2110,-35, -90,2110,-35, -90,2210,-35, -30,2210,-35,
 
186
  30,2110,-35, 30,2210,-35, 90,2210,-35, 90,2110,-35, -90,2110,35,
 
187
  -90,2210,35, -90,2210,-35, -90,2110,-35, -30,2010,35, -30,2110,35,
 
188
  -30,2110,-35, -30,2010,-35, -30,2210,30, -30,2310,30, -30,2310,-30,
 
189
  -30,2210,-30, 90,2110,-35, 90,2210,-35, 90,2210,35, 90,2110,35,
 
190
  30,2010,-35, 30,2110,-35, 30,2110,35, 30,2010,35, 30,2210,-35,
 
191
  30,2310,-35, 30,2310,35, 30,2210,35, -90,2210,-35, -90,2210,35,
 
192
  -30,2210,35, -30,2210,-35, 30,2210,-35, 30,2210,35, 90,2210,35,
 
193
  90,2210,-35, -30,2310,-35, -30,2310,35, 30,2310,35, 30,2310,-35,
 
194
 
 
195
  QUADS, 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19,
 
196
  20,21,22,23, 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39,
 
197
  40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59,
 
198
 
 
199
  ENDOFDATA
 
200
};
 
201
 
 
202
unsigned short knight_data[] = {
 
203
  VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611,
 
204
  6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611,
 
205
  2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517,
 
206
  -2705,8863,7173, -3955,8863,6611, -5084,8863,5847, -6059,8863,4907,
 
207
  -6850,8863,3817, -7433,8863,2611, -7790,8863,1326, -7910,8863,0,
 
208
  -7790,8863,-1326, -7433,8863,-2611, -6850,8863,-3817,
 
209
  -6059,8863,-4907, -5066,8863,-5896, -3955,8863,-6611,
 
210
  -2705,8863,-7173, -1373,8863,-7517, 0,8863,-7633, 1373,8863,-7517,
 
211
  2705,8863,-7173, 3955,8863,-6611, 5066,8863,-5896, 6059,8863,-4907,
 
212
  6850,8863,-3817, 7433,8863,-2611, 7790,8863,-1326, -1183,11744,7939,
 
213
  -1183,12003,7939, -1183,14019,6547, -1183,16307,5288,
 
214
  -1183,16555,5281, -1183,20128,2191, -1134,20304,2131,
 
215
  -1183,20516,2156, -1417,21874,1842, -1417,23109,2185,
 
216
  -1417,23961,3121, -1417,24001,4252, 0,23917,5637, -1418,23893,5418,
 
217
  -1151,23389,6664, -1151,23501,6906, -1151,23806,6987,
 
218
  -1151,24102,6987, -1151,24209,7189, -1151,24371,7513,
 
219
  -1151,24605,7715, -1151,24939,7674, -1313,25568,7149,
 
220
  -1313,25695,7149, -1598,26707,7610, 0,26837,7841, 0,27354,8076,
 
221
  -1598,27262,7839, -1598,27842,7723, 0,27919,7998, 0,28449,7606,
 
222
  -1598,28309,7303, -1302,28414,6723, 0,28544,6980, 0,28540,6197,
 
223
  -1187,28523,5990, -1304,28447,4204, -1158,28789,1627,
 
224
  -561,28931,-1220, -357,29608,-1244, -357,30527,-1441,
 
225
  -357,31249,-1837, -357,31511,-2627, -357,31511,-3484,
 
226
  -357,31118,-4143, -357,30264,-4538, -436,29406,-5256, 0,29409,-5243,
 
227
  -2207,29018,-6763, -914,28658,-6964, 0,26292,-7237, -1305,26324,-7143,
 
228
  -806,23401,-6784, -812,20723,-6228, -796,16757,-6210,
 
229
  -1559,24934,7435, -1566,24633,7460, -1531,24429,7334,
 
230
  -1475,24293,7131, -1440,24203,7004, -1372,23935,7015,
 
231
  -1364,23606,6868, -1389,23515,6705, -1687,28010,6952,
 
232
  -1687,27926,7343, -1687,27629,7491, -1687,27324,7552,
 
233
  -1687,27032,7432, -1687,26791,7148, -1642,27135,7165,
 
234
  -1642,27254,7304, -1642,27397,7364, -1642,27546,7334,
 
235
  -1642,27693,7261, -1642,27737,7088, -1611,10591,8159,
 
236
  -888,9327,-8560, -4491,13292,1032, -3840,15084,786, -3412,17397,397,
 
237
  -2937,20005,-35, -5108,11669,1240, -6344,10251,1395, -6345,10246,1248,
 
238
  -5109,11664,1092, -2964,20022,-132, -3413,17393,250, -3841,15079,638,
 
239
  -4491,13288,885, -3743,13207,-535, -3085,15092,-710, -2727,17642,-878,
 
240
  -2569,20636,-797, -4348,11575,-324, -5584,10108,-169,
 
241
  -5403,10079,-1732, -4167,11644,-1888, -2465,20842,-2651,
 
242
  -2522,18130,-2392, -2905,15407,-2077, -3562,13227,-1951,
 
243
  -3901,13568,-3294, -3243,15993,-3519, -2861,18863,-3735,
 
244
  -2776,22447,-4309, -4486,11792,-3132, -5783,9930,-2931,
 
245
  -5783,9930,-3054, -4486,11792,-3255, -2776,22438,-4430,
 
246
  -2861,18863,-3858, -3243,15993,-3641, -3901,13568,-3417,
 
247
  -6199,9466,4558, -5766,10642,5726, -5228,11829,6090, -4801,12891,6048,
 
248
  -4155,14560,5246, -3546,16847,3719, -3334,17643,2937,
 
249
  -2860,20062,1230, -4822,12054,7102, -5325,10909,7208,
 
250
  -5732,9938,6026, -4026,14701,5522, -2852,20170,1447, -3319,17801,3175,
 
251
  -3538,16955,3935, -4090,13256,1679, -2874,20073,676, -3706,15083,1464,
 
252
  -3301,17348,1117, -5931,10206,1996, -4695,11624,1840,
 
253
  -4445,11658,2844, -5681,10240,3000, -3074,17398,2202,
 
254
  -3456,15117,2468, -3840,13290,2683, -4642,13358,4019,
 
255
  -4257,15194,3908, -6017,10188,3746, -5237,11714,4039,
 
256
  -5621,11218,5077, -5026,12862,5058, -5134,10861,-3154,
 
257
  -4193,12680,-3336, -2832,20609,-4118, -3052,17428,-3750,
 
258
  -3572,14780,-3529, -3579,14774,-3623, -3059,17422,-3843,
 
259
  -2839,20596,-4211, -4200,12674,-3429, -5141,10855,-3248,
 
260
  -3908,13562,-3510, -3250,15987,-3735, -2868,18857,-3952,
 
261
  -4492,11786,-3348, -5789,9924,-3148, -4817,11321,-3298,
 
262
  -5465,10389,-3198, -4054,13118,-3470, -4346,12230,-3389,
 
263
  -2853,19681,-4056, -2825,21511,-4367, -3155,16705,-3789,
 
264
  -2963,18140,-3897, -3744,14168,-3567, -3415,15381,-3679,
 
265
  -845,13482,-6604, -945,10997,-7893, -981,11110,-7735,
 
266
  -859,13469,-6526, -899,9307,-8439, -813,16486,-6146, -832,20681,-6100,
 
267
  -826,23358,-6656, -882,10149,-8148, -913,12323,-7139,
 
268
  -822,14910,-6353, -817,18235,-6210, -827,21937,-6382,
 
269
  -846,21937,-6341, -841,14912,-6313, -931,12326,-7098,
 
270
  -901,10152,-8107, -844,23359,-6615, -851,20681,-6059,
 
271
  -831,16487,-6105, -919,9307,-8399, -869,13482,-6492, -999,11113,-7694,
 
272
  -860,9726,-8255, -942,10578,-7958, -962,11715,-7413, -900,12896,-6796,
 
273
  -863,14065,-6404, -818,15760,-6221, -828,17367,-6171,
 
274
  -854,19800,-5994, -848,21309,-6200, -843,22566,-6482,
 
275
  -3407,15409,-3785, -3736,14196,-3673, -2911,18365,-4048,
 
276
  -3147,16733,-3895, -2726,21608,-4455, -2808,19905,-4191,
 
277
  -4338,12259,-3495, -4046,13146,-3576, -5457,10418,-3304,
 
278
  -4809,11349,-3404, -4484,11815,-3454, -2715,22288,-4534,
 
279
  -2832,19035,-4066, -3242,16015,-3841, -3900,13590,-3616,
 
280
  -5133,10883,-3354, -4171,12742,-3524, -2803,20773,-4339,
 
281
  -3051,17450,-3949, -3571,14803,-3729, -4979,11072,-3368,
 
282
  -5619,10185,-3279, -4119,12924,-3556, -4411,12037,-3475,
 
283
  -2801,20363,-4269, -2721,21826,-4489, -3099,17092,-3922,
 
284
  -2887,18618,-4038, -3653,14499,-3701, -3325,15712,-3813,
 
285
  -3489,15106,-3757, -3818,13893,-3645, -3011,17758,-3971,
 
286
  -3194,16374,-3868, -2755,21085,-4385, -2815,19494,-4139,
 
287
  -4265,12481,-3515, -3973,13368,-3596, -5304,10595,-3318,
 
288
  -4664,11477,-3407, -5441,10207,-3361, -5350,10338,-3375,
 
289
  -5139,10672,-3428, -5058,10742,-3431, -4831,11101,-3457,
 
290
  -4742,11228,-3470, -4516,11559,-3504, -4423,11693,-3518,
 
291
  -4277,12079,-3558, -4232,12180,-3571, -4138,12522,-3597,
 
292
  -4094,12603,-3609, -3979,12935,-3675, -3943,13043,-3671,
 
293
  -3852,13383,-3699, -3813,13496,-3705, -3692,13947,-3767,
 
294
  -3653,14073,-3790, -3506,14587,-3772, -3467,14685,-3777,
 
295
  -3349,15192,-3888, -3308,15317,-3887, -3162,15800,-3957,
 
296
  -3119,15954,-3961, -3009,16528,-3946, -3002,16637,-3937,
 
297
  -2914,17260,-4014, -2909,17347,-4006, -2834,17893,-4049,
 
298
  -2813,18060,-4060, -2760,18849,-4232, -2746,18968,-4242,
 
299
  -850,22569,-6438, -855,21313,-6156, -861,19804,-5949,
 
300
  -834,17371,-6127, -824,15765,-6176, -869,14070,-6360,
 
301
  -906,12901,-6751, -968,11720,-7368, -948,10645,-7895, -865,9731,-8211,
 
302
  -1006,11164,-7630, -875,13487,-6447, -926,9310,-8354,
 
303
  -837,16490,-6061, -857,20684,-6015, -867,23379,-6515,
 
304
  -907,10157,-8062, -937,12331,-7053, -847,14917,-6268,
 
305
  -842,18236,-6111, -852,21941,-6297, -885,9891,-8156, -985,10905,-7724,
 
306
  -947,11969,-7255, -885,13125,-6649, -858,14493,-6314,
 
307
  -839,16049,-6111, -836,17735,-6083, -859,20244,-5982,
 
308
  -891,21559,-6157, -848,22883,-6508, -851,22255,-6367,
 
309
  -856,20999,-6085, -867,19042,-6000, -836,16930,-6094,
 
310
  -835,15341,-6222, -880,13646,-6405, -916,12540,-6953,
 
311
  -981,11337,-7564, -927,10370,-7988, -932,9518,-8285, -931,9583,-8174,
 
312
  -863,9671,-8145, -892,9982,-8037, -903,10075,-7996, -952,10454,-7865,
 
313
  -961,10550,-7832, -1008,10963,-7617, -1018,11105,-7567,
 
314
  -996,11458,-7405, -992,11582,-7342, -972,12080,-7057,
 
315
  -968,12210,-6984, -935,12620,-6792, -931,12759,-6714,
 
316
  -914,13199,-6441, -910,13346,-6359, -915,13767,-6194,
 
317
  -910,13941,-6175, -890,14633,-6107, -886,14783,-6091,
 
318
  -864,15476,-6035, -859,15645,-6017, -870,16062,-5957,
 
319
  -873,16231,-5936, -853,17048,-5965, -861,17185,-5974,
 
320
  -879,17812,-5997, -885,17961,-5997, -851,18486,-6138,
 
321
  -865,18526,-5933, -872,18761,-5875, -870,19337,-5971,
 
322
  -864,19470,-5784, -937,19590,-5786, -833,19023,-6126,
 
323
  -851,20344,-5894, -851,20576,-5912, -855,21086,-5973,
 
324
  -854,21224,-6003, -871,21651,-6070, -852,21853,-6116,
 
325
  -850,22332,-6224, -849,22490,-6259, -831,22924,-6338,
 
326
  -834,23240,-6364, -2743,19661,-4287, -2740,19863,-4312,
 
327
  -2723,20501,-4469, -2705,20711,-4503, -2661,21262,-4565,
 
328
  -2658,21427,-4593, -2687,22088,-4631, -2695,22209,-4643,
 
329
  -2774,23170,-4392, -2633,23103,-4527, -2681,22439,-4516,
 
330
  -2656,22665,-4573, -2552,22727,-4653, -2534,23015,-4628,
 
331
  -2607,23397,-4556, -2759,23681,-4398, -2740,24136,-4370,
 
332
  -2610,24100,-4580, -2412,24481,-5089, -2671,24389,-4569,
 
333
  -2397,24935,-5652, -2562,25022,-5528, -939,23708,-6566,
 
334
  -1009,24359,-6776, -1095,24912,-6886, -1049,24117,-6493,
 
335
  -990,23894,-6415, -2290,23837,-4814, -2312,23612,-4723,
 
336
  -2183,24804,-5574, -2191,24632,-5391, -1156,24771,-6650,
 
337
  -1154,24624,-6586, -1104,24526,-6656, -1281,9161,-8432,
 
338
  -2524,9161,-8046, -3691,9161,-7572, -4745,9161,-6945,
 
339
  -5662,9127,-6096, -3697,9192,-7581, -2531,9192,-8056,
 
340
  -4753,9183,-6951, -5664,9161,-6101, -5664,9185,-6101,
 
341
  -4753,9207,-6951, -2531,9216,-8055, -3697,9216,-7581,
 
342
  -3684,9232,-7560, -2518,9232,-8034, -4740,9223,-6930,
 
343
  -5651,9200,-6080, -2828,20259,1366, -2798,20256,1187, -2820,20237,692,
 
344
  -2843,20292,-25, -2874,20473,735, -2975,20508,90, -2474,20772,-759,
 
345
  -2660,20879,-691, -2471,21553,-1445, -2498,22175,-1940,
 
346
  -2471,24346,-2830, -2556,22373,-1903, -2528,21595,-1351,
 
347
  -2493,24314,-2936, -2576,22239,-2123, -2548,21461,-1571,
 
348
  -2823,20635,1307, -2741,20503,1328, -1490,23972,5392,
 
349
  -1489,24080,4226, -1489,24040,3095, -1489,23188,2159,
 
350
  -1489,21953,1816, -2479,22156,182, -1515,23830,2117, -1605,24415,3131,
 
351
  -1599,24460,4263, -1580,24357,5431, -1448,23885,6743,
 
352
  -1252,24770,5442, -1271,24873,4274, -1277,24828,3142,
 
353
  -1389,24618,2016, -1479,24733,1993, -1301,25010,3165,
 
354
  -1295,25055,4297, -1391,24890,5460, -1512,25216,5507,
 
355
  -1602,25353,4317, -1608,25308,3186, -1979,23458,-29, -1320,25312,1928,
 
356
  -1495,25055,546, -2438,25790,-488, -1605,25585,5599, -1583,26793,6150,
 
357
  -1850,26272,4298, -1578,27435,7117, -1658,27625,6884,
 
358
  -1671,27398,6846, -1678,27176,6937, -1715,27784,6626,
 
359
  -1744,27323,6551, -1753,26904,6776, -1884,28809,-1688,
 
360
  -1555,28655,1620, -1658,28252,4204, -1581,28263,5997,
 
361
  -1567,28312,6790, -1935,27827,4220, -1818,28249,1603,
 
362
  -1570,27742,6195, -1532,27288,6120, -2038,27074,4245, -1418,28416,228,
 
363
  -413,30264,-4539, -424,31094,-4152, -418,31478,-3497,
 
364
  -410,31453,-2653, -410,31190,-1863, -410,30468,-1467,
 
365
  -410,29550,-1270, -411,31041,-1902, -448,31253,-2696,
 
366
  -449,31323,-3466, -425,31182,-3496, -411,31060,-2738,
 
367
  -387,30899,-1932, -316,30806,-1957, -335,30952,-2766,
 
368
  -353,31089,-3521, -322,31007,-3540, -303,30871,-2786,
 
369
  -284,30725,-1976, -304,30630,-1993, -323,30776,-2802,
 
370
  -342,30912,-3557, -396,30843,-3565, -378,30707,-2811,
 
371
  -358,30561,-2001, -414,30477,-2013, -433,30623,-2822,
 
372
  -452,30759,-3576, -474,30560,-3616, -456,30424,-2861,
 
373
  -436,30278,-2052, -349,30194,-2077, -368,30340,-2886,
 
374
  -386,30477,-3641, -309,30389,-3665, -291,30253,-2911,
 
375
  -271,30107,-2102, -267,29996,-2124, -286,30142,-2933,
 
376
  -305,30278,-3688, -376,30179,-3700, -357,30043,-2945,
 
377
  -338,29897,-2136, -420,29789,-2150, -439,29935,-2959,
 
378
  -458,30071,-3713, -500,29883,-3751, -463,29601,-2187,
 
379
  -470,30974,-4049, -462,30153,-4391, -466,30563,-4220,
 
380
  -410,30009,-1368, -725,29372,-3225, -677,29335,-5130,
 
381
  -908,29205,-3300, -632,29533,-4803, -2587,28768,-3408,
 
382
  -2730,28611,-3456, -2404,28568,-6916, -2413,28849,-6612,
 
383
  -1904,26715,1801, -1394,25919,831, -2224,27270,-3994,
 
384
  -2730,28438,-3011, -2587,28570,-2864, -2826,28152,-3163,
 
385
  -2476,28668,-6523, -2476,28433,-6776, -2787,28338,-3507,
 
386
  -2216,27658,-3972, -2207,27950,-5907, -2311,28216,-6128,
 
387
  -2320,27876,-3971, -2311,28118,-6301, -2311,27845,-6252,
 
388
  -2320,27703,-3749, -2320,27084,-3798, -2320,26986,-4070,
 
389
  -2698,26705,-4014, -2557,26974,-3547, -2557,27739,-3485,
 
390
  -2572,27738,-6362, -2436,28204,-6533, -2436,28421,-6303,
 
391
  -2556,28092,-3822, -2431,28142,-6975, -2544,27863,-6726,
 
392
  -2266,28229,-1686, -1939,28156,-1065, -2569,27943,-2270,
 
393
  -2381,27545,-1682, -2799,27594,-3104, -2750,27866,-2738,
 
394
  -2539,27578,-6309, -2720,26853,-3133, -2788,26461,-3776,
 
395
  -1061,27543,-7078, -1780,27941,135, -1859,27747,-527, -1756,27784,691,
 
396
  -1855,27001,736, -1950,26711,19, -1964,27006,-630, -2342,26955,-1898,
 
397
  -2595,25515,-3113, -2147,27855,132, -2126,27722,601, -2213,27691,-428,
 
398
  -2210,27061,639, -2290,26816,34, -2302,27065,-515, -2347,27680,100,
 
399
  -2335,27602,376, -2386,27584,-229, -2385,27213,398, -2432,27069,42,
 
400
  -2439,27215,-281, -2481,27452,103, -1786,24263,399, -2278,24851,-562,
 
401
  -2372,25143,-1163, 7383,9172,0, 7270,9172,-1487, 6937,9172,-2929,
 
402
  6393,9172,-4281, 1282,9172,-8433, 0,9172,-8563, 1301,9439,8159,
 
403
  2371,9313,7844, 3857,9286,7355, 4477,9172,6559, 5704,9174,5179,
 
404
  6393,9172,4281, 6937,9172,2929, 7270,9172,1487, -7270,9172,-1487,
 
405
  -6937,9172,-2929, -6393,9172,-4281, -1282,9172,-8433, 0,9339,8274,
 
406
  -1301,9439,8159, -2371,9313,7844, -3857,9286,7355, -4477,9172,6559,
 
407
  -5704,9174,5179, -6393,9172,4281, -6937,9172,2929, -7270,9172,1487,
 
408
  -796,9467,8260, 0,9503,8356, 0,9667,8438, -796,9666,8325,
 
409
  -807,10584,8327, -7383,9172,0, 796,9467,8260, 796,9666,8325,
 
410
  807,10584,8327, 0,10584,8457, 0,11744,8130, 1183,11744,7939,
 
411
  1183,12003,7939, 0,12003,8130, 0,14019,6737, 1183,14019,6547,
 
412
  1183,16307,5288, 0,16307,5479, 0,16555,5472, 1183,16555,5281,
 
413
  1183,20128,2191, 0,20128,2382, 0,20304,2322, 1134,20304,2131,
 
414
  1183,20516,2156, 0,20516,2346, 0,21898,2060, 1417,21874,1842,
 
415
  1417,23109,2185, 0,23133,2404, 0,23985,3339, 1417,23961,3121,
 
416
  1417,24001,4252, 0,24025,4470, 1418,23893,5418, 1151,23389,6664,
 
417
  0,23394,6882, 0,23506,7125, 1151,23501,6906, 1151,23806,6987,
 
418
  0,23811,7205, 0,24107,7205, 1151,24102,6987, 1151,24209,7189,
 
419
  0,24213,7407, 0,24376,7731, 1151,24371,7513, 1151,24605,7715,
 
420
  0,24610,7933, 0,24944,7892, 1151,24939,7674, 1313,25568,7149,
 
421
  0,25562,7367, 0,25689,7367, 1313,25695,7149, 1598,26707,7610,
 
422
  1598,27262,7839, 1598,27842,7723, 1598,28309,7303, 1302,28414,6723,
 
423
  1187,28523,5990, 1304,28447,4204, 0,28469,4435, 0,28654,1893,
 
424
  1158,28789,1627, 561,28931,-1220, 0,29310,-864, 0,29574,-1062,
 
425
  357,29608,-1244, 357,30527,-1441, 0,30496,-1259, 0,31221,-1655,
 
426
  357,31249,-1837, 357,31511,-2627, 0,31485,-2445, 0,31485,-3302,
 
427
  357,31511,-3484, 357,31118,-4143, 0,31089,-3961, 0,30233,-4356,
 
428
  357,30264,-4538, 436,29406,-5256, 0,29018,-6407, 2207,29018,-6763,
 
429
  914,28658,-6964, 0,28472,-7040, 1305,26324,-7143, 806,23401,-6784,
 
430
  0,23246,-6890, 0,20735,-6319, 812,20723,-6228, 796,16757,-6210,
 
431
  0,17171,-6133, 1559,24934,7435, 1566,24633,7460, 1531,24429,7334,
 
432
  1475,24293,7131, 1440,24203,7004, 1372,23935,7015, 1364,23606,6868,
 
433
  1389,23515,6705, 1687,28010,6952, 1687,27926,7343, 1687,27629,7491,
 
434
  1687,27324,7552, 1687,27032,7432, 1687,26791,7148, 1642,27135,7165,
 
435
  1642,27254,7304, 1642,27397,7364, 1642,27546,7334, 1642,27693,7261,
 
436
  1642,27737,7088, 1611,10591,8159, 888,9327,-8560, 4491,13292,1032,
 
437
  3840,15084,786, 3412,17397,397, 2937,20005,-35, 5108,11669,1240,
 
438
  6344,10251,1395, 6345,10246,1248, 5109,11664,1092, 2964,20022,-132,
 
439
  3413,17393,250, 3841,15079,638, 4491,13288,885, 3743,13207,-535,
 
440
  3085,15092,-710, 2727,17642,-878, 2569,20636,-797, 4348,11575,-324,
 
441
  5584,10108,-169, 5403,10079,-1732, 4167,11644,-1888,
 
442
  2465,20842,-2651, 2522,18130,-2392, 2905,15407,-2077,
 
443
  3562,13227,-1951, 3901,13568,-3294, 3243,15993,-3519,
 
444
  2861,18863,-3735, 2776,22447,-4309, 4486,11792,-3132, 5783,9930,-2931,
 
445
  5783,9930,-3054, 4486,11792,-3255, 2776,22438,-4430, 2861,18863,-3858,
 
446
  3243,15993,-3641, 3901,13568,-3417, 6199,9466,4558, 5766,10642,5726,
 
447
  5228,11829,6090, 4801,12891,6048, 4155,14560,5246, 3546,16847,3719,
 
448
  3334,17643,2937, 2860,20062,1230, 4822,12054,7102, 5325,10909,7208,
 
449
  5732,9938,6026, 4026,14701,5522, 2852,20170,1447, 3319,17801,3175,
 
450
  3538,16955,3935, 4090,13256,1679, 2874,20073,676, 3706,15083,1464,
 
451
  3301,17348,1117, 5931,10206,1996, 4695,11624,1840, 4445,11658,2844,
 
452
  5681,10240,3000, 3074,17398,2202, 3456,15117,2468, 3840,13290,2683,
 
453
  4642,13358,4019, 4257,15194,3908, 6017,10188,3746, 5237,11714,4039,
 
454
  5621,11218,5077, 5026,12862,5058, 5134,10861,-3154, 4193,12680,-3336,
 
455
  2832,20609,-4118, 3052,17428,-3750, 3572,14780,-3529,
 
456
  3579,14774,-3623, 3059,17422,-3843, 2839,20596,-4211,
 
457
  4200,12674,-3429, 5141,10855,-3248, 3908,13562,-3510,
 
458
  3250,15987,-3735, 2868,18857,-3952, 4492,11786,-3348, 5789,9924,-3148,
 
459
  4817,11321,-3298, 5465,10389,-3198, 4054,13118,-3470,
 
460
  4346,12230,-3389, 2853,19681,-4056, 2825,21511,-4367,
 
461
  3155,16705,-3789, 2963,18140,-3897, 3744,14168,-3567,
 
462
  3415,15381,-3679, 0,14037,-6616, 845,13482,-6604, 945,10997,-7893,
 
463
  0,11066,-7866, 981,11110,-7735, 859,13469,-6526, 899,9307,-8439,
 
464
  813,16486,-6146, 832,20681,-6100, 826,23358,-6656, 882,10149,-8148,
 
465
  913,12323,-7139, 822,14910,-6353, 817,18235,-6210, 827,21937,-6382,
 
466
  846,21937,-6341, 841,14912,-6313, 931,12326,-7098, 901,10152,-8107,
 
467
  844,23359,-6615, 851,20681,-6059, 831,16487,-6105, 919,9307,-8399,
 
468
  869,13482,-6492, 999,11113,-7694, 860,9726,-8255, 942,10578,-7958,
 
469
  962,11715,-7413, 900,12896,-6796, 863,14065,-6404, 818,15760,-6221,
 
470
  828,17367,-6171, 854,19800,-5994, 848,21309,-6200, 843,22566,-6482,
 
471
  3407,15409,-3785, 3736,14196,-3673, 2911,18365,-4048,
 
472
  3147,16733,-3895, 2726,21608,-4455, 2808,19905,-4191,
 
473
  4338,12259,-3495, 4046,13146,-3576, 5457,10418,-3304,
 
474
  4809,11349,-3404, 4484,11815,-3454, 2715,22288,-4534,
 
475
  2832,19035,-4066, 3242,16015,-3841, 3900,13590,-3616,
 
476
  5133,10883,-3354, 4171,12742,-3524, 2803,20773,-4339,
 
477
  3051,17450,-3949, 3571,14803,-3729, 4979,11072,-3368,
 
478
  5619,10185,-3279, 4119,12924,-3556, 4411,12037,-3475,
 
479
  2801,20363,-4269, 2721,21826,-4489, 3099,17092,-3922,
 
480
  2887,18618,-4038, 3653,14499,-3701, 3325,15712,-3813,
 
481
  3489,15106,-3757, 3818,13893,-3645, 3011,17758,-3971,
 
482
  3194,16374,-3868, 2755,21085,-4385, 2815,19494,-4139,
 
483
  4265,12481,-3515, 3973,13368,-3596, 5304,10595,-3318,
 
484
  4664,11477,-3407, 5441,10207,-3361, 5350,10338,-3375,
 
485
  5139,10672,-3428, 5058,10742,-3431, 4831,11101,-3457,
 
486
  4742,11228,-3470, 4516,11559,-3504, 4423,11693,-3518,
 
487
  4277,12079,-3558, 4232,12180,-3571, 4138,12522,-3597,
 
488
  4094,12603,-3609, 3979,12935,-3675, 3943,13043,-3671,
 
489
  3852,13383,-3699, 3813,13496,-3705, 3692,13947,-3767,
 
490
  3653,14073,-3790, 3506,14587,-3772, 3467,14685,-3777,
 
491
  3349,15192,-3888, 3308,15317,-3887, 3162,15800,-3957,
 
492
  3119,15954,-3961, 3009,16528,-3946, 3002,16637,-3937,
 
493
  2914,17260,-4014, 2909,17347,-4006, 2834,17893,-4049,
 
494
  2813,18060,-4060, 2760,18849,-4232, 2746,18968,-4242, 850,22569,-6438,
 
495
  855,21313,-6156, 860,19804,-5949, 834,17371,-6127, 824,15765,-6176,
 
496
  869,14070,-6360, 906,12901,-6751, 968,11720,-7368, 948,10645,-7895,
 
497
  865,9731,-8211, 1006,11164,-7630, 875,13487,-6447, 926,9310,-8354,
 
498
  837,16490,-6061, 857,20684,-6015, 867,23379,-6515, 907,10157,-8062,
 
499
  937,12331,-7053, 847,14917,-6268, 842,18236,-6111, 852,21941,-6297,
 
500
  885,9891,-8156, 985,10905,-7724, 947,11969,-7255, 885,13125,-6649,
 
501
  858,14493,-6314, 839,16049,-6111, 836,17735,-6083, 859,20244,-5982,
 
502
  891,21559,-6157, 848,22883,-6508, 851,22255,-6367, 856,20999,-6085,
 
503
  867,19042,-6000, 836,16930,-6094, 835,15341,-6222, 880,13646,-6405,
 
504
  916,12540,-6953, 981,11337,-7564, 927,10370,-7988, 932,9518,-8285,
 
505
  931,9583,-8174, 863,9671,-8145, 892,9982,-8037, 903,10075,-7996,
 
506
  952,10454,-7865, 961,10550,-7832, 1008,10963,-7617, 1018,11105,-7567,
 
507
  996,11458,-7405, 992,11582,-7342, 972,12080,-7057, 968,12210,-6984,
 
508
  935,12620,-6792, 931,12759,-6714, 914,13199,-6441, 910,13346,-6359,
 
509
  915,13767,-6194, 910,13941,-6175, 890,14633,-6107, 886,14783,-6091,
 
510
  864,15476,-6035, 859,15645,-6017, 870,16062,-5957, 873,16231,-5936,
 
511
  853,17048,-5965, 861,17185,-5974, 879,17812,-5997, 885,17961,-5997,
 
512
  851,18486,-6138, 865,18526,-5933, 872,18761,-5875, 870,19337,-5971,
 
513
  864,19470,-5784, 937,19590,-5786, 833,19023,-6126, 851,20344,-5894,
 
514
  851,20576,-5912, 855,21086,-5973, 854,21224,-6003, 871,21651,-6070,
 
515
  852,21853,-6116, 850,22332,-6224, 849,22490,-6259, 831,22924,-6338,
 
516
  834,23240,-6364, 2743,19661,-4287, 2740,19863,-4312, 2723,20501,-4469,
 
517
  2705,20711,-4503, 2661,21262,-4565, 2658,21427,-4593,
 
518
  2687,22088,-4631, 2695,22209,-4643, 2774,23170,-4392,
 
519
  2633,23103,-4527, 2681,22439,-4516, 2656,22665,-4573,
 
520
  2552,22727,-4653, 2534,23015,-4628, 2607,23397,-4556,
 
521
  2759,23681,-4398, 2740,24136,-4370, 2610,24100,-4580,
 
522
  2412,24481,-5089, 2671,24389,-4569, 2397,24935,-5652,
 
523
  2562,25022,-5528, 939,23708,-6566, 1009,24359,-6776, 1095,24912,-6886,
 
524
  1049,24117,-6493, 990,23894,-6415, 2290,23837,-4814, 2312,23612,-4723,
 
525
  2183,24804,-5574, 2191,24632,-5391, 1156,24771,-6650,
 
526
  1154,24624,-6586, 1104,24526,-6656, 0,9161,-8562, 1281,9161,-8432,
 
527
  2524,9161,-8046, 3691,9161,-7572, 4745,9161,-6945, 5662,9127,-6096,
 
528
  3697,9192,-7581, 2531,9192,-8056, 4753,9183,-6951, 5664,9161,-6101,
 
529
  5664,9185,-6101, 4753,9207,-6951, 2531,9216,-8055, 3697,9216,-7581,
 
530
  3684,9232,-7560, 2518,9232,-8034, 4740,9223,-6930, 5651,9200,-6080,
 
531
  2828,20259,1366, 2798,20256,1187, 2820,20237,692, 2843,20292,-25,
 
532
  2874,20473,735, 2975,20508,90, 2474,20772,-759, 2660,20879,-691,
 
533
  2471,21553,-1445, 2498,22175,-1940, 2471,24346,-2830,
 
534
  2556,22373,-1903, 2528,21595,-1351, 2493,24314,-2936,
 
535
  2576,22239,-2123, 2548,21461,-1571, 2823,20635,1307, 2741,20503,1328,
 
536
  1490,23972,5392, 1489,24080,4226, 1489,24040,3095, 1489,23188,2159,
 
537
  1489,21953,1816, 2479,22156,182, 1515,23830,2117, 1605,24415,3131,
 
538
  1599,24460,4263, 1580,24357,5431, 1448,23885,6743, 1252,24770,5442,
 
539
  1271,24873,4274, 1277,24828,3142, 1389,24618,2016, 1479,24733,1993,
 
540
  1301,25010,3165, 1295,25055,4297, 1391,24890,5460, 1512,25216,5507,
 
541
  1602,25353,4317, 1608,25308,3186, 1979,23458,-29, 1320,25312,1928,
 
542
  1495,25055,546, 2438,25790,-488, 1605,25585,5599, 1583,26793,6150,
 
543
  1850,26272,4298, 1578,27435,7117, 1658,27625,6884, 1671,27398,6846,
 
544
  1678,27176,6937, 1715,27784,6626, 1744,27323,6551, 1753,26904,6776,
 
545
  1884,28809,-1688, 1555,28655,1620, 1658,28252,4204, 1581,28263,5997,
 
546
  1567,28312,6790, 1935,27827,4220, 1818,28249,1603, 1570,27742,6195,
 
547
  1532,27288,6120, 2038,27074,4245, 1418,28416,228, 413,30264,-4539,
 
548
  424,31094,-4152, 418,31478,-3497, 410,31453,-2653, 410,31190,-1863,
 
549
  410,30468,-1467, 410,29550,-1270, 411,31041,-1902, 448,31253,-2696,
 
550
  449,31323,-3466, 425,31182,-3496, 411,31060,-2738, 387,30899,-1932,
 
551
  316,30806,-1957, 335,30952,-2766, 353,31089,-3521, 322,31007,-3540,
 
552
  303,30871,-2786, 284,30725,-1976, 304,30630,-1993, 323,30776,-2802,
 
553
  342,30912,-3557, 396,30843,-3565, 378,30707,-2811, 358,30561,-2001,
 
554
  414,30477,-2013, 433,30623,-2822, 452,30759,-3576, 474,30560,-3616,
 
555
  456,30424,-2861, 436,30278,-2052, 349,30194,-2077, 368,30340,-2886,
 
556
  386,30477,-3641, 309,30389,-3665, 291,30253,-2911, 271,30107,-2102,
 
557
  267,29996,-2124, 286,30142,-2933, 305,30278,-3688, 376,30179,-3700,
 
558
  357,30043,-2945, 338,29897,-2136, 420,29789,-2150, 439,29935,-2959,
 
559
  458,30071,-3713, 500,29883,-3751, 463,29601,-2187, 470,30974,-4049,
 
560
  462,30153,-4391, 466,30563,-4220, 410,30009,-1368, 725,29372,-3225,
 
561
  677,29335,-5130, 908,29205,-3300, 632,29533,-4803, 2587,28768,-3408,
 
562
  2730,28611,-3456, 2404,28568,-6916, 2413,28849,-6612,
 
563
  1904,26715,1801, 1394,25919,831, 2224,27270,-3994, 2730,28438,-3011,
 
564
  2587,28570,-2864, 2826,28152,-3163, 2476,28668,-6523,
 
565
  2476,28433,-6776, 2787,28338,-3507, 2216,27658,-3972,
 
566
  2207,27950,-5907, 2311,28216,-6128, 2320,27876,-3971,
 
567
  2311,28118,-6301, 2311,27845,-6252, 2320,27703,-3749,
 
568
  2320,27084,-3798, 2320,26986,-4070, 2698,26705,-4014,
 
569
  2557,26974,-3547, 2557,27739,-3485, 2572,27738,-6362,
 
570
  2436,28204,-6533, 2436,28421,-6303, 2556,28092,-3822,
 
571
  2431,28142,-6975, 2544,27863,-6726, 2266,28229,-1686,
 
572
  1939,28156,-1065, 2569,27943,-2270, 2381,27545,-1682,
 
573
  2799,27594,-3104, 2750,27866,-2738, 2539,27578,-6309,
 
574
  2720,26853,-3133, 2788,26461,-3776, 1061,27543,-7078, 1780,27941,135,
 
575
  1859,27747,-527, 1756,27784,691, 1855,27001,736, 1950,26711,19,
 
576
  1964,27006,-630, 2342,26955,-1898, 2595,25515,-3113, 2147,27855,132,
 
577
  2126,27722,601, 2213,27691,-428, 2210,27061,639, 2290,26816,34,
 
578
  2302,27065,-515, 2347,27680,100, 2335,27602,376, 2386,27584,-229,
 
579
  2385,27213,398, 2432,27069,42, 2439,27215,-281, 2481,27452,103,
 
580
  1786,24263,399, 2278,24851,-562, 2372,25143,-1163, -2567,23141,-2607,
 
581
  -2513,23156,-2494, 2513,23156,-2494, 2567,23141,-2607,
 
582
 
 
583
  TRIANGLES, 657,656,159, 100,506,99, 1003,900,995, 1048,1009,901,
 
584
  1051,901,1009, 1070,1073,1071, 1070,803,808, 1071,1077,1070,
 
585
  1072,1006,1073, 1072,808,915, 1073,808,1072, 1077,1071,1076,
 
586
  1078,1283,1127, 1081,1078,1079, 1081,1079,1080, 1083,1082,1086,
 
587
  1083,747,1274, 1084,888,1085, 1085,878,1086, 1085,1086,1095,
 
588
  1086,747,1083, 1093,1095,1086, 1094,1095,1093, 658,657,149,
 
589
  1101,637,32, 1103,638,1108, 1105,637,1101, 1106,637,1105,
 
590
  1108,638,1111, 111,36,158, 111,653,665, 111,665,36, 1110,858,1112,
 
591
  1111,988,1110, 1111,638,891, 1111,891,988, 1112,858,1113,
 
592
  1113,637,1106, 1117,779,784, 112,214,207, 112,651,210, 1124,1297,1154,
 
593
  1125,1123,1128, 1125,1302,1154, 1127,1077,1078, 1129,791,796,
 
594
  1130,1118,1137, 1136,1130,1137, 1137,1118,1119, 1137,1119,1121,
 
595
  1137,1121,1126, 1142,758,759, 1142,759,760, 1142,760,761,
 
596
  1147,1146,1154, 1150,755,756, 1150,756,757, 1154,1302,1124,
 
597
  1155,1147,1154, 1155,1297,1156, 1155,1154,1297, 1156,1240,1155,
 
598
  1156,1298,1157, 1157,1240,1156, 1157,1299,1273, 1157,1282,1281,
 
599
  1158,1151,1152, 1161,768,1164, 1162,773,1161, 1162,1161,1163,
 
600
  1163,1161,1164, 1165,1172,762, 1168,726,1178, 1168,1267,1266,
 
601
  1169,1178,725, 1171,1172,1165, 1171,720,1172, 1171,1165,1175,
 
602
  1178,1169,1174, 1178,1174,1278, 1179,1229,1228, 118,660,168,
 
603
  1180,1229,1179, 1185,726,1226, 1186,1183,1184, 1186,1184,1191,
 
604
  119,660,118, 1191,1184,1192, 1192,1184,1197, 1197,1184,1198,
 
605
  1198,1184,1203, 1203,1184,1204, 121,116,451, 1210,1209,1230,
 
606
  1215,1210,1230, 1216,1215,1230, 1221,1216,1230, 1222,1185,1226,
 
607
  1222,1221,1230, 1223,1222,1226, 1224,1223,1225, 1225,1223,1226,
 
608
  1226,726,1231, 1227,1188,1189, 1227,1189,1194, 1227,1194,1195,
 
609
  1227,1195,1200, 1227,1200,1201, 1227,1201,1206, 1228,1224,1225,
 
610
  1228,1225,1234, 1229,1207,1212, 1229,1212,1213, 1229,1213,1218,
 
611
  1229,1218,1219, 1229,1219,1224, 1229,1180,1227, 1229,1224,1228,
 
612
  1230,729,1185, 1230,1185,1222, 1231,1225,1226, 1232,1179,1234,
 
613
  1233,744,1232, 1234,1179,1228, 1234,1225,1231, 1235,744,1233,
 
614
  1237,744,1238, 1239,1155,1240, 1240,1157,1239, 1243,1168,1266,
 
615
  1248,1241,1249, 1250,1249,1252, 1252,1249,1253, 1254,1248,1251,
 
616
  1256,1241,1255, 1259,1244,1270, 1264,745,1237, 1265,1260,1272,
 
617
  1267,1168,1178, 1267,1178,1277, 1269,1282,1270, 1270,1282,1273,
 
618
  1271,1268,1269, 1271,1269,1270, 1273,1283,1274, 1274,1078,1081,
 
619
  1274,1081,1083, 1274,747,1275, 1275,745,1264, 1275,1264,1265,
 
620
  1275,1265,1272, 1275,1272,1274, 1276,1178,1278, 1277,1178,1276,
 
621
  1280,1157,1281, 1281,1269,1277, 1282,1157,1273, 1282,1269,1281,
 
622
  1283,1078,1274, 1292,1290,1296, 1295,1292,1296, 1296,1290,1291,
 
623
  1296,1291,1293, 1296,1293,1294, 1296,1294,1295, 1297,1298,1156,
 
624
  1297,1124,1298, 1298,1124,1299, 1299,1124,1273, 1299,1157,1298,
 
625
  660,659,168, 133,128,463, 137,182,141, 138,185,137, 139,184,138,
 
626
  140,183,139, 141,181,142, 141,182,144, 142,181,143, 143,649,142,
 
627
  143,197,195, 144,196,181, 144,199,194, 145,183,140, 145,201,183,
 
628
  145,140,405, 146,184,139, 146,139,183, 146,203,184, 147,185,138,
 
629
  147,138,184, 147,205,185, 148,198,182, 148,137,185, 149,657,159,
 
630
  150,149,159, 151,150,157, 152,151,157, 153,152,157, 157,150,158,
 
631
  157,38,160, 157,37,38, 158,150,159, 160,153,157, 160,39,163,
 
632
  160,38,39, 162,41,161, 163,39,40, 168,659,171, 172,155,156,
 
633
  176,153,154, 176,154,155, 177,658,149, 179,149,150, 179,150,151,
 
634
  180,152,153, 181,197,143, 181,141,144, 181,196,190, 182,199,144,
 
635
  182,137,148, 182,198,189, 183,200,146, 184,202,147, 185,204,148,
 
636
  186,204,185, 186,267,204, 186,185,205, 187,202,184, 187,265,202,
 
637
  187,184,203, 188,200,183, 188,263,200, 188,183,201, 189,275,199,
 
638
  189,261,255, 190,277,197, 190,259,254, 191,276,198, 191,148,204,
 
639
  192,205,147, 192,147,202, 192,268,205, 193,203,146, 193,146,200,
 
640
  193,266,203, 194,278,196, 194,262,249, 196,259,190, 196,144,194,
 
641
  196,278,248, 197,181,190, 197,260,195, 197,277,247, 198,261,189,
 
642
  198,148,191, 198,276,246, 199,182,189, 199,262,194, 199,275,245,
 
643
  200,274,193, 201,273,188, 202,272,192, 203,271,187, 204,270,191,
 
644
  205,269,186, 206,215,209, 206,216,90, 207,215,206, 207,214,208,
 
645
  208,231,215, 208,230,228, 209,233,216, 209,232,227, 210,229,214,
 
646
  210,651,226, 211,235,217, 211,234,225, 212,237,218, 212,236,224,
 
647
  212,386,236, 213,238,223, 213,421,88, 214,230,208, 214,112,210,
 
648
  214,229,222, 215,207,208, 215,232,209, 215,231,221, 216,206,209,
 
649
  216,234,211, 216,233,220, 217,90,211, 217,386,212, 218,89,212,
 
650
  218,238,213, 218,237,219, 219,342,238, 219,340,331, 220,346,234,
 
651
  220,336,329, 221,348,232, 221,334,328, 222,350,230, 222,332,327,
 
652
  223,341,326, 224,343,237, 224,339,325, 225,345,235, 225,337,324,
 
653
  226,351,229, 226,651,445, 227,347,233, 227,335,322, 228,349,231,
 
654
  228,333,321, 229,332,222, 229,210,226, 229,351,320, 230,214,222,
 
655
  230,333,228, 230,350,319, 231,334,221, 231,208,228, 231,349,318,
 
656
  232,215,221, 232,335,227, 232,348,317, 233,336,220, 233,209,227,
 
657
  233,347,316, 234,216,220, 234,337,225, 234,346,315, 235,211,225,
 
658
  235,345,314, 236,339,224, 236,383,313, 236,344,383, 237,340,219,
 
659
  237,212,224, 237,343,312, 238,218,219, 238,341,223, 238,342,311,
 
660
  239,269,205, 239,205,268, 240,270,204, 240,204,267, 241,271,203,
 
661
  241,203,266, 242,272,202, 242,202,265, 243,273,201, 243,201,264,
 
662
  244,274,200, 244,200,263, 250,145,407, 251,266,193, 251,193,274,
 
663
  252,268,192, 252,192,272, 253,191,270, 256,263,188, 256,188,273,
 
664
  257,265,187, 257,187,271, 258,267,186, 258,186,269, 259,196,248,
 
665
  22,650,435, 260,197,247, 261,198,246, 262,199,245, 21,650,22,
 
666
  275,189,255, 276,191,253, 277,190,254, 278,194,249, 323,226,445,
 
667
  330,217,235, 330,235,338, 332,229,320, 333,230,319, 334,231,318,
 
668
  335,232,317, 336,233,316, 337,234,315, 338,235,314, 339,236,313,
 
669
  664,653,661, 340,237,312, 341,238,311, 342,219,331, 343,224,325,
 
670
  344,236,386, 345,225,324, 346,220,329, 347,227,322, 348,221,328,
 
671
  349,228,321, 665,653,664, 350,222,327, 351,226,323, 380,217,330,
 
672
  405,408,145, 405,412,406, 406,408,405, 407,145,408, 408,341,407,
 
673
  411,406,412, 413,412,461, 414,413,416, 415,414,416, 416,413,608,
 
674
  418,87,421, 418,416,608, 419,223,326, 420,213,223, 420,223,419,
 
675
  421,417,418, 421,213,420, 421,430,428, 421,87,88, 428,430,429,
 
676
  430,421,420, 435,650,439, 439,650,440, 440,650,447, 442,651,437,
 
677
  444,195,323, 444,323,445, 445,651,442, 446,195,444, 447,650,195,
 
678
  447,195,446, 453,452,471, 455,453,471, 460,455,471, 461,617,413,
 
679
  462,457,459, 465,43,44, 471,452,464, 471,464,470, 486,485,492,
 
680
  488,458,1301, 488,631,458, 488,1301,459, 488,480,481, 488,481,489,
 
681
  489,574,490, 490,631,489, 490,574,491, 490,632,631, 491,632,490,
 
682
  495,105,106, 495,106,107, 495,107,108, 495,108,109, 495,109,110,
 
683
  495,110,496, 497,495,496, 498,105,495, 498,495,497, 499,506,505,
 
684
  505,68,71, 506,68,505, 506,67,68, 508,503,512, 509,499,505,
 
685
  512,74,502, 512,502,601, 513,563,514, 518,517,520, 518,564,76,
 
686
  519,75,564, 519,74,75, 523,522,561, 525,518,520, 526,518,525,
 
687
  528,523,561, 529,528,561, 531,518,526, 532,518,531, 534,529,561,
 
688
  535,534,561, 537,518,532, 538,518,537, 540,535,561, 546,541,563,
 
689
  547,546,563, 552,547,563, 553,552,563, 556,519,564, 558,553,563,
 
690
  559,557,558, 559,558,562, 560,74,519, 560,519,556, 560,556,557,
 
691
  560,557,559, 560,559,565, 561,514,563, 562,563,513, 562,558,563,
 
692
  562,513,568, 564,543,544, 564,544,549, 564,549,550, 564,550,555,
 
693
  564,555,556, 565,74,560, 565,559,568, 566,84,567, 567,84,569,
 
694
  568,559,562, 568,513,566, 571,85,598, 571,84,85, 572,84,571,
 
695
  573,491,574, 574,489,573, 583,575,582, 585,582,588, 586,583,584,
 
696
  587,583,586, 589,575,590, 598,85,609, 599,598,609, 653,111,654,
 
697
  600,601,502, 600,502,577, 603,602,605, 604,578,593, 604,616,603,
 
698
  604,603,605, 606,594,599, 606,599,609, 607,633,491, 607,616,604,
 
699
  607,491,616, 607,458,633, 608,87,418, 608,617,607, 608,606,609,
 
700
  608,413,617, 609,87,608, 609,86,87, 610,512,611, 611,512,601,
 
701
  611,603,615, 612,508,512, 612,512,610, 615,616,491, 615,491,614,
 
702
  615,603,616, 625,624,630, 627,625,630, 628,627,630, 629,628,630,
 
703
  630,624,626, 630,626,629, 631,488,489, 632,458,631, 632,491,633,
 
704
  633,458,632, 639,651,112, 641,774,640, 32,637,33, 667,640,668,
 
705
  668,640,669, 669,640,774, 67,506,100, 672,669,774, 676,673,820,
 
706
  677,676,823, 680,677,826, 688,685,1131, 712,711,754, 720,719,1172,
 
707
  721,720,1171, 725,1178,726, 729,726,1185, 729,1230,730, 73,512,503,
 
708
  730,1230,1184, 74,512,73, 743,82,83, 745,744,1237, 745,743,744,
 
709
  745,1275,746, 746,85,743, 746,743,745, 746,609,85, 746,1275,86,
 
710
  747,86,1275, 748,747,1086, 748,883,751, 748,1086,878, 751,882,752,
 
711
  752,881,870, 76,564,75, 762,1172,763, 763,1172,719, 769,768,1161,
 
712
  770,769,1161, 771,770,1161, 772,771,1161, 773,772,1161, 774,641,642,
 
713
  775,638,639, 781,647,782, 655,654,111, 800,848,801, 801,847,802,
 
714
  801,848,810, 802,846,803, 802,847,809, 803,846,808, 804,845,800,
 
715
  805,844,804, 805,636,806, 806,844,805, 806,860,844, 807,845,804,
 
716
  807,804,844, 807,862,845, 808,1073,1070, 809,863,846, 809,866,856,
 
717
  810,865,847, 810,868,855, 811,800,845, 811,867,848, 812,644,645,
 
718
  812,645,840, 813,812,842, 814,813,842, 816,815,843, 817,816,839,
 
719
  818,817,839, 819,818,835, 820,813,814, 820,814,815, 820,815,816,
 
720
  820,816,823, 821,672,774, 821,813,820, 822,642,643, 822,643,644,
 
721
  822,644,812, 822,812,813, 822,813,821, 823,676,820, 824,681,825,
 
722
  826,677,823, 83,742,743, 831,646,647, 831,647,781, 834,646,831,
 
723
  844,859,807, 845,861,811, 846,864,808, 846,802,809, 846,863,851,
 
724
  847,866,809, 847,801,810, 847,865,850, 848,868,810, 848,800,811,
 
725
  848,867,849, 849,934,868, 849,932,923, 85,84,743, 850,936,866,
 
726
  850,930,922, 851,938,864, 851,928,921, 852,861,845, 852,926,861,
 
727
  852,845,862, 853,859,844, 853,924,859, 853,844,860, 854,811,861,
 
728
  854,935,867, 855,937,865, 855,933,917, 856,939,863, 856,931,916,
 
729
  857,862,807, 857,807,859, 857,927,862, 858,637,1113, 858,860,806,
 
730
  858,925,860, 859,943,857, 86,609,746, 860,942,853, 861,941,854,
 
731
  862,940,852, 863,928,851, 863,809,856, 863,939,909, 864,846,851,
 
732
  864,938,908, 865,930,850, 865,810,855, 865,937,907, 866,847,850,
 
733
  866,931,856, 866,936,906, 867,932,849, 867,811,854, 867,935,905,
 
734
  868,848,849, 868,933,855, 868,934,904, 870,880,871, 871,879,775,
 
735
  873,879,871, 873,895,879, 873,871,880, 874,880,870, 874,897,880,
 
736
  874,870,881, 875,638,775, 875,775,879, 876,881,752, 876,899,881,
 
737
  876,752,882, 877,882,751, 877,1051,882, 877,751,883, 878,883,748,
 
738
  878,903,883, 879,894,875, 88,218,213, 880,896,873, 881,898,874,
 
739
  882,900,876, 883,902,877, 884,902,883, 884,1005,902, 884,883,903,
 
740
  885,898,881, 885,1001,898, 885,881,899, 886,896,880, 886,999,896,
 
741
  886,880,897, 887,894,879, 887,997,894, 887,879,895, 888,878,1085,
 
742
  888,903,878, 888,1006,903, 889,901,877, 889,1004,901, 889,877,902,
 
743
  89,217,212, 89,218,88, 890,899,876, 890,1002,899, 890,876,900,
 
744
  891,638,875, 891,875,894, 892,897,874, 892,1000,897, 892,874,898,
 
745
  893,895,873, 893,998,895, 893,873,896, 894,1016,891, 895,1015,887,
 
746
  896,1014,893, 897,1013,886, 898,1012,892, 899,1011,885, 656,655,159,
 
747
  90,216,211, 90,217,89, 900,1010,890, 900,882,995, 901,1051,877,
 
748
  902,1008,889, 903,1007,884, 91,57,58, 910,940,862, 910,862,927,
 
749
  911,941,861, 911,861,926, 912,942,860, 912,860,925, 913,943,859,
 
750
  913,859,924, 914,927,857, 914,857,943, 918,854,941, 919,924,853,
 
751
  919,853,942, 920,926,852, 920,852,940, 928,863,909, 929,864,908,
 
752
  93,92,484, 930,865,907, 931,866,906, 932,867,905, 933,868,904,
 
753
  934,849,923, 935,854,918, 936,850,922, 937,855,917, 938,851,921,
 
754
  939,856,916, 94,93,484, 96,95,476, 97,96,476, 976,903,1006,
 
755
  976,1007,903, 977,902,1005, 977,1008,902, 978,901,1004, 978,1048,901,
 
756
  979,900,1003, 979,1010,900, 98,97,476, 980,899,1002, 980,1011,899,
 
757
  981,898,1001, 981,1012,898, 982,897,1000, 982,1013,897, 983,1014,896,
 
758
  983,896,999, 984,1015,895, 984,895,998, 985,1016,894, 985,894,997,
 
759
  986,893,1014, 986,998,893, 987,892,1012, 987,1000,892, 988,891,1016,
 
760
  988,858,1110, 989,890,1010, 989,1002,890, 99,506,499, 990,889,1008,
 
761
  990,1004,889, 991,888,1084, 991,1006,888, 992,887,1015, 992,997,887,
 
762
  993,886,1013, 993,999,886, 994,885,1011, 994,1001,885, 995,882,1045,
 
763
  996,884,1007, 996,1005,884,
 
764
 
 
765
  QUADS, 648,666,130,131, 648,649,20,19, 657,658,15,14,
 
766
  1000,987,1032,1031, 1001,994,1036,1035, 1002,989,1040,1039,
 
767
  1003,995,1044,1043, 1004,990,1053,1052, 1005,996,1057,1056,
 
768
  1006,991,1061,1060, 1007,976,1059,1058, 1008,977,1055,1054,
 
769
  1009,906,973,1047, 101,64,67,100, 1010,979,1042,1041,
 
770
  1011,980,1038,1037, 1012,981,1034,1033, 1013,982,1030,1029,
 
771
  1014,983,1026,1025, 1015,984,1022,1021, 1016,985,1018,1017,
 
772
  102,63,64,101, 103,60,63,102, 104,59,60,103, 1045,882,1051,1009,
 
773
  1045,1009,1047,1046, 1048,978,1050,1049, 105,104,103,106,
 
774
  106,103,102,107, 1061,991,1071,1075, 1062,939,1004,1052,
 
775
  1062,1052,1053,1063, 1063,909,939,1062, 1064,928,1008,1054,
 
776
  1064,1054,1055,1065, 1065,921,928,1064, 1066,938,1005,1056,
 
777
  1066,1056,1057,1067, 1067,908,938,1066, 1068,929,1007,1058,
 
778
  1068,1058,1059,1069, 1069,915,929,1068, 107,102,101,108,
 
779
  1071,991,1084,1076, 1072,915,976,1006, 1073,1006,1060,1074,
 
780
  1074,1060,1061,1075, 1075,1071,1073,1074, 1078,1077,1076,1079,
 
781
  108,101,100,109, 1080,1079,1085,1095, 1081,1080,1082,1083,
 
782
  1082,1080,1092,1091, 1084,1085,1087,1088, 1085,1079,1089,1087,
 
783
  1086,1082,1091,1093, 1088,1087,1089,1090, 1089,1079,1076,1090,
 
784
  109,100,99,110, 1090,1076,1084,1088, 1092,1080,1095,1094,
 
785
  1093,1091,1092,1094, 1096,27,26,431, 1097,638,1103,1098,
 
786
  658,659,16,15, 110,99,499,496, 1100,1099,1102,1104,
 
787
  1101,1100,1104,1105, 1102,1099,1098,1103, 1106,1105,1104,1107,
 
788
  1107,1104,1102,1109, 1109,1102,1103,1108, 1110,1109,1108,1111,
 
789
  1112,1107,1109,1110, 1113,1106,1107,1112, 1115,819,828,1116,
 
790
  1117,784,791,1120, 1118,1116,1117,1119, 1119,1117,1120,1121,
 
791
  1120,791,1129,1122, 1121,1120,1122,1126, 1122,1123,1125,1126,
 
792
  1126,1125,1154,1137, 1127,1124,1302,1303, 1128,1123,1122,1129,
 
793
  1128,803,1070,1303, 1129,796,803,1128, 113,114,123,124,
 
794
  1130,1115,1116,1118, 1131,1114,1115,1130, 1132,1133,1140,1141,
 
795
  1133,1134,1139,1140, 1134,1135,1138,1139, 1136,688,1131,1130,
 
796
  1138,1135,1136,1137, 1138,1137,1154,1146, 1139,1138,1146,1145,
 
797
  114,115,122,123, 1140,1139,1145,1144, 1141,1140,1144,1143,
 
798
  1142,761,1132,1141, 1143,758,1142,1141, 1143,1144,1149,1150,
 
799
  1144,1145,1148,1149, 1145,1146,1147,1148, 1148,1147,1155,1153,
 
800
  1149,1148,1153,1152, 115,116,121,122, 115,114,166,167,
 
801
  1150,757,758,1143, 1150,1149,1152,1151, 1151,754,755,1150,
 
802
  1158,712,754,1151, 1158,1152,1160,1159, 1160,1152,1153,1155,
 
803
  1160,1155,1239,1177, 1165,762,773,1162, 1165,1162,1163,1166,
 
804
  1166,1163,1164,1167, 1167,1159,1176,1166, 1169,1170,1173,1174,
 
805
  1173,1170,1171,1175, 1174,1173,1177,1239, 1175,1165,1166,1176,
 
806
  1176,1159,1160,1177, 1177,1173,1175,1176, 1182,1183,1186,1187,
 
807
  1187,1186,1191,1190, 1188,1181,1182,1187, 1189,1188,1187,1190,
 
808
  119,118,117,120, 1190,1191,1192,1193, 1193,1192,1197,1196,
 
809
  1194,1189,1190,1193, 1195,1194,1193,1196, 1196,1197,1198,1199,
 
810
  1199,1198,1203,1202, 659,660,17,16, 659,658,177,171, 120,117,113,124,
 
811
  1200,1195,1196,1199, 1201,1200,1199,1202, 1202,1203,1204,1205,
 
812
  1204,1184,1230,1209, 1205,1204,1209,1208, 1206,1201,1202,1205,
 
813
  1207,1206,1205,1208, 1208,1209,1210,1211, 1211,1210,1215,1214,
 
814
  1212,1207,1208,1211, 1213,1212,1211,1214, 1214,1215,1216,1217,
 
815
  1217,1216,1221,1220, 1218,1213,1214,1217, 1219,1218,1217,1220,
 
816
  122,121,128,127, 1220,1221,1222,1223, 1224,1219,1220,1223,
 
817
  1227,1180,1181,1188, 1227,1206,1207,1229, 123,122,127,126,
 
818
  1231,726,1168,1233, 1233,1168,1243,1235, 1234,1231,1233,1232,
 
819
  1236,1235,1243,1242, 1236,1242,1244,1247, 1237,1238,1245,1246,
 
820
  1238,744,1235,1236, 1239,1157,1280,1279, 124,123,126,125,
 
821
  1244,1242,1271,1270, 1245,1238,1236,1247, 1246,1245,1262,1261,
 
822
  1247,1244,1259,1263, 1249,1241,1256,1253, 125,126,135,136,
 
823
  1251,1248,1249,1250, 1251,1250,1262,1263, 1254,1251,1263,1259,
 
824
  1255,1241,1248,1254, 1257,1256,1255,1258, 1258,1255,1254,1259,
 
825
  126,127,134,135, 1260,1253,1256,1257, 1261,1252,1253,1260,
 
826
  1262,1250,1252,1261, 1262,1245,1247,1263, 1264,1237,1246,1265,
 
827
  1265,1246,1261,1260, 1268,1243,1266,1269, 1269,1266,1267,1277,
 
828
  127,128,133,134, 1271,1242,1243,1268, 1272,1260,1257,1274,
 
829
  1273,1258,1259,1270, 1273,1124,1127,1283, 1274,1257,1258,1273,
 
830
  1278,1174,1239,1279, 128,121,451,454, 1284,1276,1278,1285,
 
831
  1285,1278,1279,1287, 1286,1277,1276,1284, 1287,1279,1280,1288,
 
832
  1288,1280,1281,1289, 1289,1281,1277,1286, 129,120,124,125,
 
833
  1290,1284,1285,1291, 1291,1285,1287,1293, 1292,1286,1284,1290,
 
834
  1293,1287,1288,1294, 1294,1288,1289,1295, 1295,1289,1286,1292,
 
835
  660,666,18,17, 130,666,660,119, 130,119,120,129, 1301,458,461,1300,
 
836
  1301,1300,462,459, 1303,1070,1077,1127, 1303,1302,1125,1128,
 
837
  131,130,129,132, 132,129,125,136, 134,133,140,139, 135,134,139,138,
 
838
  136,135,138,137, 140,133,463,462, 141,132,136,137, 142,131,132,141,
 
839
  154,153,160,163, 158,36,37,157, 159,655,111,158, 161,156,155,162,
 
840
  161,41,42,448, 162,155,154,163, 163,40,41,162, 164,113,117,169,
 
841
  164,169,170,174, 165,116,115,167, 165,156,449,450, 166,114,113,164,
 
842
  167,166,173,172, 169,117,118,168, 170,169,168,171, 172,156,165,167,
 
843
  173,166,164,174, 174,170,178,175, 175,178,179,180, 176,155,172,173,
 
844
  176,173,174,175, 177,149,179,178, 178,170,171,177, 179,151,152,180,
 
845
  180,153,176,175, 649,648,131,142, 649,650,21,20, 201,145,250,264,
 
846
  206,90,753,869, 207,206,869,872, 263,256,400,399, 264,250,404,403,
 
847
  265,257,306,305, 266,251,310,309, 267,258,298,297, 268,252,302,301,
 
848
  269,239,300,299, 270,240,296,295, 271,241,308,307, 272,242,304,303,
 
849
  273,243,402,401, 274,244,398,397, 279,260,247,280, 280,247,320,353,
 
850
  281,277,254,282, 282,254,327,355, 283,259,248,284, 284,248,319,357,
 
851
  285,278,249,286, 286,249,321,359, 287,262,245,288, 288,245,318,361,
 
852
  289,275,255,290, 19,18,666,648, 290,255,328,363, 291,261,246,292,
 
853
  292,246,317,365, 293,276,253,294, 294,253,322,367, 296,240,316,369,
 
854
  298,258,329,371, 650,649,143,195, 300,239,315,373, 302,252,324,375,
 
855
  304,242,314,377, 306,257,330,379, 308,241,344,382, 661,653,652,662,
 
856
  310,251,313,385, 311,250,407,341, 312,256,273,340, 313,251,274,339,
 
857
  314,242,265,338, 315,239,268,337, 316,240,267,336, 317,246,276,335,
 
858
  318,245,275,334, 319,248,278,333, 662,667,668,663, 320,247,277,332,
 
859
  321,249,262,349, 322,253,270,347, 323,195,260,351, 324,252,272,345,
 
860
  325,244,263,343, 327,254,259,350, 328,255,261,348, 329,258,269,346,
 
861
  663,668,669,670, 330,257,271,380, 331,243,264,342, 332,277,281,354,
 
862
  333,278,285,358, 334,275,289,362, 335,276,293,366, 336,267,297,370,
 
863
  337,268,301,374, 338,265,305,378, 339,274,397,387, 664,661,662,663,
 
864
  340,273,401,391, 342,264,403,393, 343,263,399,389, 344,241,266,383,
 
865
  345,272,303,376, 346,269,299,372, 347,270,295,368, 348,261,291,364,
 
866
  349,262,287,360, 665,664,663,670, 350,259,283,356, 351,260,279,352,
 
867
  352,279,280,353, 353,320,351,352, 354,281,282,355, 355,327,332,354,
 
868
  356,283,284,357, 357,319,350,356, 358,285,286,359, 359,321,333,358,
 
869
  36,665,670,671, 360,287,288,361, 361,318,349,360, 362,289,290,363,
 
870
  363,328,334,362, 364,291,292,365, 365,317,348,364, 366,293,294,367,
 
871
  367,322,335,366, 368,295,296,369, 369,316,347,368, 37,36,671,674,
 
872
  370,297,298,371, 371,329,336,370, 372,299,300,373, 373,315,346,372,
 
873
  374,301,302,375, 375,324,337,374, 376,303,304,377, 377,314,345,376,
 
874
  378,305,306,379, 379,330,338,378, 38,37,674,675, 380,271,307,381,
 
875
  381,307,308,382, 382,344,380,381, 383,266,309,384, 384,309,310,385,
 
876
  385,313,383,384, 386,217,380,344, 388,325,339,387, 388,387,397,398,
 
877
  39,38,675,678, 390,312,343,389, 390,389,399,400, 392,331,340,391,
 
878
  392,391,401,402, 394,311,342,393, 394,393,403,404, 395,341,408,409,
 
879
  396,326,341,395, 396,395,409,410, 398,244,325,388, 40,39,678,679,
 
880
  400,256,312,390, 402,243,331,392, 404,250,311,394, 405,140,462,1300,
 
881
  406,326,396,410, 408,406,410,409, 41,40,679,682, 411,412,413,414,
 
882
  411,414,424,425, 412,405,1300,461, 417,415,416,418, 419,326,406,411,
 
883
  419,411,425,423, 42,41,682,683, 420,414,415,430, 422,420,419,423,
 
884
  424,414,420,422, 424,422,423,425, 426,417,421,428, 427,415,417,426,
 
885
  427,426,428,429, 43,42,683,686, 430,415,427,429, 431,651,639,1096,
 
886
  431,26,25,432, 432,25,24,433, 432,433,436,437, 433,24,23,434,
 
887
  434,23,22,435, 436,433,434,438, 436,438,441,443, 437,651,431,432,
 
888
  437,436,443,442, 438,434,435,439, 438,439,440,441, 44,43,686,687,
 
889
  441,440,447,446, 442,443,444,445, 443,441,446,444, 448,42,43,465,
 
890
  449,156,161,448, 449,448,465,464, 45,44,687,690, 450,449,464,452,
 
891
  451,116,165,450, 451,450,452,453, 454,451,453,455, 456,454,455,460,
 
892
  456,457,462,463, 459,457,456,460, 46,45,690,691, 461,458,607,617,
 
893
  463,128,454,456, 465,44,470,464, 466,98,476,475, 466,49,50,98,
 
894
  467,47,49,466, 468,46,47,467, 469,45,46,468, 47,46,691,694,
 
895
  470,44,45,469, 470,469,472,471, 472,469,468,473, 473,468,467,474,
 
896
  474,467,466,475, 476,95,477,475, 478,474,475,477, 479,473,474,478,
 
897
  48,695,696,697, 480,472,473,479, 481,480,479,482, 482,479,478,483,
 
898
  483,478,477,484, 486,483,484,485, 487,482,483,486, 487,486,494,489,
 
899
  488,459,460,471, 488,471,472,480, 489,481,482,487, 49,47,694,48,
 
900
  492,58,59,493, 493,59,104,501, 494,486,492,493, 494,493,510,511,
 
901
  497,496,499,500, 498,497,500,501, 652,640,667,662, 652,653,10,9,
 
902
  50,49,48,697, 500,499,509,510, 501,104,105,498, 502,74,565,567,
 
903
  504,72,73,503, 505,71,72,504, 505,504,507,509, 507,504,503,508,
 
904
  509,507,511,510, 51,50,697,698, 510,493,501,500, 511,507,508,573,
 
905
  513,81,82,566, 514,80,81,513, 515,79,80,514, 515,514,561,522,
 
906
  516,78,79,515, 516,515,522,521, 517,77,78,516, 518,76,77,517,
 
907
  52,51,698,701, 520,517,516,521, 521,522,523,524, 524,523,528,527,
 
908
  525,520,521,524, 526,525,524,527, 527,528,529,530, 53,52,701,702,
 
909
  530,529,534,533, 531,526,527,530, 532,531,530,533, 533,534,535,536,
 
910
  536,535,540,539, 537,532,533,536, 538,537,536,539, 539,540,541,542,
 
911
  54,53,702,705, 541,540,561,563, 542,541,546,545, 543,538,539,542,
 
912
  544,543,542,545, 545,546,547,548, 548,547,552,551, 549,544,545,548,
 
913
  55,54,705,706, 550,549,548,551, 551,552,553,554, 554,553,558,557,
 
914
  555,550,551,554, 556,555,554,557, 56,55,706,709, 564,518,538,543,
 
915
  566,82,743,84, 567,565,568,566, 569,84,572,570, 57,56,709,710,
 
916
  570,572,579,581, 573,489,494,511, 573,508,612,613, 577,502,567,569,
 
917
  577,569,570,576, 577,576,605,602, 578,576,570,581, 579,572,571,580,
 
918
  58,57,710,713, 580,571,598,599, 581,579,596,597, 582,575,589,588,
 
919
  583,582,585,584, 586,584,596,595, 587,586,595,594, 588,589,592,593,
 
920
  589,590,591,592, 59,58,713,714, 590,575,583,587, 590,587,594,591,
 
921
  591,594,606,608, 592,591,608,607, 593,578,581,597, 593,592,607,604,
 
922
  595,580,599,594, 596,579,580,595, 596,584,585,597, 597,585,588,593,
 
923
  653,654,11,10, 60,59,714,61, 600,577,602,603, 601,600,603,611,
 
924
  605,576,578,604, 61,716,717,62, 610,611,620,618, 611,615,623,620,
 
925
  612,610,618,619, 613,612,619,621, 614,491,573,613, 614,613,621,622,
 
926
  615,614,622,623, 618,620,626,624, 619,618,624,625, 62,717,718,65,
 
927
  620,623,629,626, 621,619,625,627, 622,621,627,628, 623,622,628,629,
 
928
  63,60,61,62, 639,638,1097,1096, 64,63,62,65, 647,634,793,782,
 
929
  1,647,646,2, 2,646,645,3, 65,718,719,66, 3,645,644,4, 4,644,643,5,
 
930
  5,643,642,6, 6,642,641,7, 7,641,640,8, 8,640,652,9, 28,27,1096,1097,
 
931
  29,28,1097,1098, 66,719,720,69, 30,29,1098,1099, 31,30,1099,1100,
 
932
  32,31,1100,1101, 33,637,636,34, 34,636,635,35, 35,635,634,0,
 
933
  0,634,647,1, 67,64,65,66, 670,669,672,671, 671,672,673,674,
 
934
  673,672,821,820, 674,673,676,675, 675,676,677,678, 678,677,680,679,
 
935
  679,680,681,682, 68,67,66,69, 681,680,826,825, 682,681,684,683,
 
936
  683,684,685,686, 684,681,824,1114, 685,684,1114,1131,
 
937
  686,685,688,687, 687,688,689,690, 689,688,1136,1135, 69,720,721,70,
 
938
  690,689,692,691, 691,692,693,694, 692,689,1135,1134,
 
939
  693,692,1134,1133, 694,693,695,48, 695,693,1133,1132,
 
940
  696,695,1132,761, 697,696,699,698, 698,699,700,701, 699,696,761,760,
 
941
  654,655,12,11, 70,721,722,723, 700,699,760,759, 701,700,703,702,
 
942
  702,703,704,705, 703,700,759,758, 704,703,758,757, 705,704,707,706,
 
943
  706,707,708,709, 707,704,757,756, 708,707,756,755, 709,708,711,710,
 
944
  71,68,69,70, 710,711,712,713, 711,708,755,754, 713,712,715,714,
 
945
  714,715,716,61, 715,712,1158,1159, 716,715,767,766, 717,716,766,765,
 
946
  718,717,765,764, 719,718,764,763, 72,71,70,723, 722,721,1171,1170,
 
947
  723,722,725,724, 724,725,726,727, 725,722,1170,1169, 727,726,729,728,
 
948
  728,729,730,731, 73,72,723,724, 731,730,733,732, 732,733,734,735,
 
949
  733,730,1184,1183, 734,733,1183,1182, 735,734,737,736,
 
950
  736,737,738,739, 737,734,1182,1181, 738,737,1181,1180,
 
951
  739,738,741,740, 74,73,724,727, 740,741,742,83, 741,738,1180,1179,
 
952
  742,741,1179,1232, 743,742,1232,744, 749,748,751,750, 75,74,727,728,
 
953
  750,751,752,753, 753,752,870,869, 76,75,728,731, 762,763,772,773,
 
954
  763,764,771,772, 764,765,770,771, 765,766,769,770, 766,767,768,769,
 
955
  767,715,1159,1167, 768,767,1167,1164, 77,76,731,732, 774,642,822,821,
 
956
  775,639,872,871, 776,780,783,787, 776,777,829,827, 778,779,828,830,
 
957
  78,77,732,735, 780,781,782,783, 780,776,827,832, 781,780,832,831,
 
958
  783,782,793,792, 784,779,778,785, 785,778,777,786, 786,777,776,787,
 
959
  787,783,792,788, 788,792,795,799, 789,786,787,788, 79,78,735,736,
 
960
  790,785,786,789, 791,784,785,790, 792,793,794,795, 793,634,635,794,
 
961
  794,635,636,805, 795,794,805,804, 796,791,790,797, 797,790,789,798,
 
962
  798,789,788,799, 799,795,804,800, 655,656,13,12, 80,79,736,739,
 
963
  801,798,799,800, 802,797,798,801, 803,796,797,802, 806,636,637,858,
 
964
  81,80,739,740, 815,814,842,843, 817,818,825,826, 818,819,824,825,
 
965
  82,81,740,83, 823,816,817,826, 824,819,1115,1114, 827,829,836,837,
 
966
  828,779,1117,1116, 828,819,835,830, 829,777,778,830, 831,832,833,834,
 
967
  833,832,827,837, 834,833,841,840, 835,818,839,836, 836,829,830,835,
 
968
  837,836,839,838, 839,816,843,838, 840,645,646,834, 841,833,837,838,
 
969
  842,812,840,841, 842,841,838,843, 86,747,748,749, 869,870,871,872,
 
970
  872,639,112,207, 88,87,86,749, 89,88,749,750, 656,657,14,13,
 
971
  90,89,750,753, 91,58,492,485, 910,927,952,953, 911,926,956,957,
 
972
  912,925,944,945, 913,924,948,949, 914,943,950,951, 915,808,864,929,
 
973
  918,941,958,959, 919,942,946,947, 92,91,485,484, 92,56,57,91,
 
974
  920,940,954,955, 924,919,992,1015, 925,858,988,1016, 926,920,993,1013,
 
975
  927,914,986,1014, 928,909,990,1008, 929,908,996,1007, 93,55,56,92,
 
976
  930,907,979,1003, 931,906,1009,1048, 932,905,981,1001,
 
977
  933,904,980,1002, 934,923,994,1011, 935,918,987,1012,
 
978
  936,922,995,1045, 937,917,989,1010, 938,921,977,1005,
 
979
  939,916,978,1004, 94,54,55,93, 940,910,983,999, 941,911,982,1000,
 
980
  942,912,985,997, 943,913,984,998, 944,925,1016,1017,
 
981
  945,944,1017,1018, 946,942,997,1019, 947,946,1019,1020,
 
982
  948,924,1015,1021, 949,948,1021,1022, 95,94,484,477, 95,53,54,94,
 
983
  950,943,998,1023, 951,950,1023,1024, 952,927,1014,1025,
 
984
  953,952,1025,1026, 954,940,999,1027, 955,954,1027,1028,
 
985
  956,926,1013,1029, 957,956,1029,1030, 958,941,1000,1031,
 
986
  959,958,1031,1032, 96,52,53,95, 960,935,1012,1033, 961,960,1033,1034,
 
987
  961,905,935,960, 962,932,1001,1035, 963,962,1035,1036,
 
988
  963,923,932,962, 964,934,1011,1037, 965,964,1037,1038,
 
989
  965,904,934,964, 966,933,1002,1039, 967,966,1039,1040,
 
990
  967,917,933,966, 968,937,1010,1041, 969,968,1041,1042,
 
991
  969,907,937,968, 97,51,52,96, 970,930,1003,1043, 971,970,1043,1044,
 
992
  971,922,930,970, 972,936,1045,1046, 973,972,1046,1047,
 
993
  973,906,936,972, 974,931,1048,1049, 975,974,1049,1050,
 
994
  975,916,931,974, 976,915,1069,1059, 977,921,1065,1055,
 
995
  978,916,975,1050, 979,907,969,1042, 98,50,51,97, 980,904,965,1038,
 
996
  981,905,961,1034, 982,911,957,1030, 983,910,953,1026,
 
997
  984,913,949,1022, 985,912,945,1018, 986,914,951,1024,
 
998
  987,918,959,1032, 989,917,967,1040, 990,909,1063,1053,
 
999
  992,919,947,1020, 993,920,955,1028, 994,923,963,1036,
 
1000
  995,922,971,1044, 996,908,1067,1057, 997,992,1020,1019,
 
1001
  998,986,1024,1023, 999,993,1028,1027,
 
1002
 
 
1003
  /* The base of the knight */
 
1004
  SPIN,18,
 
1005
  9510,0, 9510,756, SEAM, 9134,1129, 9447,1487,
 
1006
  9447,1951, 9103,2371, STEPDOWN, 8211,3083,
 
1007
  7167,4242, 6662,5664, 7040,7142, STEPUP, SEAM, 7935,8560,
 
1008
  STEPUP, BACKREF,0,
 
1009
 
 
1010
  ENDOFDATA
 
1011
};
 
1012
 
 
1013
unsigned short bishop_data[] = {
 
1014
  VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790,
 
1015
  4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532,
 
1016
  1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154,
 
1017
  -1790,26960,4918, -2617,26960,4532, -3364,26960,4009,
 
1018
  -4009,26960,3364, -4532,26960,2617, -4918,26960,1790,
 
1019
  -5154,26960,909, -5233,26960,0, -5154,26960,-909, -4918,26960,-1790,
 
1020
  -4532,26960,-2617, -4009,26960,-3364, -3364,26960,-4009,
 
1021
  -2617,26960,-4532, -1790,26960,-4918, -909,26960,-5154, 0,26833,-5233,
 
1022
  909,26960,-5154, 1790,26960,-4918, 2617,26960,-4532, 3364,26960,-4009,
 
1023
  4009,26960,-3364, 4532,26960,-2617, 4918,26960,-1790, 5154,26960,-909,
 
1024
  SETBACKREF,1, 3812,31178,0, 3765,31144,729, 3624,31040,1435,
 
1025
  3395,30872,2153, 3084,30642,2820, 2701,30360,3389, 2076,29899,4102,
 
1026
  1492,30015,4340, 845,30033,4442, 0,30044,4511, -657,30063,4443,
 
1027
  -1481,30081,4214, -2190,30081,3884, -2830,30081,3435,
 
1028
  -3383,30081,2883, -3831,30081,2242, -4162,30081,1534,
 
1029
  -4364,30081,779, -4432,30081,0, -4364,30081,-779, -4162,30081,-1534,
 
1030
  -3831,30081,-2242, -3383,30081,-2883, -2830,30081,-3435,
 
1031
  -2190,30081,-3884, -1481,30081,-4214, -657,30063,-4443, 0,30044,-4511,
 
1032
  845,30033,-4442, 1492,30015,-4340, 2076,29899,-4102, 2701,30360,-3388,
 
1033
  3084,30642,-2820, 3395,30872,-2153, 3624,31040,-1435, 3765,31144,-729,
 
1034
  240,28546,-4957, 884,29021,-4784, 1490,29467,-4537, 2076,29899,-4102,
 
1035
  2701,30360,-3388, 3084,30642,-2820, 3395,30872,-2153,
 
1036
  3624,31040,-1435, 3765,31144,-729, 2177,28477,4637, 1021,27605,5037,
 
1037
  1021,27605,-5042, 2170,28478,-4644, 0,26833,-5233, 0,26833,5233,
 
1038
  -3153,28619,-3758, 240,28546,4957, 884,29021,4784, 2076,29899,4102,
 
1039
  2701,30360,3389, 3084,30642,2820, 3395,30872,2153, 3624,31040,1435,
 
1040
  3765,31144,729, -719,28582,4883, 4863,28569,977, 4560,28569,1925,
 
1041
  4064,28569,2815, 3465,28569,3723, 2622,28569,4448, 2621,28583,-4401,
 
1042
  3473,28588,-3691, 4064,28569,-2815, 4560,28569,-1925, 4863,28569,-977,
 
1043
  4965,28569,0, -1678,28619,4610, -3153,28619,3758, -2453,28619,4248,
 
1044
  -4248,28619,2453, -3758,28619,3153, -4831,28619,852, -4906,28619,0,
 
1045
  -4831,28619,-852, -4610,28619,-1678, -4248,28619,-2453,
 
1046
  -3758,28619,-3153, -1678,28619,-4610, -2453,28619,-4248,
 
1047
  -644,27895,5037, -644,27895,-5037, -4610,28619,1678, -719,28582,-4883,
 
1048
  2170,28478,-4644, 1021,27605,-5042, 1021,27605,5037, 2177,28477,4637,
 
1049
  0,26833,-5233, 0,26833,5233, -644,27895,-5037, -644,27895,5037,
 
1050
  -644,27895,5037, -644,27895,-5037, 1490,29467,-4537, 884,29021,-4784,
 
1051
  240,28546,-4957, 240,28546,4957, 884,29021,4784, 3812,31178,0,
 
1052
  4349,30116,-867, 4197,30001,-1705, 3948,29813,-2492, 3610,29558,-3203,
 
1053
  3193,29244,-3817, 2711,28880,-4315, 4349,30116,-867, 4197,30001,-1705,
 
1054
  3948,29813,-2492, 3610,29558,-3203, 3193,29244,-3817,
 
1055
  2711,28880,-4315, 1608,28047,-4906, 1608,28047,4901, 2711,28880,4310,
 
1056
  3193,29244,3812, 3610,29558,3198, 3948,29813,2487, 4197,30001,1701,
 
1057
  4349,30116,862, 4401,30155,-176, 1490,29467,4537, 1490,29467,4537,
 
1058
  4401,30155,-176, 4349,30116,862, 4197,30001,1701, 3948,29813,2487,
 
1059
  3610,29558,3198, 3193,29244,3812, 2711,28880,4310, 1608,28047,4901,
 
1060
  1608,28047,-4906,
 
1061
 
 
1062
  TRIANGLES, 8,127,9, 7,128,154, 2,98,3, 121,96,10, 121,10,9, 121,138,96,
 
1063
  122,27,26, 27,126,28, 66,135,65, 162,42,43, 165,164,141, 80,140,95,
 
1064
  103,151,150, 102,125,152, 101,155,128, 100,157,156, 124,137,122,
 
1065
  33,105,34, 29,153,125, 26,124,122,
 
1066
 
 
1067
  QUADS, 22,118,87,23, 21,117,118,22, 20,116,117,21, 19,115,116,20,
 
1068
  18,114,115,19, 17,113,114,18, 16,123,113,17, 15,111,123,16, 14,112,111,15,
 
1069
  13,109,112,14, 12,110,109,13, 11,108,110,12, 7,154,127,8, 110,108,47,48,
 
1070
  135,136,64,65, 136,137,63,64, 138,139,44,45, 139,162,43,44, 109,110,48,49,
 
1071
  147,161,107,106, 166,165,141,142, 167,166,142,143, 168,167,143,144,
 
1072
  169,168,144,145, 112,109,49,50, 170,169,145,146, 171,81,84,172,
 
1073
  111,112,50,51, 72,88,133,134, 73,89,88,72, 74,163,89,73, 75,90,163,74,
 
1074
  76,91,90,75, 77,92,91,76, 78,93,92,77, 79,94,93,78, 80,95,94,79,
 
1075
  81,170,146,84, 82,171,172,83, 86,82,83,85, 130,129,131,132, 123,111,51,52,
 
1076
  113,123,52,53, 114,113,53,54, 115,114,54,55, 116,115,55,56, 117,116,56,57,
 
1077
  118,117,57,58, 87,118,58,59, 120,87,59,60, 119,120,60,61, 107,161,160,97,
 
1078
  106,107,0,35, 105,148,147,106, 105,106,35,34, 104,149,148,105,
 
1079
  104,105,33,32, 103,150,149,104, 103,104,32,31, 102,152,151,103,
 
1080
  102,103,31,30, 101,128,7,6, 100,101,6,5, 100,156,155,101, 99,100,5,4,
 
1081
  99,158,157,100, 98,99,4,3, 98,159,158,99, 97,98,2,1, 97,160,159,98,
 
1082
  96,108,11,10, 96,138,45,46, 124,119,61,62, 47,108,96,46, 63,137,124,62,
 
1083
  0,107,97,1, 29,125,102,30, 28,126,153,29, 25,119,124,26, 24,120,119,25,
 
1084
  23,87,120,24,
 
1085
 
 
1086
  /* Everything above the slit */
 
1087
  SPIN,18,
 
1088
  8870,0,8870,731,SEAM,8519,1091,8811,1438,8811,1886,8626,2292,
 
1089
  STEPDOWN,6989,2980,5927,4133,5548,5735,
 
1090
  STEPUP,5388,7642,5228,7807,STEPDOWN,4427,8149,4057,8434,
 
1091
  3493,9185,2816,13524,SEAM,2690,18532,5301,18690,
 
1092
  STEPUP,6810,19005,6861,19277,6804,19625,STEPDOWN,6502,19845,
 
1093
  SEAM,4305,20394,STEPUP,4796,20522,4924,20759,4778,20979,
 
1094
  STEPDOWN,SEAM,3727,21207,SEAM,3726,22181,STEPUP,SEAM,4546,22705,
 
1095
  SEAM,3846,23385,4718,24227,5226,25516,STEPUP,BACKREF,0,
 
1096
 
 
1097
  /* Everything below the slit */
 
1098
  SPIN,36,
 
1099
  BACKREF,1,STEPDOWN,3548,31590,STEPDOWN,2724,32633,SEAM,1581,33500,
 
1100
  2013,33901,STEPUP,2281,34500,2281,34936,STEPDOWN,1947,35372,
 
1101
  STEPDOWN,1233,35734,STEPDOWN,0,35891,
 
1102
 
 
1103
  ENDOFDATA
 
1104
};
 
1105
 
 
1106
unsigned short king_data[] = {
 
1107
  SPIN,20,
 
1108
  11378,0,11378,856,SEAM,10928,1152,
 
1109
  11302,1684,11302,2209,11065,2684,
 
1110
  STEPDOWN,8964,3490,7603,4841,7116,6717,
 
1111
  STEPUP,6911,8950,6705,9144,STEPDOWN,5678,9545,5204,9878,
 
1112
  4481,10758,3696,14808,SEAM,3065,26979,
 
1113
  5813,27155,STEPUP,7145,27507,7424,27812,7352,28288,7131,28533,
 
1114
  5477,28882,5397,29010,5406,29363,4903,29934,
 
1115
  STEPDOWN,SEAM,3944,30227,
 
1116
  SEAM,3974,31478,4703,31849,STEPUP,4832,32092,4756,32370,
 
1117
  SEAM,3975,32620,6899,39055,6877,39351,2833,39514,
 
1118
  2786,39612,2786,39807,2734,39856,STEPDOWN,STEPDOWN,2590,39905,0,39969,
 
1119
  /* The cross */
 
1120
  SETBACKREF,0,
 
1121
  QUADSTRIP,-1613,39866,0,-1543,39866,702,-1651,40481,0,-1580,40590,702,
 
1122
  -1531,40917,0,-1465,41008,702,
 
1123
  QUADSTRIP,-1531,40917,0,-1465,41008,702,-2956,41104,0,-2829,41187,702,
 
1124
  -3075,41520,0,-2943,41585,702,-3075,43849,0,-2943,43805,702,
 
1125
  -2862,44347,0,-2739,44282,702,-1116,44636,0,-1068,44554,702,
 
1126
  QUADSTRIP,-1116,44636,0,-1068,44554,702,-1102,45692,0,-1054,45576,702,
 
1127
  -973,45829,0,-973,45747,702,973,45829,0,973,45747,702,1102,45692,0,
 
1128
  1054,45576,702,1116,44636,0,1068,44554,702,
 
1129
  QUADSTRIP,1116,44636,0,1068,44554,702,2862,44347,0,2739,44282,702,
 
1130
  3075,43849,0,2943,43805,702,3075,41520,0,2943,41585,702,2956,41104,0,
 
1131
  2829,41187,702,1531,40917,0,1465,41008,702,
 
1132
  QUADSTRIP,1531,40917,0,1465,41008,702,1651,40481,0,1580,40590,702,
 
1133
  1613,39866,0,1543,39866,702,
 
1134
  QUADSTRIP,-1543,39866,702,1543,39866,702,-1580,40590,702,
 
1135
  1580,40590,702,-1465,41008,702,1465,41008,702,-2829,41187,702,
 
1136
  2829,41187,702,-2943,41585,702,2943,41585,702,-2943,43805,702,
 
1137
  2943,43805,702,-2739,44282,702,2739,44282,702,-1068,44554,702,
 
1138
  1068,44554,702,-1054,45576,702,1054,45576,702,-973,45747,702,
 
1139
  973,45747,702,
 
1140
  QUADSTRIP,-1543,39866,-702,BACKREF,0,0,-1580,40590,-702,BACKREF,0,2,
 
1141
  -1465,41008,-702,BACKREF,0,4,
 
1142
  QUADSTRIP,-1465,41008,-702,BACKREF,0,6,-2829,41187,-702,BACKREF,0,8,
 
1143
  -2943,41585,-702,BACKREF,0,10,-2943,43805,-702,BACKREF,0,12,
 
1144
  -2739,44282,-702,BACKREF,0,14,-1068,44554,-702,BACKREF,0,16,
 
1145
  QUADSTRIP,-1068,44554,-702,BACKREF,0,18,-1054,45576,-702,
 
1146
  BACKREF,0,20,-973,45747,-702,BACKREF,0,22,973,45747,-702,BACKREF,0,24,
 
1147
  1054,45576,-702,BACKREF,0,26,1068,44554,-702,BACKREF,0,28,
 
1148
  QUADSTRIP,1068,44554,-702,BACKREF,0,30,2739,44282,-702,
 
1149
  BACKREF,0,32,2943,43805,-702,BACKREF,0,34,2943,41585,-702,BACKREF,0,36,
 
1150
  2829,41187,-702,BACKREF,0,38,1465,41008,-702,BACKREF,0,40,
 
1151
  QUADSTRIP,1465,41008,-702,BACKREF,0,42,1580,40590,-702,
 
1152
  BACKREF,0,44,1543,39866,-702,BACKREF,0,46,
 
1153
  QUADSTRIP,1543,39866,-702,-1543,39866,-702,1580,40590,-702,
 
1154
  -1580,40590,-702,1465,41008,-702,-1465,41008,-702,2829,41187,-702,
 
1155
  -2829,41187,-702,2943,41585,-702,-2943,41585,-702,2943,43805,-702,
 
1156
  -2943,43805,-702,2739,44282,-702,-2739,44282,-702,1068,44554,-702,
 
1157
  -1068,44554,-702,1054,45576,-702,-1054,45576,-702,973,45747,-702,
 
1158
  -973,45747,-702,
 
1159
  ENDOFDATA
 
1160
};
 
1161
 
 
1162
unsigned short queen_data[] = {
 
1163
  SPIN,24,
 
1164
  11092,0,11092,914,SEAM,10653,1284,
 
1165
  11018,1798,11018,2358,10787,2866,
 
1166
  STEPDOWN,8739,3726,7412,5168,6937,7171,
 
1167
  STEPUP,6737,9556,6537,9762,STEPDOWN,5536,10191,5073,10546,
 
1168
  4368,11485,3678,15137,SEAM,3259,26879,
 
1169
  5966,27091,STEPUP,7332,27515,7619,27882,7545,28455,7317,28751,
 
1170
  5654,29177,5538,29326,5542,29982,5377,30278,
 
1171
  STEPDOWN,SEAM,4194,30585,
 
1172
  SEAM,4226,31822,5002,32218,STEPUP,5139,32477,5058,32774,
 
1173
  SEAM,4227,33040,STEPDOWN,4421,34778,5042,36612,5874,38429,
 
1174
  STEPUP,SEAM,PATTERN,3,6018,39660,6018,39660,6804,39977,
 
1175
  SEAM,PATTERN,3,5015,41139,5015,41139,5673,41460,
 
1176
  SEAM,4349,40044,
 
1177
  STEPDOWN,SEAM,1381,41188,
 
1178
  1396,42332,STEPDOWN,1082,43072,481,43476,0,43543,
 
1179
  ENDOFDATA
 
1180
};
 
1181
 
 
1182
unsigned short pawn_data[] = {
 
1183
  SPIN,16,
 
1184
  7395,0,7395,609,
 
1185
  SEAM,7102,910,7345,1199,7345,1572,7191,1910,
 
1186
  STEPDOWN,5826,2484,4941,3446,4625,4781,
 
1187
  STEPUP,4492,6371,4358,6508,
 
1188
  STEPDOWN,3691,6794,2912,7657,2473,10091,
 
1189
  SEAM,2100,15344,
 
1190
  STEPUP,4518,15697,4695,15900,4649,16218,4509,16382,
 
1191
  STEPDOWN,SEAM,3150,16755,STEPUP,3858,17678,4303,18752,4455,19905,
 
1192
  4303,21058,3858,22132,
 
1193
  STEPDOWN,3150,23055,2227,23763,STEPDOWN,1153,24208,0,24360,
 
1194
  ENDOFDATA
 
1195
};
 
1196
 
 
1197
unsigned short rook_data[] = {
 
1198
  SPIN,20,
 
1199
  9374,0,9374,756,SEAM,9003,1062,9311,1487,
 
1200
  9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595,
 
1201
  6167,7812,6138,8066,5926,8460,5216,12608,
 
1202
  SEAM,4883,21434,
 
1203
  SEAM,5140,21608,
 
1204
  SEAM,5176,22792,
 
1205
  SEAM,5953,23030,
 
1206
/* SEAM,PATTERN,5,6103,26819,6143,27971,6143,27971,6143,27971,6103,26819, */
 
1207
/* SEAM,PATTERN,5, 5020,26819,5053,27971,5053,27971,5053,27971, 5020,26819, */
 
1208
  SETBACKREF,0,
 
1209
  6103,26819,
 
1210
 
 
1211
  SETBACKREF,1,
 
1212
  SPIN,20,
 
1213
  5020,26819,5020,26114,4906,25858,0,25666,
 
1214
 
 
1215
  POLARQUADSTRIP,20,BACKREF,0,1,1,6143,27971,BACKREF,0,2,2,6143,27971,
 
1216
  BACKREF,0,3,3,6143,27971,BACKREF,0,4,4,6143,27971,
 
1217
  POLARQUADSTRIP,20,BACKREF,0,6,6,6143,27971,BACKREF,0,7,7,6143,27971,
 
1218
  BACKREF,0,8,8,6143,27971,BACKREF,0,9,9,6143,27971,
 
1219
  POLARQUADSTRIP,20,BACKREF,0,11,11,6143,27971,BACKREF,0,12,12,6143,27971,
 
1220
  BACKREF,0,13,13,6143,27971,BACKREF,0,14,14,6143,27971,
 
1221
  POLARQUADSTRIP,20,BACKREF,0,16,16,6143,27971,BACKREF,0,17,17,6143,27971,
 
1222
  BACKREF,0,18,18,6143,27971,BACKREF,0,19,19,6143,27971,
 
1223
 
 
1224
  POLARQUADSTRIP,20,1,5053,27971,BACKREF,1,1,2,5053,27971,BACKREF,1,2,
 
1225
  3,5053,27971,BACKREF,1,3,4,5053,27971,BACKREF,1,4,
 
1226
  POLARQUADSTRIP,20,6,5053,27971,BACKREF,1,6,7,5053,27971,BACKREF,1,7,
 
1227
  8,5053,27971,BACKREF,1,8,9,5053,27971,BACKREF,1,9,
 
1228
  POLARQUADSTRIP,20,11,5053,27971,BACKREF,1,11,12,5053,27971,BACKREF,1,12,
 
1229
  13,5053,27971,BACKREF,1,13,14,5053,27971,BACKREF,1,14,
 
1230
  POLARQUADSTRIP,20,16,5053,27971,BACKREF,1,16,17,5053,27971,BACKREF,1,17,
 
1231
  18,5053,27971,BACKREF,1,18,19,5053,27971,BACKREF,1,19,
 
1232
 
 
1233
  POLARQUADSTRIP,20,1,5020,26819,1,6103,26819,
 
1234
  0,5020,26819,0,6103,26819,19,5020,26819,19,6103,26819,
 
1235
  POLARQUADSTRIP,20,6,5020,26819,6,6103,26819,
 
1236
  5,5020,26819,5,6103,26819,4,5020,26819,4,6103,26819,
 
1237
  POLARQUADSTRIP,20,11,5020,26819,11,6103,26819,
 
1238
  10,5020,26819,10,6103,26819,9,5020,26819,9,6103,26819,
 
1239
  POLARQUADSTRIP,20,16,5020,26819,16,6103,26819,
 
1240
  15,5020,26819,15,6103,26819,14,5020,26819,14,6103,26819,
 
1241
 
 
1242
  POLARQUADSTRIP,20,1,5053,27971,1,6143,27971,1,5020,26819,1,6103,26819,
 
1243
  POLARQUADSTRIP,20,4,5020,26819,4,6103,26819,4,5053,27971,4,6143,27971,
 
1244
  POLARQUADSTRIP,20,6,5053,27971,6,6143,27971,6,5020,26819,6,6103,26819,
 
1245
  POLARQUADSTRIP,20,9,5020,26819,9,6103,26819,9,5053,27971,9,6143,27971,
 
1246
  POLARQUADSTRIP,20,11,5053,27971,11,6143,27971,11,5020,26819,11,6103,26819,
 
1247
  POLARQUADSTRIP,20,14,5020,26819,14,6103,26819,14,5053,27971,14,6143,27971,
 
1248
  POLARQUADSTRIP,20,16,5053,27971,16,6143,27971,16,5020,26819,16,6103,26819,
 
1249
  POLARQUADSTRIP,20,19,5020,26819,19,6103,26819,19,5053,27971,19,6143,27971,
 
1250
 
 
1251
  POLARQUADSTRIP,20,1,6143,27971,1,5053,27971,2,6143,27971,2,5053,27971,
 
1252
  3,6143,27971,3,5053,27971,4,6143,27971,4,5053,27971,
 
1253
  POLARQUADSTRIP,20,6,6143,27971,6,5053,27971,7,6143,27971,7,5053,27971,
 
1254
  8,6143,27971,8,5053,27971,9,6143,27971,9,5053,27971,
 
1255
  POLARQUADSTRIP,20,11,6143,27971,11,5053,27971,12,6143,27971,12,5053,27971,
 
1256
  13,6143,27971,13,5053,27971,14,6143,27971,14,5053,27971,
 
1257
  POLARQUADSTRIP,20,16,6143,27971,16,5053,27971,17,6143,27971,17,5053,27971,
 
1258
  18,6143,27971,18,5053,27971,19,6143,27971,19,5053,27971,
 
1259
 
 
1260
  ENDOFDATA
 
1261
};
 
1262
 
 
1263
static double piece_size;
 
1264
 
 
1265
static int enumerate_ring_vertices( int steps, unsigned short *data, void *h,
 
1266
  void (*process_vertex)(void *h,double x,double y,double z))
 
1267
{
 
1268
  int patlen = 1,i;
 
1269
  unsigned short *pts = data;
 
1270
  double dtheta = M_PI * 2 / steps;
 
1271
 
 
1272
  if( data[0] == PATTERN) {
 
1273
        patlen = data[1];
 
1274
        pts += 2;
 
1275
  }
 
1276
 
 
1277
  if( pts[0] == 0) steps = 1;
 
1278
 
 
1279
  for( i=0; i < steps; i++) {
 
1280
        double r = pts[(i % patlen)*2] * piece_size;
 
1281
        double y = pts[(i % patlen)*2+1] * piece_size;
 
1282
        double theta = dtheta * i;
 
1283
 
 
1284
        process_vertex( h, r * cos(theta), y, r * sin(theta));
 
1285
  }
 
1286
 
 
1287
  return pts + patlen * 2 - data;
 
1288
}
 
1289
 
 
1290
static void enumerate_vertices( unsigned short *data, void *h,
 
1291
  void (*process_vertex)(void *h,double x,double y,double z))
 
1292
{
 
1293
  while(1) {
 
1294
        if( data[0] == SPIN) {
 
1295
          int steps;
 
1296
          steps = data[1];
 
1297
          data += 2;
 
1298
 
 
1299
          while(data[0] <= SEAM) {
 
1300
                if( data[0] == SETBACKREF || data[0] == BACKREF) {
 
1301
                  data += 2;
 
1302
                  continue;
 
1303
                } else if( data[0] == STEPUP) {
 
1304
                  steps *= 2;
 
1305
                  data++;
 
1306
                  continue;
 
1307
                } else if( data[0] == STEPDOWN) {
 
1308
                  steps /= 2;
 
1309
                  data++;
 
1310
                  continue;
 
1311
                } else if( data[0] == SEAM) {
 
1312
                  data ++;
 
1313
                  /* Visit seam vertices twice */
 
1314
                  enumerate_ring_vertices( steps, data,
 
1315
                        h, process_vertex);
 
1316
                  data += enumerate_ring_vertices( steps, data,
 
1317
                        h, process_vertex);
 
1318
                } else {
 
1319
                  data += enumerate_ring_vertices( steps, data,
 
1320
                        h, process_vertex);
 
1321
                }
 
1322
          }
 
1323
        } else if( data[0] == POLARQUADSTRIP) {
 
1324
          int steps = data[1];
 
1325
          double dtheta;
 
1326
          data += 2;
 
1327
 
 
1328
          dtheta = M_PI * 2 / steps;
 
1329
 
 
1330
          while(data[0] <= SEAM) {
 
1331
                if( data[0] != BACKREF) {
 
1332
                  double theta = dtheta * data[0];
 
1333
                  double r = data[1] * piece_size;
 
1334
                  double y = data[2] * piece_size;
 
1335
                  process_vertex( h, r * cos(theta), y, r * sin(theta));
 
1336
                }
 
1337
                data += 3;
 
1338
          }
 
1339
        } else if( data[0] == QUADSTRIP || data[0] == VERTICES) {
 
1340
          data ++;
 
1341
 
 
1342
          while(data[0] <= SEAM) {
 
1343
                if( data[0] == SETBACKREF) {
 
1344
                  data += 2;
 
1345
                  continue;
 
1346
                }
 
1347
 
 
1348
                if( data[0] != BACKREF) {
 
1349
                  double x = (signed short)data[0] * piece_size;
 
1350
                  double y = data[1] * piece_size;
 
1351
                  double z = (signed short)data[2] * piece_size;
 
1352
                  process_vertex( h, x, y, z);
 
1353
                }
 
1354
                data += 3;
 
1355
          }
 
1356
        } else if( data[0] == QUADS || data[0] == TRIANGLES) {
 
1357
          data ++;
 
1358
          while( data[0] <= SEAM) data++;
 
1359
        } else {
 
1360
          break;
 
1361
        }
 
1362
  }
 
1363
}
 
1364
 
 
1365
static void enumerate_ring_faces( int basevertex, int steps,
 
1366
  int prevbase, int prevsteps, void *h, int *count_ret,
 
1367
  void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 
1368
{
 
1369
  int i,j;
 
1370
 
 
1371
  if( steps == 1) {
 
1372
        for( i=0; i < prevsteps; i++) {
 
1373
          process_face( h,
 
1374
                basevertex,
 
1375
                prevbase + i,
 
1376
                prevbase + (i ? i-1 : prevsteps-1),
 
1377
                -1);
 
1378
          if (count_ret) (*count_ret)++;
 
1379
        }
 
1380
  } else if( steps == prevsteps) {
 
1381
        for( i=0; i < steps; i++) {
 
1382
          process_face( h,
 
1383
                basevertex + i,
 
1384
                prevbase + i,
 
1385
                prevbase + (i ? i-1 : steps-1),
 
1386
                basevertex + (i ? i-1 : steps-1));
 
1387
          if (count_ret) (*count_ret)++;
 
1388
        }
 
1389
  } else {
 
1390
        j = 0;
 
1391
        for( i=0;; i++) {
 
1392
          while( j < prevsteps && steps*(1+2*j) < prevsteps*(1+2*i)) {
 
1393
                process_face( h,
 
1394
                  basevertex + (i%steps),
 
1395
                  prevbase + ((j+1)%prevsteps),
 
1396
                  prevbase + j,
 
1397
                  -1);
 
1398
                if (count_ret) (*count_ret)++;
 
1399
                j++;
 
1400
          }
 
1401
          if( i == steps) break;
 
1402
          process_face( h,
 
1403
                basevertex + i,
 
1404
                basevertex + ((i+1)%steps),
 
1405
                prevbase + (j%prevsteps),
 
1406
                -1);
 
1407
          if (count_ret) (*count_ret)++;
 
1408
        }
 
1409
  }
 
1410
}
 
1411
 
 
1412
static void enumerate_faces( unsigned short *data, void *h, int *count_ret,
 
1413
  void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 
1414
{
 
1415
  int basevertex = 0, startofvertices = 0;
 
1416
  int backrefs[5];
 
1417
 
 
1418
  while(1) {
 
1419
        if( data[0] == SPIN) {
 
1420
          int steps;
 
1421
          int prevsteps = -1,prevbase = 0;
 
1422
 
 
1423
          steps = data[1];
 
1424
          data += 2;
 
1425
 
 
1426
          while( data[0] <= SEAM) {
 
1427
                if( data[0] == SETBACKREF) {
 
1428
                  backrefs[data[1]] = basevertex;
 
1429
                  data += 2;
 
1430
                  continue;
 
1431
                }
 
1432
 
 
1433
                if( data[0] == STEPUP) {
 
1434
                  steps *= 2;
 
1435
                  data++;
 
1436
                  continue;
 
1437
                } else if( data[0] == STEPDOWN) {
 
1438
                  steps /= 2;
 
1439
                  data++;
 
1440
                  continue;
 
1441
                }
 
1442
 
 
1443
                if( data[0] == BACKREF) {
 
1444
                  if( prevsteps != -1) {
 
1445
                        enumerate_ring_faces( backrefs[data[1]], steps,
 
1446
                                              prevbase, prevsteps, h, 
 
1447
                                              count_ret, process_face);
 
1448
                  }
 
1449
 
 
1450
                  prevbase = backrefs[data[1]];
 
1451
                  data += 2;
 
1452
                } else {
 
1453
                  int isseam = 0;
 
1454
                  if( data[0] == SEAM) {
 
1455
                        isseam = 1;
 
1456
                        data++;
 
1457
                  }
 
1458
 
 
1459
                  if( data[0] == PATTERN) {
 
1460
                        data += 2 + data[1]*2;
 
1461
                  } else {
 
1462
                        if( data[0] == 0) steps = 1;
 
1463
                        data += 2;
 
1464
                  }
 
1465
 
 
1466
                  if( prevsteps != -1) {
 
1467
                        enumerate_ring_faces( basevertex, steps,
 
1468
                                              prevbase, prevsteps, h, 
 
1469
                                              count_ret, process_face);
 
1470
                  }
 
1471
 
 
1472
                  if( isseam) basevertex += steps;
 
1473
                  prevbase = basevertex;
 
1474
                  basevertex += steps;
 
1475
                }
 
1476
 
 
1477
                prevsteps = steps;
 
1478
          }
 
1479
        } else if( data[0] == POLARQUADSTRIP || data[0] == QUADSTRIP) {
 
1480
          int v0=-1,v1=0,v2,v3;
 
1481
          if( data[0] == POLARQUADSTRIP) data += 2;
 
1482
          else data ++;
 
1483
          while(data[0] <= SEAM) {
 
1484
                if( data[0] == BACKREF) {
 
1485
                  v2 = backrefs[data[1]]+data[2];
 
1486
                } else {
 
1487
                  v2 = basevertex;
 
1488
                  basevertex++;
 
1489
                }
 
1490
                if( data[3] == BACKREF) {
 
1491
                  v3 = backrefs[data[4]]+data[5];
 
1492
                } else {
 
1493
                  v3 = basevertex;
 
1494
                  basevertex++;
 
1495
                }
 
1496
                data += 6;
 
1497
                if( v0 != -1) {
 
1498
                  process_face( h, v0, v1, v3, v2);
 
1499
                  if (count_ret) (*count_ret)++;
 
1500
                }
 
1501
                v0 = v2;
 
1502
                v1 = v3;
 
1503
          }
 
1504
        } else if( data[0] == VERTICES) {
 
1505
          data ++;
 
1506
          startofvertices = basevertex;
 
1507
          while( data[0] <= SEAM) {
 
1508
                if( data[0] == SETBACKREF) {
 
1509
                  backrefs[data[1]] = basevertex;
 
1510
                  data += 2;
 
1511
                  continue;
 
1512
                }
 
1513
                data += 3;
 
1514
                basevertex ++;
 
1515
          }
 
1516
        } else if( data[0] == QUADS) {
 
1517
          data ++;
 
1518
          while( data[0] <= SEAM) {
 
1519
                process_face( h,
 
1520
                  data[0] + startofvertices,
 
1521
                  data[1] + startofvertices,
 
1522
                  data[2] + startofvertices,
 
1523
                  data[3] + startofvertices);
 
1524
                if (count_ret) (*count_ret)++;
 
1525
                data += 4;
 
1526
          }
 
1527
        } else if( data[0] == TRIANGLES) {
 
1528
          data ++;
 
1529
          while( data[0] <= SEAM) {
 
1530
                process_face( h,
 
1531
                  data[0] + startofvertices,
 
1532
                  data[1] + startofvertices,
 
1533
                  data[2] + startofvertices, -1);
 
1534
                if (count_ret) (*count_ret)++;
 
1535
                data += 3;
 
1536
          }
 
1537
        } else {
 
1538
          break;
 
1539
        }
 
1540
  }
 
1541
}
 
1542
 
 
1543
static void normalize( float v[3]) {
 
1544
  float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
 
1545
 
 
1546
  if( d == 0.0) {
 
1547
        /* The direction is undefined - normalize it anyway */
 
1548
        v[0] = 1.0;
 
1549
        v[1] = 0.0;
 
1550
        v[2] = 0.0;
 
1551
        return;
 
1552
  }
 
1553
 
 
1554
  v[0] /= d;
 
1555
  v[1] /= d;
 
1556
  v[2] /= d;
 
1557
}
 
1558
 
 
1559
static void normcrossprod( float v1[3], float v2[3], float out[3])
 
1560
{
 
1561
  out[0] = v1[1] * v2[2] - v1[2] * v2[1];
 
1562
  out[1] = v1[2] * v2[0] - v1[0] * v2[2];
 
1563
  out[2] = v1[0] * v2[1] - v1[1] * v2[0];
 
1564
  normalize( out);
 
1565
}
 
1566
 
 
1567
#define vectordiff(v1,v2,out) \
 
1568
        ((out)[0] = (v1)[0] - (v2)[0], \
 
1569
        (out)[1] = (v1)[1] - (v2)[1], \
 
1570
        (out)[2] = (v1)[2] - (v2)[2])
 
1571
 
 
1572
#define vectoradd(v1,v2) \
 
1573
        ((v1)[0] += (v2)[0], \
 
1574
         (v1)[1] += (v2)[1], \
 
1575
         (v1)[2] += (v2)[2])
 
1576
 
 
1577
int numverts;
 
1578
float *vertices;
 
1579
float *normals;
 
1580
 
 
1581
static void count_vertex( void *dummy, double x, double y, double z)
 
1582
{
 
1583
  numverts++;
 
1584
}
 
1585
 
 
1586
static void add_normal( void *dummy, int v1, int v2, int v3, int v4)
 
1587
{
 
1588
  float surfnormal[3],d1[3],d2[3];
 
1589
 
 
1590
  if( v4 == -1) {
 
1591
        vectordiff( vertices + 3 * v2, vertices + 3 * v1, d1);
 
1592
        vectordiff( vertices + 3 * v3, vertices + 3 * v1, d2);
 
1593
        normcrossprod( d1, d2, surfnormal);
 
1594
        vectoradd( normals + 3 * v1, surfnormal);
 
1595
        vectoradd( normals + 3 * v2, surfnormal);
 
1596
        vectoradd( normals + 3 * v3, surfnormal);
 
1597
  } else {
 
1598
        vectordiff( vertices + 3 * v2, vertices + 3 * v1, d1);
 
1599
        vectordiff( vertices + 3 * v4, vertices + 3 * v1, d2);
 
1600
        normcrossprod( d1, d2, surfnormal);
 
1601
        vectoradd( normals + 3 * v1, surfnormal);
 
1602
        vectordiff( vertices + 3 * v3, vertices + 3 * v2, d1);
 
1603
        vectordiff( vertices + 3 * v1, vertices + 3 * v2, d2);
 
1604
        normcrossprod( d1, d2, surfnormal);
 
1605
        vectoradd( normals + 3 * v2, surfnormal);
 
1606
        vectordiff( vertices + 3 * v4, vertices + 3 * v3, d1);
 
1607
        vectordiff( vertices + 3 * v2, vertices + 3 * v3, d2);
 
1608
        normcrossprod( d1, d2, surfnormal);
 
1609
        vectoradd( normals + 3 * v3, surfnormal);
 
1610
        vectordiff( vertices + 3 * v1, vertices + 3 * v4, d1);
 
1611
        vectordiff( vertices + 3 * v3, vertices + 3 * v4, d2);
 
1612
        normcrossprod( d1, d2, surfnormal);
 
1613
        vectoradd( normals + 3 * v4, surfnormal);
 
1614
  }
 
1615
}
 
1616
 
 
1617
static void collect_vertex( void *curvert, double x, double y, double z)
 
1618
{
 
1619
  (*(float**)curvert)[0] = x;
 
1620
  (*(float**)curvert)[1] = y;
 
1621
  (*(float**)curvert)[2] = z;
 
1622
  (*(float**)curvert) += 3;
 
1623
}
 
1624
 
 
1625
static void draw_face( void *dummy, int v1, int v2, int v3, int v4)
 
1626
{
 
1627
  glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS);
 
1628
  glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]);
 
1629
  glVertex3f( vertices[v1*3], vertices[v1*3+1], vertices[v1*3+2]);
 
1630
  glNormal3f( normals[v2*3], normals[v2*3+1], normals[v2*3+2]);
 
1631
  glVertex3f( vertices[v2*3], vertices[v2*3+1], vertices[v2*3+2]);
 
1632
  glNormal3f( normals[v3*3], normals[v3*3+1], normals[v3*3+2]);
 
1633
  glVertex3f( vertices[v3*3], vertices[v3*3+1], vertices[v3*3+2]);
 
1634
  if( v4 != -1) {
 
1635
        glNormal3f( normals[v4*3], normals[v4*3+1], normals[v4*3+2]);
 
1636
        glVertex3f( vertices[v4*3], vertices[v4*3+1], vertices[v4*3+2]);
 
1637
  }
 
1638
  glEnd();
 
1639
}
 
1640
 
 
1641
static int draw_piece( unsigned short *piece_data)
 
1642
{
 
1643
  int i;
 
1644
  float *curvert;
 
1645
  int count = 0;
 
1646
 
 
1647
  /* Count how many vertices this piece has */
 
1648
  enumerate_vertices( piece_data, NULL, count_vertex);
 
1649
 
 
1650
  /* Allocate memory for the vertices and for the vertex normals */
 
1651
  vertices = malloc( sizeof(float) * 3 * numverts);
 
1652
  normals = malloc( sizeof(float) * 3 * numverts);
 
1653
  if( !vertices || !normals) exit(1);
 
1654
 
 
1655
  /* Collect the vertex coordinates */
 
1656
  curvert = vertices;
 
1657
  enumerate_vertices( piece_data, &curvert, collect_vertex);
 
1658
 
 
1659
  /* Zero out the normals */
 
1660
  for( i=0; i < numverts * 3; i++) {
 
1661
        normals[i] = 0.0;
 
1662
  }
 
1663
 
 
1664
  /* Add up all the face normals at each vertex */
 
1665
  enumerate_faces( piece_data, NULL, NULL, add_normal);
 
1666
 
 
1667
  /* Normalize the vertex normals */
 
1668
  for( i=0; i < numverts; i++) {
 
1669
        normalize( normals + i * 3);
 
1670
  }
 
1671
 
 
1672
  /* Now draw the faces */
 
1673
  enumerate_faces( piece_data, NULL, &count, draw_face);
 
1674
 
 
1675
  free( normals);
 
1676
  free( vertices);
 
1677
 
 
1678
  if (count <= 1) abort();
 
1679
  return count;
 
1680
}
 
1681
 
 
1682
void gen_model_lists( int classic, int poly_count[PIECES]) {
 
1683
  piece_size = classic ? 0.095 / 100 : 0.3 / 8192;
 
1684
 
135
1685
  glNewList(KING, GL_COMPILE);
136
 
  draw_king();
 
1686
  poly_count[KING] = draw_piece( classic ? classic_king_data : king_data);
137
1687
  glEndList();
138
 
  
 
1688
 
139
1689
  glNewList(QUEEN, GL_COMPILE);
140
 
  draw_queen();
 
1690
  poly_count[QUEEN] = draw_piece( classic ? classic_queen_data : queen_data);
141
1691
  glEndList();
142
1692
 
143
1693
  glNewList(BISHOP, GL_COMPILE);
144
 
  draw_bishop();
 
1694
  poly_count[BISHOP] = draw_piece( classic ? classic_bishop_data : bishop_data);
145
1695
  glEndList();
146
1696
 
147
1697
  glNewList(KNIGHT, GL_COMPILE);
148
 
  draw_knight();
 
1698
  poly_count[KNIGHT] = draw_piece( classic ? classic_knight_data : knight_data);
149
1699
  glEndList();
150
1700
 
151
1701
  glNewList(ROOK, GL_COMPILE);
152
 
  draw_rook();
 
1702
  poly_count[ROOK] = draw_piece( classic ? classic_rook_data : rook_data);
153
1703
  glEndList();
154
1704
 
155
1705
  glNewList(PAWN, GL_COMPILE);
156
 
  draw_pawn();
 
1706
  poly_count[PAWN] = draw_piece( classic ? classic_pawn_data : pawn_data);
157
1707
  glEndList();
158
1708
}
159
 
 
160
 
void draw_pawn(void) {
161
 
  double trace_r[] = 
162
 
    { 3.5, 3.5, 2.5, 2.5, 1.5, 1.0, 1.8, 1.0, 2.0, 1.0, 0.0, 0.0 };
163
 
  double trace_h[] =
164
 
    { 0.0, 2.0, 3.0, 4.0, 6.0, 8.8, 8.8, 9.2, 11.6, 13.4, 13.4, 0.0 };
165
 
  
166
 
  revolve_line(trace_r, trace_h, 0.0, ROT);
167
 
}
168
 
 
169
 
void draw_rook(void)
170
 
{
171
 
  double trace_r[] =
172
 
    { 3.8, 3.8, 2.6, 2.0, 2.8, 2.8, 2.2, 2.2, 0.0, 0.0 };
173
 
  double trace_h[] =
174
 
    { 0.0, 2.0, 5.0, 10.2, 10.2, 13.6, 13.6, 13.0, 13.0, 0.0 };
175
 
 
176
 
  revolve_line(trace_r, trace_h, 0.0, ROT);
177
 
}
178
 
 
179
 
void draw_knight(void)
180
 
{
181
 
  double trace_r[] = { 4.1, 4.1, 2.0, 2.0, 2.6, 0.0 };
182
 
  double trace_h[] = { 0.0, 2.0, 3.6, 4.8, 5.8, 0.0 };
183
 
 
184
 
  /* Revolved base */
185
 
  revolve_line(trace_r, trace_h, 17.8, ROT);
186
 
 
187
 
  /* Non revolved pieces */
188
 
  /* Quads */
189
 
  glBegin(GL_QUADS);
190
 
 
191
 
  /* Square base */
192
 
  glNormal3f(0.0, -1.0, 0.0);
193
 
  glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
194
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
195
 
  glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
196
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
197
 
  glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
198
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
199
 
  glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
200
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
201
 
 
202
 
  /* Upper edge of nose */
203
 
  glNormal3f(0.0, 0.707107, 0.707107);
204
 
  glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
205
 
  glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
206
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
207
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
208
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
209
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
210
 
  glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
211
 
  glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
212
 
 
213
 
  /* Above head */
214
 
  glNormal3f(0.0, 1.0, 0.0);
215
 
 
216
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
217
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
218
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
219
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
220
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
221
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
222
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
223
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
224
 
 
225
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
226
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
227
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
228
 
  glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
229
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
230
 
  glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
231
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
232
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
233
 
 
234
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
235
 
  glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
236
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
237
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
238
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
239
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
240
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
241
 
  glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
242
 
 
243
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
244
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
245
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
246
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
247
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
248
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
249
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
250
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
251
 
 
252
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
253
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
254
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
255
 
  glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
256
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
257
 
  glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
258
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
259
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
260
 
 
261
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
262
 
  glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
263
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
264
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
265
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
266
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
267
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
268
 
  glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
269
 
 
270
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
271
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
272
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
273
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
274
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
275
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
276
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
277
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
278
 
 
279
 
  /* Back of head */
280
 
  glNormal3f(0.0, 0.0, -1.0);
281
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
282
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
283
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
284
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
285
 
  glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
286
 
  glVertex3f(1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
287
 
  glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
288
 
  glVertex3f(-1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
289
 
 
290
 
  /* Under back */
291
 
  glNormal3f(0.0, 0.0, -1.0);
292
 
  glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
293
 
  glVertex3f(-1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
294
 
  glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
295
 
  glVertex3f(1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
296
 
  glTexCoord2f(0.0, 14.8 / 17.8 * piece_size);
297
 
  glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
298
 
  glTexCoord2f(0.0, 14.8 / 17.8 * piece_size);
299
 
  glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
300
 
 
301
 
  /* Right side of face */
302
 
  glNormal3f(-0.933878, 0.128964, -0.333528);
303
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
304
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
305
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
306
 
  glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
307
 
  glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
308
 
  glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
309
 
  glTexCoord2f(0.0, 13.8 / 17.8 * piece_size);
310
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
311
 
 
312
 
  glNormal3f(-0.966676, 0.150427, 0.207145);
313
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
314
 
  glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
315
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
316
 
  glVertex3f(-0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
317
 
  glTexCoord2f(0.0, 13.8 / 17.8 * piece_size);
318
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
319
 
  glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
320
 
  glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
321
 
 
322
 
  /* (above and below eye) */
323
 
  glNormal3f(-0.934057, 0.124541, -0.334704);
324
 
 
325
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
326
 
  glVertex3f(-0.82666667 * piece_size, 16.6 * piece_size,
327
 
             0.2 * piece_size);
328
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
329
 
  glVertex3f(-0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
330
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
331
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
332
 
  glTexCoord2f(0.0, 16.6 / 17.8 * piece_size);
333
 
  glVertex3f(-1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
334
 
 
335
 
  glTexCoord2f(0.0, 13.8 / 17.8 * piece_size);
336
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
337
 
  glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
338
 
  glVertex3f(-0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
339
 
  glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
340
 
  glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
341
 
  glTexCoord2f(0.0, 13.6 / 17.8 * piece_size);
342
 
  glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
343
 
 
344
 
  glTexCoord2f(0.0, 13.6 / 17.8 * piece_size);
345
 
  glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
346
 
  glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
347
 
  glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
348
 
  glTexCoord2f(0.0, 15.8 / 17.8 * piece_size);
349
 
  glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
350
 
  glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
351
 
  glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
352
 
 
353
 
  glNormal3f(-0.970801, -0.191698, -0.144213);
354
 
  glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
355
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
356
 
  glTexCoord2f(0.0, 14.8 / 17.8 * piece_size);
357
 
  glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
358
 
  glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
359
 
  glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
360
 
  glTexCoord2f(0.0, 15.8 / 17.8 * piece_size);
361
 
  glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
362
 
 
363
 
  glNormal3f(-0.975610, 0.219512, 0.0);
364
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
365
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
366
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
367
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
368
 
  glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
369
 
  glVertex3f(-1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
370
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
371
 
  glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
372
 
 
373
 
  /* Left side of face */
374
 
  glNormal3f(0.933878, 0.128964, -0.333528);
375
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
376
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
377
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
378
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
379
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
380
 
  glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
381
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
382
 
  glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
383
 
 
384
 
  glNormal3f(0.966676, 0.150427, 0.207145);
385
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
386
 
  glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
387
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
388
 
  glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
389
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
390
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
391
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
392
 
  glVertex3f(0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
393
 
 
394
 
  /* (above and below eye) */
395
 
  glNormal3f(0.934057, 0.124541, -0.334704);
396
 
 
397
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
398
 
  glVertex3f(0.82666667 * piece_size, 16.6 * piece_size, 0.2 * piece_size);
399
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
400
 
  glVertex3f(1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
401
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
402
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
403
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
404
 
  glVertex3f(0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
405
 
 
406
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
407
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
408
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
409
 
  glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
410
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
411
 
  glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
412
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
413
 
  glVertex3f(0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
414
 
 
415
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
416
 
  glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
417
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
418
 
  glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
419
 
  glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
420
 
  glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
421
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
422
 
  glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
423
 
 
424
 
  glNormal3f(0.970801, -0.191698, -0.144213);
425
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
426
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
427
 
  glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
428
 
  glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
429
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
430
 
  glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
431
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
432
 
  glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
433
 
 
434
 
  glNormal3f(0.975610, -0.219512, 0.0);
435
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
436
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
437
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
438
 
  glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
439
 
  glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
440
 
  glVertex3f(1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
441
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
442
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
443
 
 
444
 
  /* Eyes */
445
 
  glNormal3f(0.598246, 0.797665, 0.076372);
446
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
447
 
  glVertex3f(0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
448
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
449
 
  glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
450
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
451
 
  glVertex3f(0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
452
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
453
 
  glVertex3f(0.61333334 * piece_size, 16.4 * piece_size, 0.2 * piece_size);
454
 
 
455
 
  glNormal3f(0.670088, -0.714758, 0.200256);
456
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
457
 
  glVertex3f(0.61333334 * piece_size, 16.4 * piece_size, 0.2 * piece_size);
458
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
459
 
  glVertex3f(0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
460
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
461
 
  glVertex3f(1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
462
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
463
 
  glVertex3f(0.82666667 * piece_size, 16.6 * piece_size, 0.2 * piece_size);
464
 
 
465
 
  glNormal3f(-0.598246, 0.797665, 0.076372);
466
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
467
 
  glVertex3f(-0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
468
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
469
 
  glVertex3f(-0.61333334 * piece_size, 16.4 * piece_size,
470
 
             0.2 * piece_size);
471
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
472
 
  glVertex3f(-0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
473
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
474
 
  glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
475
 
 
476
 
  glNormal3f(-0.670088, -0.714758, 0.200256);
477
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
478
 
  glVertex3f(-0.61333334 * piece_size, 16.4 * piece_size,
479
 
             0.2 * piece_size);
480
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
481
 
  glVertex3f(-0.82666667 * piece_size, 16.6 * piece_size,
482
 
             0.2 * piece_size);
483
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
484
 
  glVertex3f(-1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
485
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
486
 
  glVertex3f(-0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
487
 
 
488
 
  /* Hair */
489
 
  glNormal3f(0.0, 1.0, 0.0);
490
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
491
 
  glVertex3f(0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
492
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
493
 
  glVertex3f(0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
494
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
495
 
  glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
496
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
497
 
  glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
498
 
 
499
 
  glNormal3f(1.0, 0.0, 0.0);
500
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
501
 
  glVertex3f(0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
502
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
503
 
  glVertex3f(0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
504
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
505
 
  glVertex3f(0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
506
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
507
 
  glVertex3f(0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
508
 
 
509
 
  glNormal3f(-1.0, 0.0, 0.0);
510
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
511
 
  glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
512
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
513
 
  glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
514
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
515
 
  glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
516
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
517
 
  glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
518
 
 
519
 
  glNormal3f(0.0, 0.0, 1.0);
520
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
521
 
  glVertex3f(0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
522
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
523
 
  glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
524
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
525
 
  glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
526
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
527
 
  glVertex3f(0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
528
 
 
529
 
  glNormal3f(0.0, 0.0, -1.0);
530
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
531
 
  glVertex3f(0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
532
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
533
 
  glVertex3f(0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
534
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
535
 
  glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
536
 
  glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
537
 
  glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
538
 
 
539
 
  /* Under chin */
540
 
  glNormal3f(0.0, -0.853282, 0.521450);
541
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
542
 
  glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
543
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
544
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
545
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
546
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
547
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
548
 
  glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
549
 
 
550
 
  glNormal3f(0.0, -0.983870, -0.178885);
551
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
552
 
  glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
553
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
554
 
  glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
555
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
556
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
557
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
558
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
559
 
 
560
 
  /* Mane */
561
 
 
562
 
  /* Right */
563
 
  glNormal3f(-0.788443, 0.043237, -0.613587);
564
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
565
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
566
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
567
 
  glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
568
 
  glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
569
 
  glVertex3f(0.0, 15.0 * piece_size, -3.6 * piece_size);
570
 
  glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
571
 
  glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
572
 
 
573
 
  /* Left */
574
 
  glNormal3f(0.788443, 0.043237, -0.613587);
575
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
576
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
577
 
  glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
578
 
  glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
579
 
  glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
580
 
  glVertex3f(0.0, 15.0 * piece_size, -3.6 * piece_size);
581
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
582
 
  glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
583
 
 
584
 
  /* Chest */
585
 
  /* Front */
586
 
  glNormal3f(0.0, 0.584305, 0.811534);
587
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
588
 
  glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
589
 
  glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
590
 
  glVertex3f(-2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
591
 
  glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
592
 
  glVertex3f(2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
593
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
594
 
  glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
595
 
 
596
 
  /* Bottom */
597
 
  glNormal3f(0.0, -0.422886, 0.906183);
598
 
  glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
599
 
  glVertex3f(-2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
600
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
601
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
602
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
603
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
604
 
  glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
605
 
  glVertex3f(2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
606
 
 
607
 
  /* Right */
608
 
  glNormal3f(-0.969286, 0.231975, -0.081681);
609
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
610
 
  glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
611
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
612
 
  glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
613
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
614
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
615
 
  glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
616
 
  glVertex3f(-2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
617
 
 
618
 
  glNormal3f(-0.982872, 0.184289, 0.0);
619
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
620
 
  glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
621
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
622
 
  glVertex3f(-1.1422222222 * piece_size, 12.2 * piece_size,
623
 
             -2.2222222222 * piece_size);
624
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
625
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
626
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
627
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
628
 
 
629
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
630
 
  glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
631
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
632
 
  glVertex3f(-1.1422222222 * piece_size, 12.2 * piece_size,
633
 
             -2.2222222222 * piece_size);
634
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
635
 
  glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
636
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
637
 
  glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
638
 
 
639
 
  /* Left */
640
 
  glNormal3f(0.969286, 0.231975, -0.081681);
641
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
642
 
  glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
643
 
  glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
644
 
  glVertex3f(2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
645
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
646
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
647
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
648
 
  glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
649
 
 
650
 
  glNormal3f(0.982872, 0.184289, 0.0);
651
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
652
 
  glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
653
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
654
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
655
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
656
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
657
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
658
 
  glVertex3f(1.1422222222 * piece_size, 12.2 * piece_size,
659
 
             -2.2222222222 * piece_size);
660
 
 
661
 
  glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
662
 
  glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
663
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
664
 
  glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
665
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
666
 
  glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
667
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
668
 
  glVertex3f(1.1422222222 * piece_size, 12.2 * piece_size,
669
 
             -2.2222222222 * piece_size);
670
 
  glEnd();
671
 
 
672
 
  /* Triangles */
673
 
  glBegin(GL_TRIANGLES);
674
 
 
675
 
  /* Under mane */
676
 
  glNormal3f(0.819890, -0.220459, -0.528373);
677
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
678
 
  glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
679
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
680
 
  glVertex3f(1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
681
 
  glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
682
 
  glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
683
 
 
684
 
  glNormal3f(0.0, -0.573462, -0.819232);
685
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
686
 
  glVertex3f(1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
687
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
688
 
  glVertex3f(-1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
689
 
  glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
690
 
  glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
691
 
 
692
 
  glNormal3f(-0.819890, -0.220459, -0.528373);
693
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
694
 
  glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
695
 
  glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
696
 
  glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
697
 
  glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
698
 
  glVertex3f(-1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
699
 
 
700
 
  /* Nose tip */
701
 
  glNormal3f(0.0, 0.0, 1.0);
702
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
703
 
  glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
704
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
705
 
  glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
706
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
707
 
  glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
708
 
 
709
 
  /* Mouth left */
710
 
  glNormal3f(-0.752714, -0.273714, 0.598750);
711
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
712
 
  glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
713
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
714
 
  glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
715
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
716
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
717
 
 
718
 
  glNormal3f(-0.957338, 0.031911, 0.287202);
719
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
720
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
721
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
722
 
  glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
723
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
724
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
725
 
 
726
 
  glNormal3f(-0.997785, 0.066519, 0.0);
727
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
728
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
729
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
730
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
731
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
732
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
733
 
 
734
 
  /* Mouth right */
735
 
  glNormal3f(0.752714, -0.273714, 0.598750);
736
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
737
 
  glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
738
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
739
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
740
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
741
 
  glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
742
 
 
743
 
  glNormal3f(0.957338, 0.031911, 0.287202);
744
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
745
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
746
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
747
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
748
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
749
 
  glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
750
 
 
751
 
  glNormal3f(0.997785, 0.066519, 0.0);
752
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
753
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
754
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
755
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
756
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
757
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
758
 
 
759
 
  /* Under nose */
760
 
  glNormal3f(0.0, -0.992278, 0.124035);
761
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
762
 
  glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
763
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
764
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
765
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
766
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
767
 
 
768
 
  /* Neck indents */
769
 
  glNormal3f(-0.854714, 0.484047, 0.187514);
770
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
771
 
  glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
772
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
773
 
  glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
774
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
775
 
  glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
776
 
 
777
 
  glNormal3f(-0.853747, 0.515805, -0.071146);
778
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
779
 
  glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
780
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
781
 
  glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
782
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
783
 
  glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
784
 
 
785
 
  glNormal3f(0.854714, 0.484047, 0.187514);
786
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
787
 
  glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
788
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
789
 
  glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
790
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
791
 
  glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
792
 
 
793
 
  glNormal3f(0.853747, 0.515805, -0.071146);
794
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
795
 
  glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
796
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
797
 
  glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
798
 
  glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
799
 
  glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
800
 
 
801
 
  /* Under chin */
802
 
  glNormal3f(0.252982, -0.948683, -0.189737);
803
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
804
 
  glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
805
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
806
 
  glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
807
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
808
 
  glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
809
 
 
810
 
  glNormal3f(0.257603, -0.966012, 0.021467);
811
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
812
 
  glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
813
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
814
 
  glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
815
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
816
 
  glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
817
 
 
818
 
  glNormal3f(0.126745, -0.887214, 0.443607);
819
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
820
 
  glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
821
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
822
 
  glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
823
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
824
 
  glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
825
 
 
826
 
  glNormal3f(-0.252982, -0.948683, -0.189737);
827
 
  glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
828
 
  glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
829
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
830
 
  glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
831
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
832
 
  glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
833
 
 
834
 
  glNormal3f(-0.257603, -0.966012, 0.021467);
835
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
836
 
  glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
837
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
838
 
  glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
839
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
840
 
  glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
841
 
 
842
 
  glNormal3f(-0.126745, -0.887214, 0.443607);
843
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
844
 
  glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
845
 
  glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
846
 
  glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
847
 
  glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
848
 
  glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
849
 
 
850
 
  /* Eyes */
851
 
  glNormal3f(0.0, 0.0, -1.0);
852
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
853
 
  glVertex3f(0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
854
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
855
 
  glVertex3f(0.61333334 * piece_size, 16.4 * piece_size, 0.2 * piece_size);
856
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
857
 
  glVertex3f(0.82666667 * piece_size, 16.6 * piece_size, 0.2 * piece_size);
858
 
 
859
 
  glNormal3f(0.000003, -0.668965, 0.743294);
860
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
861
 
  glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
862
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
863
 
  glVertex3f(1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
864
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
865
 
  glVertex3f(0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
866
 
 
867
 
  glNormal3f(0.0, 0.0, -1.0);
868
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
869
 
  glVertex3f(-0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
870
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
871
 
  glVertex3f(-0.82666667 * piece_size, 16.6 * piece_size,
872
 
             0.2 * piece_size);
873
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
874
 
  glVertex3f(-0.61333334 * piece_size, 16.4 * piece_size,
875
 
             0.2 * piece_size);
876
 
 
877
 
  glNormal3f(-0.000003, -0.668965, 0.743294);
878
 
  glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
879
 
  glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
880
 
  glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
881
 
  glVertex3f(-0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
882
 
  glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
883
 
  glVertex3f(-1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
884
 
 
885
 
  /* Behind eyes */
886
 
  /* Right */
887
 
  glNormal3f(-0.997484, 0.070735, 0.004796);
888
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
889
 
  glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
890
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
891
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
892
 
  glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
893
 
  glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
894
 
 
895
 
  glNormal3f(-0.744437, 0.446663, -0.496292);
896
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
897
 
  glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
898
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
899
 
  glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
900
 
  glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
901
 
  glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
902
 
 
903
 
  /* Left */
904
 
  glNormal3f(0.997484, 0.070735, 0.004796);
905
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
906
 
  glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
907
 
  glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
908
 
  glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
909
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
910
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
911
 
 
912
 
  glNormal3f(0.744437, 0.446663, -0.496292);
913
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
914
 
  glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
915
 
  glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
916
 
  glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
917
 
  glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
918
 
  glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
919
 
 
920
 
  glEnd();
921
 
}
922
 
 
923
 
void draw_bishop(void)
924
 
{
925
 
  double trace_r[] =
926
 
      { 4.0, 4.0, 2.5, 2.5, 1.5, 1.2, 2.5, 1.7, 1.7, 2.2, 2.2,
927
 
    1.0, 0.8, 1.2, 0.8, 0.0, 0.0
928
 
  };
929
 
  double trace_h[] =
930
 
      { 0.0, 2.0, 3.0, 4.0, 7.0, 9.4, 9.4, 11.0, 12.2, 13.2,
931
 
    14.8, 16.0, 17.0, 17.7, 18.4, 18.4, 0.0
932
 
  };
933
 
 
934
 
  revolve_line(trace_r, trace_h, 0.0, ROT);
935
 
}
936
 
 
937
 
void draw_queen(void)
938
 
{
939
 
  double trace_r[] =
940
 
      { 4.8, 4.8, 3.4, 3.4, 1.8, 1.4, 2.9, 1.8, 1.8, 2.0, 2.7,
941
 
    2.4, 1.7, 0.95, 0.7, 0.9, 0.7, 0.0, 0.0
942
 
  };
943
 
  double trace_h[] =
944
 
      { 0.0, 2.2, 4.0, 5.0, 8.0, 11.8, 11.8, 13.6, 15.2, 17.8,
945
 
    19.2, 20.0, 20.0, 20.8, 20.8, 21.4, 22.0, 22.0, 0.0
946
 
  };
947
 
 
948
 
  revolve_line(trace_r, trace_h, 0.0, ROT);
949
 
}
950
 
 
951
 
void draw_king(void)
952
 
{
953
 
  double trace_r[] =
954
 
      { 5.0, 5.0, 3.5, 3.5, 2.0, 1.4, 3.0, 2.0, 2.0, 2.8, 1.6,
955
 
    1.6, 0.0, 0.0
956
 
  };
957
 
  double trace_h[] =
958
 
      { 0.0, 2.0, 3.0, 4.6, 7.6, 12.6, 12.6, 14.6, 15.6, 19.1,
959
 
    19.7, 20.1, 20.1, 0.0
960
 
  };
961
 
 
962
 
  revolve_line(trace_r, trace_h, 0.0, ROT);
963
 
 
964
 
  glBegin(GL_QUADS);
965
 
 
966
 
  /* Cross front */
967
 
  glNormal3f(0.0, 0.0, 1.0);
968
 
 
969
 
  glVertex3f(-0.3 * piece_size, 20.1 * piece_size, 0.351 * piece_size);
970
 
  glVertex3f(0.3 * piece_size, 20.1 * piece_size, 0.35 * piece_size);
971
 
  glVertex3f(0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
972
 
  glVertex3f(-0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
973
 
 
974
 
  glVertex3f(-0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
975
 
  glVertex3f(-0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
976
 
  glVertex3f(-0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
977
 
  glVertex3f(-0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
978
 
 
979
 
  glVertex3f(0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
980
 
  glVertex3f(0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
981
 
  glVertex3f(0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
982
 
  glVertex3f(0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
983
 
 
984
 
  /* Cross back */
985
 
  glNormal3f(0.0, 0.0, -1.0);
986
 
 
987
 
  glVertex3f(0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
988
 
  glVertex3f(-0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
989
 
  glVertex3f(-0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
990
 
  glVertex3f(0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
991
 
 
992
 
  glVertex3f(-0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
993
 
  glVertex3f(-0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
994
 
  glVertex3f(-0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
995
 
  glVertex3f(-0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
996
 
 
997
 
  glVertex3f(0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
998
 
  glVertex3f(0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
999
 
  glVertex3f(0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1000
 
  glVertex3f(0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
1001
 
 
1002
 
  /* Cross left */
1003
 
  glNormal3f(-1.0, 0.0, 0.0);
1004
 
 
1005
 
  glVertex3f(-0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
1006
 
  glVertex3f(-0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1007
 
  glVertex3f(-0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1008
 
  glVertex3f(-0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
1009
 
 
1010
 
  glVertex3f(-0.3 * piece_size, 20.1 * piece_size, 0.35 * piece_size);
1011
 
  glVertex3f(-0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
1012
 
  glVertex3f(-0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
1013
 
  glVertex3f(-0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
1014
 
 
1015
 
  glVertex3f(-0.3 * piece_size, 22.1 * piece_size, 0.3 * piece_size);
1016
 
  glVertex3f(-0.3 * piece_size, 23.1 * piece_size, 0.3 * piece_size);
1017
 
  glVertex3f(-0.3 * piece_size, 23.1 * piece_size, -0.3 * piece_size);
1018
 
  glVertex3f(-0.3 * piece_size, 22.1 * piece_size, -0.3 * piece_size);
1019
 
 
1020
 
  /* Cross right */
1021
 
  glNormal3f(1.0, 0.0, 0.0);
1022
 
 
1023
 
  glVertex3f(0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
1024
 
  glVertex3f(0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1025
 
  glVertex3f(0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1026
 
  glVertex3f(0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
1027
 
 
1028
 
  glVertex3f(0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
1029
 
  glVertex3f(0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
1030
 
  glVertex3f(0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
1031
 
  glVertex3f(0.3 * piece_size, 20.1 * piece_size, 0.35 * piece_size);
1032
 
 
1033
 
  glVertex3f(0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1034
 
  glVertex3f(0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
1035
 
  glVertex3f(0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
1036
 
  glVertex3f(0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1037
 
 
1038
 
  /* Cross top */
1039
 
  glNormal3f(0.0, 1.0, 0.0);
1040
 
 
1041
 
  glVertex3f(-0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1042
 
  glVertex3f(-0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1043
 
  glVertex3f(-0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1044
 
  glVertex3f(-0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1045
 
 
1046
 
  glVertex3f(0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1047
 
  glVertex3f(0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1048
 
  glVertex3f(0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
1049
 
  glVertex3f(0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
1050
 
 
1051
 
  glVertex3f(-0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
1052
 
  glVertex3f(-0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
1053
 
  glVertex3f(0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
1054
 
  glVertex3f(0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
1055
 
 
1056
 
  glEnd();
1057
 
}