www.pudn.com > 法线示例程序.zip > GLObject.cpp


// GLSObject.cpp: implementation of the GLSObject class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
 
#include "glincludes.h" 
#include "GLObject.h" 
 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
 
////////////////////////////////////////////////////////////////////// 
// Static helpers 
////////////////////////////////////////////////////////////////////// 
 
 
// Offset pIn by pOffset into pOut 
void VectorOffset (GLpoint *pIn, GLpoint *pOffset, GLpoint *pOut) 
{ 
	pOut->x = pIn->x - pOffset->x; 
	pOut->y = pIn->y - pOffset->y; 
	pOut->z = pIn->z - pOffset->z; 
} 
 
 
// Compute the cross product a X b into pOut 
void VectorGetNormal (GLpoint *a, GLpoint *b, GLpoint *pOut) 
{ 
	pOut->x = a->y * b->z - a->z * b->y; 
	pOut->y = a->z * b->x - a->x * b->z; 
	pOut->z = a->x * b->y - a->y * b->x; 
} 
 
 
// Normalize pIn vector into pOut 
bool VectorNormalize (GLpoint *pIn, GLpoint *pOut) 
{ 
	GLfloat len = (GLfloat)(sqrt(sqr(pIn->x) + sqr(pIn->y) + sqr(pIn->z))); 
	if (len) 
	{ 
		pOut->x = pIn->x / len; 
		pOut->y = pIn->y / len; 
		pOut->z = pIn->z / len; 
		return true; 
	} 
	return false; 
} 
 
 
// Compute p1,p2,p3 face normal into pOut 
bool ComputeFaceNormal (GLpoint *p1, GLpoint *p2, GLpoint *p3, GLpoint *pOut) 
{ 
	// Uses p2 as a new origin for p1,p3 
	GLpoint a; 
	VectorOffset(p3, p2, &a); 
	GLpoint b; 
	VectorOffset(p1, p2, &b); 
	// Compute the cross product a X b to get the face normal 
	GLpoint pn; 
	VectorGetNormal(&a, &b, &pn); 
	// Return a normalized vector 
	return VectorNormalize(&pn, pOut); 
} 
 
 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
 
// Static definition of object's vertices 
GLpoint OBJ_VERTICES [] = { 
 
	{(float)54.111641, (float)-0.007899, (float)37.141083},  
	{(float)55.552414, (float)-5.571973, (float)41.828125},  
	{(float)53.201775, (float)-9.007742, (float)47.965961},  
	{(float)47.957581, (float)-9.002861, (float)53.210155},  
	{(float)41.822945, (float)-5.559192, (float)55.557594},  
	{(float)37.141083, (float)0.007900, (float)54.111641},  
	{(float)35.700310, (float)5.571973, (float)49.424599},  
	{(float)38.050949, (float)9.007742, (float)43.286762},  
	{(float)43.295143, (float)9.002861, (float)38.042568},  
	{(float)49.429787, (float)5.559189, (float)35.695126},  
	{(float)54.111645, (float)-0.007905, (float)37.141087},  
	{(float)57.377384, (float)1.893198, (float)40.181728},  
	{(float)58.721027, (float)-2.630860, (float)45.902798},  
	{(float)56.339203, (float)-4.677984, (float)52.621380},  
	{(float)51.141693, (float)-3.466241, (float)57.771194},  
	{(float)45.113766, (float)0.541521, (float)59.385204},  
	{(float)40.557880, (float)5.814476, (float)56.846897},  
	{(float)39.214237, (float)10.338531, (float)51.125828},  
	{(float)41.596062, (float)12.385656, (float)44.407253},  
	{(float)46.793575, (float)11.173914, (float)39.257427},  
	{(float)52.821507, (float)7.166149, (float)37.643421},  
	{(float)57.377388, (float)1.893192, (float)40.181732},  
	{(float)60.649940, (float)4.634549, (float)42.550278},  
	{(float)62.244057, (float)1.540482, (float)49.099220},  
	{(float)60.089123, (float)1.029820, (float)56.177258},  
	{(float)55.008244, (float)3.297619, (float)61.080811},  
	{(float)48.942146, (float)7.477655, (float)61.936905},  
	{(float)44.207878, (float)11.973299, (float)58.418526},  
	{(float)42.613758, (float)15.067366, (float)51.869583},  
	{(float)44.768696, (float)15.578028, (float)44.791550},  
	{(float)49.849575, (float)13.310228, (float)39.887993},  
	{(float)55.915672, (float)9.130189, (float)39.031902},  
	{(float)60.649944, (float)4.634545, (float)42.550282},  
	{(float)63.897652, (float)8.411030, (float)43.810143},  
	{(float)66.063332, (float)7.054194, (float)50.772320},  
	{(float)64.347534, (float)8.129171, (float)57.906998},  
	{(float)59.405640, (float)11.225356, (float)62.488960},  
	{(float)53.125282, (float)15.160112, (float)62.768063},  
	{(float)47.905342, (float)18.430494, (float)58.637695},  
	{(float)45.739662, (float)19.787331, (float)51.675514},  
	{(float)47.455460, (float)18.712355, (float)44.540844},  
	{(float)52.397354, (float)15.616168, (float)39.958874},  
	{(float)58.677719, (float)11.681410, (float)39.679775},  
	{(float)63.897655, (float)8.411027, (float)43.810150},  
	{(float)67.013306, (float)13.259127, (float)43.485497},  
	{(float)69.889977, (float)13.761370, (float)50.302799},  
	{(float)68.688660, (float)16.356146, (float)57.145832},  
	{(float)63.868214, (float)20.052336, (float)61.400784},  
	{(float)57.269890, (float)23.438122, (float)61.442410},  
	{(float)51.414028, (float)25.220247, (float)57.254807},  
	{(float)48.537361, (float)24.718004, (float)50.437504},  
	{(float)49.738682, (float)22.123228, (float)43.594471},  
	{(float)54.559124, (float)18.427038, (float)39.339520},  
	{(float)61.157452, (float)15.041250, (float)39.297897},  
	{(float)67.013313, (float)13.259127, (float)43.485504},  
	{(float)69.780396, (float)19.083572, (float)41.131256},  
	{(float)73.273727, (float)21.314091, (float)47.281422},  
	{(float)72.506371, (float)25.231556, (float)53.531841},  
	{(float)67.771431, (float)29.339626, (float)57.495068},  
	{(float)60.877487, (float)32.069160, (float)57.657288},  
	{(float)54.457798, (float)32.377571, (float)53.956535},  
	{(float)50.964462, (float)30.147053, (float)47.806366},  
	{(float)51.731815, (float)26.229589, (float)41.555950},  
	{(float)56.466763, (float)22.121515, (float)37.592724},  
	{(float)63.360710, (float)19.391981, (float)37.430504},  
	{(float)69.780396, (float)19.083574, (float)41.131260},  
	{(float)71.882248, (float)25.678848, (float)36.390289},  
	{(float)75.762146, (float)29.321678, (float)41.555485},  
	{(float)75.263153, (float)34.278397, (float)47.049580},  
	{(float)70.575836, (float)38.655701, (float)50.774014},  
	{(float)63.490612, (float)40.781616, (float)51.306183},  
	{(float)56.713791, (float)39.844109, (float)48.442818},  
	{(float)52.833885, (float)36.201279, (float)43.277622},  
	{(float)53.332890, (float)31.244564, (float)37.783527},  
	{(float)58.020199, (float)26.867256, (float)34.059093},  
	{(float)65.105431, (float)24.741343, (float)33.526924},  
	{(float)71.882256, (float)25.678852, (float)36.390293},  
	{(float)72.940086, (float)32.715569, (float)29.081810},  
	{(float)76.970291, (float)37.419907, (float)33.159763},  
	{(float)76.574661, (float)43.135326, (float)37.869396},  
	{(float)71.904312, (float)47.678722, (float)41.411781},  
	{(float)64.743164, (float)49.314674, (float)42.433849},  
	{(float)57.826515, (float)47.418304, (float)40.545212},  
	{(float)53.796307, (float)42.713966, (float)36.467255},  
	{(float)54.191940, (float)36.998547, (float)31.757629},  
	{(float)58.862289, (float)32.455151, (float)28.215244},  
	{(float)66.023445, (float)30.819199, (float)27.193171},  
	{(float)72.940094, (float)32.715572, (float)29.081814},  
	{(float)72.582466, (float)39.738495, (float)19.309162},  
	{(float)76.577667, (float)45.214474, (float)22.318327},  
	{(float)76.158607, (float)51.464325, (float)26.289080},  
	{(float)71.485344, (float)56.100815, (float)29.704725},  
	{(float)64.342896, (float)57.352962, (float)31.260607},  
	{(float)57.459450, (float)54.742493, (float)30.362427},  
	{(float)53.464245, (float)49.266514, (float)27.353260},  
	{(float)53.883308, (float)43.016663, (float)23.382511},  
	{(float)58.556580, (float)38.380173, (float)19.966862},  
	{(float)65.699020, (float)37.128025, (float)18.410984},  
	{(float)72.582474, (float)39.738499, (float)19.309164},  
	{(float)70.539803, (float)46.201778, (float)7.546478},  
	{(float)74.362160, (float)52.236523, (float)9.540112},  
	{(float)73.829559, (float)58.858356, (float)12.837196},  
	{(float)69.145432, (float)63.537964, (float)16.178352},  
	{(float)62.098961, (float)64.487900, (float)18.287374},  
	{(float)55.381653, (float)61.345318, (float)18.358688},  
	{(float)51.559296, (float)55.310574, (float)16.365053},  
	{(float)52.091900, (float)48.688744, (float)13.067971},  
	{(float)56.776028, (float)44.009132, (float)9.726813},  
	{(float)63.822498, (float)43.059196, (float)7.617790},  
	{(float)70.539810, (float)46.201782, (float)7.546479},  
	{(float)66.737747, (float)51.558853, (float)-5.366621},  
	{(float)70.274483, (float)57.997166, (float)-4.345455},  
	{(float)69.561394, (float)64.875168, (float)-1.664478},  
	{(float)64.870857, (float)69.565704, (float)1.652267},  
	{(float)57.994495, (float)70.277145, (float)4.337897},  
	{(float)51.558846, (float)66.737755, (float)5.366593},  
	{(float)48.022110, (float)60.299446, (float)4.345427},  
	{(float)48.735203, (float)53.421440, (float)1.664452},  
	{(float)53.425743, (float)48.730900, (float)-1.652295},  
	{(float)60.302105, (float)48.019459, (float)-4.337926},  
	{(float)66.737747, (float)51.558857, (float)-5.366621},  
	{(float)61.344971, (float)55.381805, (float)-18.359383},  
	{(float)64.483841, (float)62.100925, (float)-18.295835},  
	{(float)63.531734, (float)69.148460, (float)-16.191357},  
	{(float)58.852329, (float)73.832497, (float)-12.849787},  
	{(float)52.232994, (float)74.363892, (float)-9.547493},  
	{(float)46.202095, (float)70.539658, (float)-7.545836},  
	{(float)43.063225, (float)63.820538, (float)-7.609385},  
	{(float)44.015331, (float)56.773003, (float)-9.713863},  
	{(float)48.694736, (float)52.088966, (float)-13.055434},  
	{(float)55.314075, (float)51.557579, (float)-16.357729},  
	{(float)61.344975, (float)55.381813, (float)-18.359385},  
	{(float)54.741425, (float)57.459595, (float)-30.364071},  
	{(float)57.347069, (float)64.343857, (float)-31.269976},  
	{(float)56.092339, (float)71.486755, (float)-29.718250},  
	{(float)51.456493, (float)76.159927, (float)-26.301601},  
	{(float)45.210281, (float)76.578400, (float)-22.325071},  
	{(float)39.739532, (float)72.582321, (float)-19.307564},  
	{(float)37.133888, (float)65.698059, (float)-18.401659},  
	{(float)38.388622, (float)58.555168, (float)-19.953384},  
	{(float)43.024464, (float)53.881989, (float)-23.370033},  
	{(float)49.270683, (float)53.463520, (float)-27.346563},  
	{(float)54.741428, (float)57.459602, (float)-30.364073},  
	{(float)47.416412, (float)57.826431, (float)-40.547535},  
	{(float)49.306213, (float)64.742706, (float)-42.444069},  
	{(float)47.666920, (float)71.903671, (float)-41.425995},  
	{(float)43.124683, (float)76.574066, (float)-37.882187},  
	{(float)37.414490, (float)76.969971, (float)-33.166252},  
	{(float)32.717430, (float)72.940155, (float)-29.079523},  
	{(float)30.827629, (float)66.023872, (float)-27.182991},  
	{(float)32.466923, (float)58.862915, (float)-28.201065},  
	{(float)37.009159, (float)54.192516, (float)-31.744877},  
	{(float)42.719360, (float)53.796616, (float)-36.460812},  
	{(float)47.416416, (float)57.826439, (float)-40.547539},  
	{(float)39.841763, (float)56.713448, (float)-48.445137},  
	{(float)40.770145, (float)63.488228, (float)-51.316299},  
	{(float)38.639481, (float)70.572319, (float)-50.788063},  
	{(float)34.263611, (float)75.259834, (float)-47.062202},  
	{(float)29.313969, (float)75.760307, (float)-41.561867},  
	{(float)25.681149, (float)71.882576, (float)-36.388000},  
	{(float)24.752766, (float)65.107796, (float)-33.516842},  
	{(float)26.883430, (float)58.023708, (float)-34.045074},  
	{(float)31.259304, (float)53.336185, (float)-37.770935},  
	{(float)36.208946, (float)52.835712, (float)-43.271275},  
	{(float)39.841766, (float)56.713455, (float)-48.445141},  
	{(float)32.373550, (float)54.457001, (float)-53.959743},  
	{(float)32.053993, (float)60.872849, (float)-57.666206},  
	{(float)29.319096, (float)67.764717, (float)-57.506294},  
	{(float)25.213497, (float)72.500145, (float)-53.541092},  
	{(float)21.305393, (float)73.270370, (float)-47.285164},  
	{(float)19.087551, (float)69.781174, (float)-41.128071},  
	{(float)19.407108, (float)63.365326, (float)-37.421604},  
	{(float)22.142004, (float)56.473461, (float)-37.581516},  
	{(float)26.247606, (float)51.738026, (float)-41.546726},  
	{(float)30.155708, (float)50.967808, (float)-47.802650},  
	{(float)32.373550, (float)54.457001, (float)-53.959747},  
	{(float)25.214230, (float)51.412754, (float)-57.258591},  
	{(float)23.420164, (float)57.263603, (float)-61.448101},  
	{(float)20.029291, (float)63.859318, (float)-61.406208},  
	{(float)16.336809, (float)68.680534, (float)-57.148922},  
	{(float)13.753119, (float)69.885735, (float)-50.302380},  
	{(float)13.265103, (float)67.014565, (float)-43.481728},  
	{(float)15.059168, (float)61.163708, (float)-39.292221},  
	{(float)18.450039, (float)54.568005, (float)-39.334110},  
	{(float)22.142525, (float)49.746777, (float)-43.591396},  
	{(float)24.726215, (float)48.541580, (float)-50.437943},  
	{(float)25.214230, (float)51.412758, (float)-57.258598},  
	{(float)18.420498, (float)47.903427, (float)-58.642380},  
	{(float)15.139085, (float)53.118874, (float)-62.769672},  
	{(float)11.201323, (float)59.397182, (float)-62.486881},  
	{(float)8.111303, (float)64.340256, (float)-57.902016},  
	{(float)7.049308, (float)66.059998, (float)-50.766350},  
	{(float)8.420984, (float)63.899536, (float)-43.805458},  
	{(float)11.702398, (float)58.684090, (float)-39.678165},  
	{(float)15.640159, (float)52.405781, (float)-39.960960},  
	{(float)18.730179, (float)47.462711, (float)-44.545822},  
	{(float)19.792173, (float)45.742962, (float)-51.681492},  
	{(float)18.420494, (float)47.903431, (float)-58.642387},  
	{(float)11.961500, (float)44.206177, (float)-58.422211},  
	{(float)7.457919, (float)48.937710, (float)-61.934113},  
	{(float)3.277474, (float)55.002758, (float)-61.072609},  
	{(float)1.016955, (float)60.084679, (float)-56.166771},  
	{(float)1.539802, (float)62.242348, (float)-49.090462},  
	{(float)4.646306, (float)60.651611, (float)-42.546585},  
	{(float)9.149887, (float)55.920074, (float)-39.034683},  
	{(float)13.330330, (float)49.855034, (float)-39.896187},  
	{(float)15.590851, (float)44.773109, (float)-44.802025},  
	{(float)15.068003, (float)42.615440, (float)-51.878342},  
	{(float)11.961496, (float)44.206177, (float)-58.422215},  
	{(float)5.799814, (float)40.556740, (float)-56.849186},  
	{(float)0.522403, (float)45.112278, (float)-59.378834},  
	{(float)-3.482521, (float)51.140427, (float)-57.758598},  
	{(float)-4.685214, (float)56.338631, (float)-52.607357},  
	{(float)-2.626286, (float)58.721363, (float)-45.892712},  
	{(float)1.907820, (float)57.378494, (float)-40.179417},  
	{(float)7.185231, (float)52.822952, (float)-37.649769},  
	{(float)11.190154, (float)46.794815, (float)-39.270000},  
	{(float)12.392846, (float)41.596603, (float)-44.421246},  
	{(float)10.333918, (float)39.213875, (float)-51.135899},  
	{(float)5.799809, (float)40.556747, (float)-56.849190},  
	{(float)-0.007926, (float)37.141068, (float)-54.111626},  
	{(float)-5.575821, (float)41.824638, (float)-55.548920},  
	{(float)-9.013948, (float)47.960331, (float)-53.196129},  
	{(float)-9.009062, (float)53.204525, (float)-47.951935},  
	{(float)-5.563025, (float)55.554108, (float)-41.819447},  
	{(float)0.007891, (float)54.111626, (float)-37.141068},  
	{(float)5.575786, (float)49.428055, (float)-35.703773},  
	{(float)9.013912, (float)43.292362, (float)-38.056564},  
	{(float)9.009026, (float)38.048168, (float)-43.300758},  
	{(float)5.562986, (float)35.698582, (float)-49.433250},  
	{(float)-0.007933, (float)37.141071, (float)-54.111629},  
	{(float)-5.302976, (float)34.056335, (float)-50.405499},  
	{(float)-10.766335, (float)39.051121, (float)-50.860424},  
	{(float)-13.393914, (float)45.350304, (float)-47.958828},  
	{(float)-12.182071, (float)50.547806, (float)-42.809025},  
	{(float)-7.593685, (float)52.658367, (float)-37.378063},  
	{(float)-1.381366, (float)50.875816, (float)-33.740383},  
	{(float)4.081993, (float)45.881027, (float)-33.285458},  
	{(float)6.709572, (float)39.581852, (float)-36.187054},  
	{(float)5.497727, (float)34.384342, (float)-41.336857},  
	{(float)0.909340, (float)32.273788, (float)-46.767822},  
	{(float)-5.302982, (float)34.056343, (float)-50.405502},  
	{(float)-9.928846, (float)31.293442, (float)-45.982613},  
	{(float)-15.054425, (float)36.645683, (float)-45.690929},  
	{(float)-16.820248, (float)43.093651, (float)-42.480213},  
	{(float)-14.551833, (float)48.174438, (float)-37.576847},  
	{(float)-9.115637, (float)49.947365, (float)-32.853756},  
	{(float)-2.588101, (float)47.735222, (float)-30.114990},  
	{(float)2.537476, (float)42.382977, (float)-30.406673},  
	{(float)4.303300, (float)35.935013, (float)-33.617390},  
	{(float)2.034884, (float)30.854223, (float)-38.520756},  
	{(float)-3.401316, (float)29.081303, (float)-43.243851},  
	{(float)-9.928854, (float)31.293446, (float)-45.982613},  
	{(float)-13.839304, (float)28.780409, (float)-41.112846},  
	{(float)-18.556000, (float)34.450008, (float)-40.330818},  
	{(float)-19.557415, (float)41.008247, (float)-37.015743},  
	{(float)-16.461048, (float)45.950111, (float)-32.433865},  
	{(float)-10.449604, (float)47.387966, (float)-28.335302},  
	{(float)-3.819249, (float)44.772606, (float)-26.285570},  
	{(float)0.897445, (float)39.103008, (float)-27.067595},  
	{(float)1.898862, (float)32.544769, (float)-30.382669},  
	{(float)-1.197507, (float)27.602905, (float)-34.964550},  
	{(float)-7.208955, (float)26.165051, (float)-39.063114},  
	{(float)-13.839312, (float)28.780413, (float)-41.112846},  
	{(float)-17.107386, (float)26.444473, (float)-36.014236},  
	{(float)-21.448788, (float)32.363071, (float)-34.953308},  
	{(float)-21.847462, (float)39.000141, (float)-31.667971},  
	{(float)-18.151127, (float)43.820553, (float)-27.413109},  
	{(float)-11.771658, (float)44.983070, (float)-23.813936},  
	{(float)-5.145797, (float)42.043655, (float)-22.245214},  
	{(float)-0.804396, (float)36.125061, (float)-23.306141},  
	{(float)-0.405721, (float)29.487989, (float)-26.591476},  
	{(float)-4.102057, (float)24.667574, (float)-30.846340},  
	{(float)-10.481528, (float)23.505056, (float)-34.445515},  
	{(float)-17.107391, (float)26.444477, (float)-36.014236},  
	{(float)-19.860580, (float)24.238867, (float)-30.827862},  
	{(float)-23.904640, (float)30.340563, (float)-29.637083},  
	{(float)-23.865047, (float)37.037971, (float)-26.451757},  
	{(float)-19.756924, (float)41.772900, (float)-22.488573},  
	{(float)-13.149429, (float)42.736774, (float)-19.261328},  
	{(float)-6.566407, (float)39.561428, (float)-18.002724},  
	{(float)-2.522347, (float)33.459728, (float)-19.193504},  
	{(float)-2.561941, (float)26.762323, (float)-22.378826},  
	{(float)-6.670067, (float)22.027391, (float)-26.342014},  
	{(float)-13.277563, (float)21.063519, (float)-29.569258},  
	{(float)-19.860586, (float)24.238873, (float)-30.827862},  
	{(float)-22.227715, (float)22.138956, (float)-25.633827},  
	{(float)-26.058764, (float)28.370054, (float)-24.409254},  
	{(float)-25.721016, (float)35.117981, (float)-21.350740},  
	{(float)-21.343481, (float)39.805260, (float)-17.626532},  
	{(float)-14.598227, (float)40.641506, (float)-14.659151},  
	{(float)-8.061711, (float)37.307304, (float)-13.582036},  
	{(float)-4.230664, (float)31.076202, (float)-14.806608},  
	{(float)-4.568410, (float)24.328278, (float)-17.865122},  
	{(float)-8.945947, (float)19.640999, (float)-21.589331},  
	{(float)-15.691204, (float)18.804754, (float)-24.556713},  
	{(float)-22.227720, (float)22.138962, (float)-25.633827},  
	{(float)-24.319040, (float)20.132015, (float)-20.474733},  
	{(float)-28.010834, (float)26.450926, (float)-19.272606},  
	{(float)-27.484541, (float)33.242668, (float)-16.340302},  
	{(float)-22.941189, (float)37.913013, (float)-12.797859},  
	{(float)-16.116184, (float)38.678062, (float)-9.998375},  
	{(float)-9.616446, (float)35.245586, (float)-9.011153},  
	{(float)-5.924653, (float)28.926674, (float)-10.213282},  
	{(float)-6.450944, (float)22.134937, (float)-13.145586},  
	{(float)-10.994297, (float)17.464584, (float)-16.688028},  
	{(float)-17.819307, (float)16.699537, (float)-19.487514},  
	{(float)-24.319046, (float)20.132019, (float)-20.474733},  
	{(float)-26.226158, (float)18.209991, (float)-15.370366},  
	{(float)-29.834404, (float)24.586674, (float)-14.220759},  
	{(float)-29.198895, (float)31.415920, (float)-11.399302},  
	{(float)-24.562376, (float)36.089191, (float)-7.983698},  
	{(float)-17.695843, (float)36.821453, (float)-5.278591},  
	{(float)-11.222075, (float)33.333012, (float)-4.317238},  
	{(float)-7.613832, (float)26.956329, (float)-5.466846},  
	{(float)-8.249340, (float)20.127083, (float)-8.288301},  
	{(float)-12.885859, (float)15.453811, (float)-11.703907},  
	{(float)-19.752396, (float)14.721548, (float)-14.409016},  
	{(float)-26.226166, (float)18.209995, (float)-15.370366},  
	{(float)-28.022535, (float)16.365501, (float)-10.331866},  
	{(float)-31.585182, (float)22.778910, (float)-9.246110},  
	{(float)-30.894821, (float)29.637577, (float)-6.510205},  
	{(float)-26.215149, (float)34.321728, (float)-3.169174},  
	{(float)-19.333637, (float)35.042175, (float)-0.499178},  
	{(float)-12.878794, (float)31.523735, (float)0.479937},  
	{(float)-9.316148, (float)25.110327, (float)-0.605820},  
	{(float)-10.006508, (float)18.251661, (float)-3.341724},  
	{(float)-14.686182, (float)13.567507, (float)-6.682756},  
	{(float)-21.567696, (float)12.847061, (float)-9.352754},  
	{(float)-28.022541, (float)16.365507, (float)-10.331866},  
	{(float)-29.770145, (float)14.591081, (float)-5.366378},  
	{(float)-33.308132, (float)21.028141, (float)-4.341675},  
	{(float)-32.595791, (float)27.905401, (float)-1.658583},  
	{(float)-27.905212, (float)32.595982, (float)1.658049},  
	{(float)-21.028038, (float)33.308235, (float)4.341380},  
	{(float)-14.591114, (float)29.770115, (float)5.366468},  
	{(float)-11.053127, (float)23.333052, (float)4.341765},  
	{(float)-11.765468, (float)16.455795, (float)1.658674},  
	{(float)-16.456047, (float)11.765215, (float)-1.657959},  
	{(float)-23.333225, (float)11.052958, (float)-4.341290},  
	{(float)-29.770151, (float)14.591086, (float)-5.366378},  
	{(float)-31.523565, (float)12.879224, (float)-0.480777},  
	{(float)-35.041904, (float)19.334116, (float)0.498375},  
	{(float)-34.321472, (float)26.215483, (float)3.168752},  
	{(float)-29.637444, (float)30.894871, (float)6.510358},  
	{(float)-22.778965, (float)31.584913, (float)9.246815},  
	{(float)-16.365736, (float)28.022041, (float)10.332888},  
	{(float)-12.847397, (float)21.567146, (float)9.353735},  
	{(float)-13.567830, (float)14.685784, (float)6.683360},  
	{(float)-18.251858, (float)10.006394, (float)3.341752},  
	{(float)-25.110344, (float)9.316351, (float)0.605295},  
	{(float)-31.523571, (float)12.879230, (float)-0.480777},  
	{(float)-33.332962, (float)11.222675, (float)4.316352},  
	{(float)-36.821201, (float)17.696537, (float)5.277814},  
	{(float)-36.088844, (float)24.562889, (float)7.983363},  
	{(float)-31.415623, (float)29.199015, (float)11.399570},  
	{(float)-24.586555, (float)29.834072, (float)14.221562},  
	{(float)-18.210110, (float)26.225494, (float)15.371432},  
	{(float)-14.721872, (float)19.751633, (float)14.409970},  
	{(float)-15.454228, (float)12.885283, (float)11.704422},  
	{(float)-20.127449, (float)8.249156, (float)8.288214},  
	{(float)-26.956520, (float)7.614097, (float)5.466220},  
	{(float)-33.332966, (float)11.222681, (float)4.316352},  
	{(float)-35.245697, (float)9.618210, (float)9.009039},  
	{(float)-38.677582, (float)16.118162, (float)9.996906},  
	{(float)-37.912140, (float)22.942614, (float)12.797634},  
	{(float)-33.241745, (float)27.484854, (float)16.341438},  
	{(float)-26.450325, (float)28.009905, (float)19.274706},  
	{(float)-20.131977, (float)24.317211, (float)20.477030},  
	{(float)-16.700090, (float)17.817257, (float)19.489162},  
	{(float)-17.465532, (float)10.992808, (float)16.688435},  
	{(float)-22.135931, (float)6.450566, (float)13.144629},  
	{(float)-28.927353, (float)5.925518, (float)10.211362},  
	{(float)-35.245705, (float)9.618216, (float)9.009039},  
	{(float)-37.307789, (float)8.064762, (float)13.579064},  
	{(float)-40.640766, (float)14.601742, (float)14.657140},  
	{(float)-39.803596, (float)21.346106, (float)17.626282},  
	{(float)-35.116043, (float)25.721735, (float)21.352381},  
	{(float)-28.368593, (float)26.057289, (float)24.412193},  
	{(float)-22.138546, (float)22.224596, (float)25.636972},  
	{(float)-18.805569, (float)15.687616, (float)24.558897},  
	{(float)-19.642740, (float)8.943254, (float)21.589758},  
	{(float)-24.330296, (float)4.567623, (float)17.863657},  
	{(float)-31.077745, (float)4.232071, (float)14.803843},  
	{(float)-37.307793, (float)8.064768, (float)13.579064},  
	{(float)-39.562363, (float)6.570909, (float)17.999184},  
	{(float)-42.736095, (float)13.154319, (float)19.259840},  
	{(float)-41.770878, (float)19.760319, (float)22.489738},  
	{(float)-37.035389, (float)23.865637, (float)26.455166},  
	{(float)-30.338430, (float)23.902187, (float)29.641466},  
	{(float)-24.238008, (float)19.856005, (float)30.831577},  
	{(float)-21.064280, (float)13.272594, (float)29.570919},  
	{(float)-22.029495, (float)6.666597, (float)26.341022},  
	{(float)-26.764984, (float)2.561275, (float)22.375595},  
	{(float)-33.461948, (float)2.524727, (float)19.189295},  
	{(float)-39.562370, (float)6.570914, (float)17.999184},  
	{(float)-42.045002, (float)5.151937, (float)22.241411},  
	{(float)-44.982338, (float)11.777990, (float)23.813223},  
	{(float)-43.818031, (float)18.155214, (float)27.415791},  
	{(float)-38.996815, (float)21.847731, (float)31.673056},  
	{(float)-32.360229, (float)21.445118, (float)34.958889},  
	{(float)-26.443218, (float)17.101166, (float)36.018211},  
	{(float)-23.505882, (float)10.475113, (float)34.446400},  
	{(float)-24.670185, (float)4.097889, (float)30.843832},  
	{(float)-29.491405, (float)0.405373, (float)26.586565},  
	{(float)-36.127998, (float)0.807985, (float)23.300732},  
	{(float)-42.045006, (float)5.151942, (float)22.241411},  
	{(float)-44.774452, (float)3.828668, (float)26.281206},  
	{(float)-47.386688, (float)10.458820, (float)28.335571},  
	{(float)-45.946217, (float)16.466524, (float)32.438698},  
	{(float)-41.003239, (float)19.557043, (float)37.023323},  
	{(float)-34.445816, (float)18.549904, (float)40.338280},  
	{(float)-28.778654, (float)13.829798, (float)41.117371},  
	{(float)-26.166416, (float)7.199646, (float)39.063004},  
	{(float)-27.606892, (float)1.191943, (float)34.959877},  
	{(float)-32.549870, (float)-1.898577, (float)30.375250},  
	{(float)-39.107296, (float)-0.891435, (float)27.060293},  
	{(float)-44.774460, (float)3.828675, (float)26.281206},  
	{(float)-47.737095, (float)2.600775, (float)30.111080},  
	{(float)-49.945530, (float)9.126870, (float)32.856258},  
	{(float)-48.169621, (float)14.557316, (float)37.584843},  
	{(float)-43.087704, (float)16.817867, (float)42.490673},  
	{(float)-36.640900, (float)15.045071, (float)45.699886},  
	{(float)-31.291676, (float)9.916073, (float)45.986675},  
	{(float)-29.083241, (float)3.389977, (float)43.241497},  
	{(float)-30.859150, (float)-2.040467, (float)38.512913},  
	{(float)-35.941067, (float)-4.301020, (float)33.607082},  
	{(float)-42.387871, (float)-2.528220, (float)30.397867},  
	{(float)-47.737099, (float)2.600781, (float)30.111080},  
	{(float)-50.876961, (float)1.395483, (float)33.738228},  
	{(float)-52.656528, (float)7.604158, (float)37.383575},  
	{(float)-50.543713, (float)12.184878, (float)42.820133},  
	{(float)-45.345535, (float)13.387963, (float)47.971313},  
	{(float)-39.047527, (float)10.753874, (float)50.869537},  
	{(float)-34.055305, (float)5.288744, (float)50.407791},  
	{(float)-32.275738, (float)-0.919931, (float)46.762444},  
	{(float)-34.388550, (float)-5.500650, (float)41.325890},  
	{(float)-39.586731, (float)-6.703735, (float)36.174706},  
	{(float)-45.884743, (float)-4.069644, (float)33.276478},  
	{(float)-50.876965, (float)1.395489, (float)33.738228},  
	{(float)-54.111683, (float)0.007853, (float)37.141125},  
	{(float)-55.552197, (float)5.572208, (float)41.827911},  
	{(float)-53.201401, (float)9.008152, (float)47.965591},  
	{(float)-47.957207, (float)9.003268, (float)53.209785},  
	{(float)-41.822727, (float)5.559425, (float)55.557381},  
	{(float)-37.141125, (float)-0.007949, (float)54.111683},  
	{(float)-35.700607, (float)-5.572304, (float)49.424896},  
	{(float)-38.051407, (float)-9.008246, (float)43.287216},  
	{(float)-43.295601, (float)-9.003364, (float)38.043022},  
	{(float)-49.430084, (float)-5.559517, (float)35.695423},  
	{(float)-54.111687, (float)0.007859, (float)37.141129},  
	{(float)-57.377335, (float)-1.892002, (float)40.181957},  
	{(float)-58.720543, (float)2.631804, (float)45.903332},  
	{(float)-56.338486, (float)4.678294, (float)52.622021},  
	{(float)-51.141033, (float)3.465779, (float)57.771717},  
	{(float)-45.113434, (float)-0.542602, (float)59.385414},  
	{(float)-40.558022, (float)-5.815784, (float)56.846737},  
	{(float)-39.214813, (float)-10.339590, (float)51.125362},  
	{(float)-41.596867, (float)-12.386079, (float)44.406677},  
	{(float)-46.794323, (float)-11.173564, (float)39.256973},  
	{(float)-52.821926, (float)-7.165181, (float)37.643276},  
	{(float)-57.377335, (float)-1.891997, (float)40.181961},  
	{(float)-60.649929, (float)-4.634192, (float)42.550430},  
	{(float)-62.244095, (float)-1.540471, (float)49.099522},  
	{(float)-60.089211, (float)-1.030185, (float)56.177605},  
	{(float)-55.008369, (float)-3.298246, (float)61.081081},  
	{(float)-48.942284, (float)-7.478332, (float)61.936993},  
	{(float)-44.207989, (float)-11.973790, (float)58.418411},  
	{(float)-42.613823, (float)-15.067510, (float)51.869316},  
	{(float)-44.768707, (float)-15.577795, (float)44.791241},  
	{(float)-49.849548, (float)-13.309734, (float)39.887760},  
	{(float)-55.915638, (float)-9.129646, (float)39.031853},  
	{(float)-60.649933, (float)-4.634188, (float)42.550434},  
	{(float)-63.897808, (float)-8.411672, (float)43.809879},  
	{(float)-66.063736, (float)-7.054854, (float)50.771984},  
	{(float)-64.348038, (float)-8.129628, (float)57.906715},  
	{(float)-59.406078, (float)-11.225466, (float)62.488846},  
	{(float)-53.125504, (float)-15.159862, (float)62.768154},  
	{(float)-47.905285, (float)-18.430012, (float)58.637959},  
	{(float)-45.739361, (float)-19.786827, (float)51.675850},  
	{(float)-47.455051, (float)-18.712053, (float)44.541122},  
	{(float)-52.397015, (float)-15.616216, (float)39.958992},  
	{(float)-58.677593, (float)-11.681819, (float)39.679684},  
	{(float)-63.897812, (float)-8.411669, (float)43.809887},  
	{(float)-67.013214, (float)-13.258556, (float)43.485889},  
	{(float)-69.890045, (float)-13.761507, (float)50.303074},  
	{(float)-68.688881, (float)-16.356974, (float)57.145870},  
	{(float)-63.868523, (float)-20.053572, (float)61.400562},  
	{(float)-57.270187, (float)-23.439329, (float)61.442005},  
	{(float)-51.414215, (float)-25.221001, (float)57.254368},  
	{(float)-48.537384, (float)-24.718048, (float)50.437183},  
	{(float)-49.738548, (float)-22.122585, (float)43.594387},  
	{(float)-54.558907, (float)-18.425983, (float)39.339691},  
	{(float)-61.157246, (float)-15.040227, (float)39.298252},  
	{(float)-67.013222, (float)-13.258556, (float)43.485897},  
	{(float)-69.780312, (float)-19.083069, (float)41.131683},  
	{(float)-73.273636, (float)-21.313850, (float)47.281757},  
	{(float)-72.506325, (float)-25.231709, (float)53.531937},  
	{(float)-67.771454, (float)-29.340153, (float)57.494865},  
	{(float)-60.877590, (float)-32.069901, (float)57.656841},  
	{(float)-54.457954, (float)-32.378281, (float)53.955994},  
	{(float)-50.964630, (float)-30.147499, (float)47.805920},  
	{(float)-51.731941, (float)-26.229643, (float)41.555740},  
	{(float)-56.466812, (float)-22.121195, (float)37.592812},  
	{(float)-63.360680, (float)-19.391447, (float)37.430840},  
	{(float)-69.780312, (float)-19.083073, (float)41.131691},  
	{(float)-71.882256, (float)-25.678886, (float)36.390263},  
	{(float)-75.762131, (float)-29.321608, (float)41.555557},  
	{(float)-75.263115, (float)-34.278286, (float)47.049686},  
	{(float)-70.575813, (float)-38.655636, (float)50.774071},  
	{(float)-63.490612, (float)-40.781662, (float)51.306137},  
	{(float)-56.713825, (float)-39.844292, (float)48.442646},  
	{(float)-52.833954, (float)-36.201569, (float)43.277351},  
	{(float)-53.332970, (float)-31.244892, (float)37.783230},  
	{(float)-58.020271, (float)-26.867538, (float)34.058834},  
	{(float)-65.105476, (float)-24.741516, (float)33.526772},  
	{(float)-71.882263, (float)-25.678890, (float)36.390266},  
	{(float)-72.940071, (float)-32.715397, (float)29.082020},  
	{(float)-76.970261, (float)-37.419434, (float)33.160343},  
	{(float)-76.574631, (float)-43.134777, (float)37.870064},  
	{(float)-71.904274, (float)-47.678349, (float)41.412231},  
	{(float)-64.743149, (float)-49.314667, (float)42.433857},  
	{(float)-57.826530, (float)-47.418713, (float)40.544712},  
	{(float)-53.796341, (float)-42.714676, (float)36.466389},  
	{(float)-54.191978, (float)-36.999336, (float)31.756668},  
	{(float)-58.862320, (float)-32.455757, (float)28.214500},  
	{(float)-66.023460, (float)-30.819443, (float)27.192875},  
	{(float)-72.940079, (float)-32.715401, (float)29.082024},  
	{(float)-72.582451, (float)-39.738586, (float)19.309017},  
	{(float)-76.577652, (float)-45.214634, (float)22.318075},  
	{(float)-76.158577, (float)-51.464531, (float)26.288752},  
	{(float)-71.485306, (float)-56.101036, (float)29.704374},  
	{(float)-64.342865, (float)-57.353157, (float)31.260298},  
	{(float)-57.459435, (float)-54.742630, (float)30.362209},  
	{(float)-53.464237, (float)-49.266579, (float)27.353149},  
	{(float)-53.883308, (float)-43.016685, (float)23.382479},  
	{(float)-58.556580, (float)-38.380180, (float)19.966852},  
	{(float)-65.699020, (float)-37.128059, (float)18.410929},  
	{(float)-72.582458, (float)-39.738590, (float)19.309019},  
	{(float)-70.539719, (float)-46.201942, (float)7.546138},  
	{(float)-74.362137, (float)-52.236565, (float)9.540019},  
	{(float)-73.829582, (float)-58.858307, (float)12.837305},  
	{(float)-69.145470, (float)-63.537872, (float)16.178545},  
	{(float)-62.098984, (float)-64.487839, (float)18.287500},  
	{(float)-55.381634, (float)-61.345345, (float)18.358618},  
	{(float)-51.559223, (float)-55.310722, (float)16.364737},  
	{(float)-52.091778, (float)-48.688988, (float)13.067452},  
	{(float)-56.775883, (float)-44.009415, (float)9.726211},  
	{(float)-63.822376, (float)-43.059452, (float)7.617257},  
	{(float)-70.539726, (float)-46.201946, (float)7.546139},  
	{(float)-66.737686, (float)-51.558918, (float)-5.366801},  
	{(float)-70.274422, (float)-57.997234, (float)-4.345642},  
	{(float)-69.561325, (float)-64.875237, (float)-1.664682},  
	{(float)-64.870773, (float)-69.565788, (float)1.652043},  
	{(float)-57.994404, (float)-70.277245, (float)4.337656},  
	{(float)-51.558758, (float)-66.737846, (float)5.366345},  
	{(float)-48.022026, (float)-60.299530, (float)4.345186},  
	{(float)-48.735123, (float)-53.421516, (float)1.664228},  
	{(float)-53.425667, (float)-48.730972, (float)-1.652498},  
	{(float)-60.302040, (float)-48.019524, (float)-4.338113},  
	{(float)-66.737686, (float)-51.558922, (float)-5.366801},  
	{(float)-61.344929, (float)-55.381828, (float)-18.359470},  
	{(float)-64.483704, (float)-62.100994, (float)-18.296110},  
	{(float)-63.531532, (float)-69.148560, (float)-16.191776},  
	{(float)-58.852104, (float)-73.832611, (float)-12.850254},  
	{(float)-52.232800, (float)-74.363983, (float)-9.547894},  
	{(float)-46.201977, (float)-70.539719, (float)-7.546082},  
	{(float)-43.063198, (float)-63.820553, (float)-7.609445},  
	{(float)-44.015373, (float)-56.772984, (float)-9.713778},  
	{(float)-48.694801, (float)-52.088940, (float)-13.055300},  
	{(float)-55.314106, (float)-51.557568, (float)-16.357662},  
	{(float)-61.344933, (float)-55.381836, (float)-18.359472},  
	{(float)-54.741749, (float)-57.459560, (float)-30.363577},  
	{(float)-57.347031, (float)-64.343887, (float)-31.270037},  
	{(float)-56.091915, (float)-71.486839, (float)-29.718901},  
	{(float)-51.455818, (float)-76.160057, (float)-26.302649},  
	{(float)-45.209572, (float)-76.578522, (float)-22.326174},  
	{(float)-39.739025, (float)-72.582397, (float)-19.308352},  
	{(float)-37.133743, (float)-65.698074, (float)-18.401892},  
	{(float)-38.388855, (float)-58.555122, (float)-19.953028},  
	{(float)-43.024956, (float)-53.881905, (float)-23.369280},  
	{(float)-49.271210, (float)-53.463440, (float)-27.345757},  
	{(float)-54.741753, (float)-57.459568, (float)-30.363579},  
	{(float)-47.416733, (float)-57.826450, (float)-40.547134},  
	{(float)-49.306225, (float)-64.742706, (float)-42.444054},  
	{(float)-47.666576, (float)-71.903656, (float)-41.426414},  
	{(float)-43.124081, (float)-76.574036, (float)-37.882919},  
	{(float)-37.413815, (float)-76.969940, (float)-33.167068},  
	{(float)-32.716911, (float)-72.940140, (float)-29.080153},  
	{(float)-30.827421, (float)-66.023880, (float)-27.183235},  
	{(float)-32.467068, (float)-58.862938, (float)-28.200874},  
	{(float)-37.009563, (float)-54.192551, (float)-31.744370},  
	{(float)-42.719833, (float)-53.796650, (float)-36.460224},  
	{(float)-47.416737, (float)-57.826458, (float)-40.547138},  
	{(float)-39.841141, (float)-56.713348, (float)-48.445747},  
	{(float)-40.769497, (float)-63.488148, (float)-51.316875},  
	{(float)-38.639015, (float)-70.572281, (float)-50.788422},  
	{(float)-34.263474, (float)-75.259842, (float)-47.062241},  
	{(float)-29.314173, (float)-75.760353, (float)-41.561604},  
	{(float)-25.681580, (float)-71.882629, (float)-36.387566},  
	{(float)-24.753223, (float)-65.107834, (float)-33.516438},  
	{(float)-26.883703, (float)-58.023705, (float)-34.044891},  
	{(float)-31.259249, (float)-53.336136, (float)-37.771072},  
	{(float)-36.208549, (float)-52.835629, (float)-43.271717},  
	{(float)-39.841145, (float)-56.713356, (float)-48.445751},  
	{(float)-32.373192, (float)-54.456913, (float)-53.960011},  
	{(float)-32.053528, (float)-60.872746, (float)-57.666489},  
	{(float)-29.318665, (float)-67.764633, (float)-57.506504},  
	{(float)-25.213230, (float)-72.500092, (float)-53.541164},  
	{(float)-21.305359, (float)-73.270355, (float)-47.285103},  
	{(float)-19.087729, (float)-69.781197, (float)-41.127911},  
	{(float)-19.407396, (float)-63.365360, (float)-37.421432},  
	{(float)-22.142258, (float)-56.473476, (float)-37.581417},  
	{(float)-26.247692, (float)-51.738010, (float)-41.546757},  
	{(float)-30.155563, (float)-50.967754, (float)-47.802826},  
	{(float)-32.373196, (float)-54.456917, (float)-53.960014},  
	{(float)-25.214600, (float)-51.412807, (float)-57.258331},  
	{(float)-23.420418, (float)-57.263515, (float)-61.447987},  
	{(float)-20.029301, (float)-63.859093, (float)-61.406300},  
	{(float)-16.336536, (float)-68.680260, (float)-57.149185},  
	{(float)-13.752639, (float)-69.885490, (float)-50.302731},  
	{(float)-13.264568, (float)-67.014420, (float)-43.482033},  
	{(float)-15.058750, (float)-61.163712, (float)-39.292377},  
	{(float)-18.449867, (float)-54.568134, (float)-39.334068},  
	{(float)-22.142632, (float)-49.746967, (float)-43.591179},  
	{(float)-24.726530, (float)-48.541740, (float)-50.437641},  
	{(float)-25.214600, (float)-51.412811, (float)-57.258339},  
	{(float)-18.420269, (float)-47.903351, (float)-58.642452},  
	{(float)-15.138924, (float)-53.118881, (float)-62.769699},  
	{(float)-11.201262, (float)-59.397251, (float)-62.486847},  
	{(float)-8.111339, (float)-64.340340, (float)-57.901939},  
	{(float)-7.049400, (float)-66.060051, (float)-50.766254},  
	{(float)-8.421068, (float)-63.899521, (float)-43.805386},  
	{(float)-11.702415, (float)-58.683990, (float)-39.678139},  
	{(float)-15.640074, (float)-52.405624, (float)-39.960991},  
	{(float)-18.729998, (float)-47.462532, (float)-44.545898},  
	{(float)-19.791939, (float)-45.742821, (float)-51.681587},  
	{(float)-18.420267, (float)-47.903358, (float)-58.642460},  
	{(float)-11.960743, (float)-44.206032, (float)-58.422409},  
	{(float)-7.457172, (float)-48.937752, (float)-61.934071},  
	{(float)-3.276999, (float)-55.002956, (float)-61.072338},  
	{(float)-1.016909, (float)-60.084938, (float)-56.166363},  
	{(float)-1.540179, (float)-62.242554, (float)-49.090065},  
	{(float)-4.646937, (float)-60.651665, (float)-42.546349},  
	{(float)-9.150509, (float)-55.919945, (float)-39.034687},  
	{(float)-13.330679, (float)-49.854744, (float)-39.896420},  
	{(float)-15.590771, (float)-44.772758, (float)-44.802395},  
	{(float)-15.067500, (float)-42.615147, (float)-51.878696},  
	{(float)-11.960739, (float)-44.206032, (float)-58.422413},  
	{(float)-5.800392, (float)-40.556744, (float)-56.849052},  
	{(float)-0.522789, (float)-45.111980, (float)-59.378845},  
	{(float)3.482495, (float)-51.139923, (float)-57.758736},  
	{(float)4.685578, (float)-56.338097, (float)-52.607555},  
	{(float)2.626924, (float)-58.720982, (float)-45.892879},  
	{(float)-1.907132, (float)-57.378399, (float)-40.179482},  
	{(float)-7.184734, (float)-52.823162, (float)-37.649689},  
	{(float)-11.190018, (float)-46.795227, (float)-39.269794},  
	{(float)-12.393103, (float)-41.597046, (float)-44.420979},  
	{(float)-10.334446, (float)-39.214157, (float)-51.135658},  
	{(float)-5.800386, (float)-40.556747, (float)-56.849056},  
	{(float)0.007972, (float)-37.141022, (float)-54.111580},  
	{(float)5.575780, (float)-41.824673, (float)-55.548954},  
	{(float)9.013856, (float)-47.960415, (float)-53.196213},  
	{(float)9.008968, (float)-53.204605, (float)-47.952019},  
	{(float)5.562988, (float)-55.554142, (float)-41.819485},  
	{(float)-0.007841, (float)-54.111580, (float)-37.141022},  
	{(float)-5.575649, (float)-49.427929, (float)-35.703648},  
	{(float)-9.013723, (float)-43.292191, (float)-38.056389},  
	{(float)-9.008837, (float)-38.047997, (float)-43.300583},  
	{(float)-5.562853, (float)-35.698460, (float)-49.433125},  
	{(float)0.007978, (float)-37.141026, (float)-54.111584},  
	{(float)5.304965, (float)-34.056446, (float)-50.405144},  
	{(float)10.767656, (float)-39.051994, (float)-50.859650},  
	{(float)13.394081, (float)-45.351597, (float)-47.957912},  
	{(float)12.181032, (float)-50.549004, (float)-42.808300},  
	{(float)7.591855, (float)-52.658997, (float)-37.377785},  
	{(float)1.379458, (float)-50.875622, (float)-33.740639},  
	{(float)-4.083232, (float)-45.880074, (float)-33.286133},  
	{(float)-6.709656, (float)-39.580475, (float)-36.187866},  
	{(float)-5.496607, (float)-34.383064, (float)-41.337486},  
	{(float)-0.907427, (float)-32.273071, (float)-46.768005},  
	{(float)5.304972, (float)-34.056450, (float)-50.405148},  
	{(float)9.928329, (float)-31.293329, (float)-45.982731},  
	{(float)15.054260, (float)-36.645226, (float)-45.690941},  
	{(float)16.820515, (float)-43.093014, (float)-42.480099},  
	{(float)14.552442, (float)-48.173847, (float)-37.576626},  
	{(float)9.116369, (float)-49.947029, (float)-32.853485},  
	{(float)2.588692, (float)-47.735268, (float)-30.114759},  
	{(float)-2.537239, (float)-42.383369, (float)-30.406548},  
	{(float)-4.303493, (float)-35.935589, (float)-33.617390},  
	{(float)-2.035420, (float)-30.854748, (float)-38.520863},  
	{(float)3.400655, (float)-29.081562, (float)-43.244007},  
	{(float)9.928335, (float)-31.293333, (float)-45.982731},  
	{(float)13.837727, (float)-28.780067, (float)-41.113541},  
	{(float)18.555189, (float)-34.449047, (float)-40.331673},  
	{(float)19.557695, (float)-41.007030, (float)-37.016399},  
	{(float)16.462322, (float)-45.949078, (float)-32.434052},  
	{(float)10.451398, (float)-47.387508, (float)-28.334930},  
	{(float)3.820891, (float)-44.772881, (float)-26.284752},  
	{(float)-0.896570, (float)-39.103897, (float)-27.066620},  
	{(float)-1.899076, (float)-32.545921, (float)-30.381891},  
	{(float)1.196298, (float)-27.603868, (float)-34.964241},  
	{(float)7.207225, (float)-26.165443, (float)-39.063366},  
	{(float)13.837733, (float)-28.780071, (float)-41.113541},  
	{(float)17.107412, (float)-26.444443, (float)-36.014175},  
	{(float)21.448799, (float)-32.363056, (float)-34.953285},  
	{(float)21.847460, (float)-39.000141, (float)-31.667971},  
	{(float)18.151127, (float)-43.820553, (float)-27.413109},  
	{(float)11.771670, (float)-44.983059, (float)-23.813913},  
	{(float)5.145827, (float)-42.043625, (float)-22.245153},  
	{(float)0.804442, (float)-36.125011, (float)-23.306042},  
	{(float)0.405779, (float)-29.487928, (float)-26.591354},  
	{(float)4.102114, (float)-24.667513, (float)-30.846218},  
	{(float)10.481573, (float)-23.505005, (float)-34.445415},  
	{(float)17.107418, (float)-26.444447, (float)-36.014175},  
	{(float)19.860813, (float)-24.238876, (float)-30.827631},  
	{(float)23.904690, (float)-30.340734, (float)-29.637035},  
	{(float)23.864899, (float)-37.038223, (float)-26.451887},  
	{(float)19.756645, (float)-41.773132, (float)-22.488806},  
	{(float)13.149138, (float)-42.736877, (float)-19.261551},  
	{(float)6.566225, (float)-39.561356, (float)-18.002829},  
	{(float)2.522352, (float)-33.459496, (float)-19.193424},  
	{(float)2.562140, (float)-26.762011, (float)-22.378571},  
	{(float)6.670396, (float)-22.027102, (float)-26.341656},  
	{(float)13.277905, (float)-21.063353, (float)-29.568911},  
	{(float)19.860821, (float)-24.238884, (float)-30.827631},  
	{(float)22.227386, (float)-22.138878, (float)-25.634111},  
	{(float)26.058651, (float)-28.369825, (float)-24.409447},  
	{(float)25.721169, (float)-35.117683, (float)-21.350742},  
	{(float)21.343849, (float)-39.804989, (float)-17.626318},  
	{(float)14.598682, (float)-40.641357, (float)-14.658778},  
	{(float)8.062088, (float)-37.307327, (float)-13.581621},  
	{(float)4.230827, (float)-31.076378, (float)-14.806286},  
	{(float)4.568307, (float)-24.328524, (float)-17.864988},  
	{(float)8.945626, (float)-19.641214, (float)-21.589415},  
	{(float)15.690799, (float)-18.804844, (float)-24.556955},  
	{(float)22.227394, (float)-22.138884, (float)-25.634111},  
	{(float)24.319185, (float)-20.131992, (float)-20.474518},  
	{(float)28.010900, (float)-26.450966, (float)-19.272451},  
	{(float)27.484512, (float)-33.242737, (float)-16.340242},  
	{(float)22.941084, (float)-37.913086, (float)-12.797895},  
	{(float)16.116051, (float)-38.678093, (float)-9.998466},  
	{(float)9.616346, (float)-35.245556, (float)-9.011242},  
	{(float)5.924632, (float)-28.926582, (float)-10.213308},  
	{(float)6.451020, (float)-22.134813, (float)-13.145516},  
	{(float)10.994450, (float)-17.464464, (float)-16.687864},  
	{(float)17.819485, (float)-16.699455, (float)-19.487295},  
	{(float)24.319191, (float)-20.131998, (float)-20.474518},  
	{(float)26.226158, (float)-18.209969, (float)-15.370339},  
	{(float)29.834396, (float)-24.586660, (float)-14.220771},  
	{(float)29.198896, (float)-31.415915, (float)-11.399323},  
	{(float)24.562393, (float)-36.089184, (float)-7.983695},  
	{(float)17.695877, (float)-36.821438, (float)-5.278541},  
	{(float)11.222122, (float)-33.332985, (float)-4.317136},  
	{(float)7.613883, (float)-26.956291, (float)-5.466705},  
	{(float)8.249385, (float)-20.127041, (float)-8.288152},  
	{(float)12.885888, (float)-15.453770, (float)-11.703780},  
	{(float)19.752407, (float)-14.721515, (float)-14.408936},  
	{(float)26.226164, (float)-18.209974, (float)-15.370339},  
	{(float)28.022514, (float)-16.365496, (float)-10.331886},  
	{(float)31.585167, (float)-22.778900, (float)-9.246140},  
	{(float)30.894829, (float)-29.637560, (float)-6.510209},  
	{(float)26.215179, (float)-34.321701, (float)-3.169125},  
	{(float)19.333694, (float)-35.042137, (float)-0.499069},  
	{(float)12.878860, (float)-31.523691, (float)0.480087},  
	{(float)9.316206, (float)-25.110287, (float)-0.605659},  
	{(float)10.006546, (float)-18.251629, (float)-3.341590},  
	{(float)14.686193, (float)-13.567486, (float)-6.682675},  
	{(float)21.567684, (float)-12.847050, (float)-9.352731},  
	{(float)28.022520, (float)-16.365501, (float)-10.331886},  
	{(float)29.770123, (float)-14.591106, (float)-5.366446},  
	{(float)33.308117, (float)-21.028158, (float)-4.341718},  
	{(float)32.595798, (float)-27.905394, (float)-1.658559},  
	{(float)27.905249, (float)-32.595943, (float)1.658156},  
	{(float)21.028099, (float)-33.308174, (float)4.341553},  
	{(float)14.591184, (float)-29.770042, (float)5.366667},  
	{(float)11.053188, (float)-23.332991, (float)4.341939},  
	{(float)11.765505, (float)-16.455757, (float)1.658780},  
	{(float)16.456057, (float)-11.765206, (float)-1.657935},  
	{(float)23.333210, (float)-11.052975, (float)-4.341333},  
	{(float)29.770126, (float)-14.591112, (float)-5.366446},  
	{(float)31.523632, (float)-12.879098, (float)-0.480504},  
	{(float)35.041920, (float)-19.334057, (float)0.498425},  
	{(float)34.321430, (float)-26.215500, (float)3.168584},  
	{(float)29.637377, (float)-30.894949, (float)6.510062},  
	{(float)22.778904, (float)-31.585018, (float)9.246528},  
	{(float)16.365715, (float)-28.022121, (float)10.332745},  
	{(float)12.847429, (float)-21.567162, (float)9.353815},  
	{(float)13.567915, (float)-14.685721, (float)6.683657},  
	{(float)18.251970, (float)-10.006269, (float)3.342178},  
	{(float)25.110447, (float)-9.316201, (float)0.605711},  
	{(float)31.523640, (float)-12.879104, (float)-0.480504},  
	{(float)33.332973, (float)-11.222745, (float)4.316274},  
	{(float)36.821205, (float)-17.696596, (float)5.277819},  
	{(float)36.088852, (float)-24.562904, (float)7.983474},  
	{(float)31.415642, (float)-29.198975, (float)11.399771},  
	{(float)24.586584, (float)-29.833982, (float)14.221800},  
	{(float)18.210148, (float)-26.225380, (float)15.371642},  
	{(float)14.721914, (float)-19.751526, (float)14.410096},  
	{(float)15.454268, (float)-12.885219, (float)11.704443},  
	{(float)20.127480, (float)-8.249148, (float)8.288145},  
	{(float)26.956541, (float)-7.614142, (float)5.466115},  
	{(float)33.332977, (float)-11.222751, (float)4.316274},  
	{(float)35.245705, (float)-9.617688, (float)9.009713},  
	{(float)38.677757, (float)-16.117580, (float)9.997406},  
	{(float)37.912422, (float)-22.942184, (float)12.797791},  
	{(float)33.242035, (float)-27.484732, (float)16.341219},  
	{(float)26.450527, (float)-28.010124, (float)19.274218},  
	{(float)20.132023, (float)-24.317684, (float)20.476484},  
	{(float)16.699972, (float)-17.817789, (float)19.488791},  
	{(float)17.465305, (float)-10.993189, (float)16.688406},  
	{(float)22.135691, (float)-6.450639, (float)13.144978},  
	{(float)28.927200, (float)-5.925246, (float)10.211977},  
	{(float)35.245708, (float)-9.617694, (float)9.009713},  
	{(float)37.307827, (float)-8.064803, (float)13.579062},  
	{(float)40.640808, (float)-14.601765, (float)14.657228},  
	{(float)39.803638, (float)-21.346092, (float)17.626455},  
	{(float)35.116077, (float)-25.721680, (float)21.352594},  
	{(float)28.368620, (float)-26.057205, (float)24.412390},  
	{(float)22.138565, (float)-22.224504, (float)25.637106},  
	{(float)18.805580, (float)-15.687543, (float)24.558939},  
	{(float)19.642754, (float)-8.943217, (float)21.589714},  
	{(float)24.330315, (float)-4.567627, (float)17.863571},  
	{(float)31.077776, (float)-4.232105, (float)14.803776},  
	{(float)37.307831, (float)-8.064809, (float)13.579062},  
	{(float)39.562321, (float)-6.570508, (float)17.999546},  
	{(float)42.736217, (float)-13.153856, (float)19.260103},  
	{(float)41.771133, (float)-19.759960, (float)22.489828},  
	{(float)37.035690, (float)-23.865511, (float)26.455070},  
	{(float)30.338673, (float)-23.902328, (float)29.641245},  
	{(float)24.238113, (float)-19.856352, (float)30.831341},  
	{(float)21.064217, (float)-13.273005, (float)29.570782},  
	{(float)22.029301, (float)-6.666903, (float)26.341061},  
	{(float)26.764744, (float)-2.561349, (float)22.375816},  
	{(float)33.461765, (float)-2.524532, (float)19.189640},  
	{(float)39.562325, (float)-6.570514, (float)17.999546},  
	{(float)42.045006, (float)-5.151752, (float)22.241570},  
	{(float)44.982388, (float)-11.777803, (float)23.813295},  
	{(float)43.818127, (float)-18.155087, (float)27.415773},  
	{(float)38.996929, (float)-21.847698, (float)31.672979},  
	{(float)32.360332, (float)-21.445183, (float)34.958801},  
	{(float)26.443285, (float)-17.101292, (float)36.018173},  
	{(float)23.505901, (float)-10.475241, (float)34.446445},  
	{(float)24.670162, (float)-4.097958, (float)30.843969},  
	{(float)29.491360, (float)-0.405345, (float)26.586763},  
	{(float)36.127964, (float)-0.807861, (float)23.300938},  
	{(float)42.045006, (float)-5.151757, (float)22.241570},  
	{(float)44.774544, (float)-3.828932, (float)26.281128},  
	{(float)47.386658, (float)-10.459100, (float)28.335600},  
	{(float)45.946087, (float)-16.466700, (float)32.438843},  
	{(float)41.003078, (float)-19.557035, (float)37.023556},  
	{(float)34.445694, (float)-18.549702, (float)40.338531},  
	{(float)28.778631, (float)-13.829469, (float)41.117569},  
	{(float)26.166517, (float)-7.199302, (float)39.063095},  
	{(float)27.607088, (float)-1.191703, (float)34.959858},  
	{(float)32.550098, (float)1.898635, (float)30.375143},  
	{(float)39.107487, (float)0.891301, (float)27.060165},  
	{(float)44.774551, (float)-3.828938, (float)26.281128},  
	{(float)47.737152, (float)-2.600851, (float)30.111099},  
	{(float)49.945618, (float)-9.126868, (float)32.856438},  
	{(float)48.169724, (float)-14.557224, (float)37.585129},  
	{(float)43.087799, (float)-16.817705, (float)42.490982},  
	{(float)36.640968, (float)-15.044888, (float)45.700119},  
	{(float)31.291697, (float)-9.915924, (float)45.986763},  
	{(float)29.083229, (float)-3.389908, (float)43.241425},  
	{(float)30.859121, (float)2.040447, (float)38.512733},  
	{(float)35.941048, (float)4.300930, (float)33.606880},  
	{(float)42.387886, (float)2.528109, (float)30.397745},  
	{(float)47.737152, (float)-2.600857, (float)30.111099},  
	{(float)50.877140, (float)-1.397282, (float)33.737991},  
	{(float)52.656075, (float)-7.605736, (float)37.384029},  
	{(float)50.542816, (float)-12.185616, (float)42.821117},  
	{(float)45.344551, (float)-13.387561, (float)47.972477},  
	{(float)39.046844, (float)-10.752472, (float)50.870457},  
	{(float)34.055202, (float)-5.286862, (float)50.408134},  
	{(float)32.276268, (float)0.921591, (float)46.762096},  
	{(float)34.389526, (float)5.501469, (float)41.325008},  
	{(float)39.587791, (float)6.703416, (float)36.173649},  
	{(float)45.885502, (float)4.068325, (float)33.275665},  
	{(float)50.877144, (float)-1.397289, (float)33.737995},  
	{(float)54.111729, (float)-0.007802, (float)37.141171},  
	{(float)55.552414, (float)-5.571972, (float)41.828125},  
	{(float)53.201721, (float)-9.007802, (float)47.965908},  
	{(float)47.957527, (float)-9.002920, (float)53.210102},  
	{(float)41.822945, (float)-5.559194, (float)55.557594},  
	{(float)37.141171, (float)0.007993, (float)54.111729},  
	{(float)35.700485, (float)5.572163, (float)49.424774},  
	{(float)38.051178, (float)9.007992, (float)43.286991},  
	{(float)43.295372, (float)9.003111, (float)38.042797},  
	{(float)49.429958, (float)5.559381, (float)35.695301},  
	{(float)54.111732, (float)-0.007808, (float)37.141174} 
}; 
 
 
// Static definition of the object's faces 
GLFace OBJ_FACES[] = { 
	{0, 11, 12},  
	{0, 12, 1},  
	{1, 12, 13},  
	{1, 13, 2},  
	{2, 13, 14},  
	{2, 14, 3},  
	{3, 14, 15},  
	{3, 15, 4},  
	{4, 15, 16},  
	{4, 16, 5},  
	{5, 16, 17},  
	{5, 17, 6},  
	{6, 17, 18},  
	{6, 18, 7},  
	{7, 18, 19},  
	{7, 19, 8},  
	{8, 19, 20},  
	{8, 20, 9},  
	{9, 20, 11},  
	{9, 11, 0},  
	{11, 22, 23},  
	{11, 23, 12},  
	{12, 23, 24},  
	{12, 24, 13},  
	{13, 24, 25},  
	{13, 25, 14},  
	{14, 25, 26},  
	{14, 26, 15},  
	{15, 26, 27},  
	{15, 27, 16},  
	{16, 27, 28},  
	{16, 28, 17},  
	{17, 28, 29},  
	{17, 29, 18},  
	{18, 29, 30},  
	{18, 30, 19},  
	{19, 30, 31},  
	{19, 31, 20},  
	{20, 31, 22},  
	{20, 22, 11},  
	{22, 33, 34},  
	{22, 34, 23},  
	{23, 34, 35},  
	{23, 35, 24},  
	{24, 35, 36},  
	{24, 36, 25},  
	{25, 36, 37},  
	{25, 37, 26},  
	{26, 37, 38},  
	{26, 38, 27},  
	{27, 38, 39},  
	{27, 39, 28},  
	{28, 39, 40},  
	{28, 40, 29},  
	{29, 40, 41},  
	{29, 41, 30},  
	{30, 41, 42},  
	{30, 42, 31},  
	{31, 42, 33},  
	{31, 33, 22},  
	{33, 44, 45},  
	{33, 45, 34},  
	{34, 45, 46},  
	{34, 46, 35},  
	{35, 46, 47},  
	{35, 47, 36},  
	{36, 47, 48},  
	{36, 48, 37},  
	{37, 48, 49},  
	{37, 49, 38},  
	{38, 49, 50},  
	{38, 50, 39},  
	{39, 50, 51},  
	{39, 51, 40},  
	{40, 51, 52},  
	{40, 52, 41},  
	{41, 52, 53},  
	{41, 53, 42},  
	{42, 53, 44},  
	{42, 44, 33},  
	{44, 55, 56},  
	{44, 56, 45},  
	{45, 56, 57},  
	{45, 57, 46},  
	{46, 57, 58},  
	{46, 58, 47},  
	{47, 58, 59},  
	{47, 59, 48},  
	{48, 59, 60},  
	{48, 60, 49},  
	{49, 60, 61},  
	{49, 61, 50},  
	{50, 61, 62},  
	{50, 62, 51},  
	{51, 62, 63},  
	{51, 63, 52},  
	{52, 63, 64},  
	{52, 64, 53},  
	{53, 64, 55},  
	{53, 55, 44},  
	{55, 66, 67},  
	{55, 67, 56},  
	{56, 67, 68},  
	{56, 68, 57},  
	{57, 68, 69},  
	{57, 69, 58},  
	{58, 69, 70},  
	{58, 70, 59},  
	{59, 70, 71},  
	{59, 71, 60},  
	{60, 71, 72},  
	{60, 72, 61},  
	{61, 72, 73},  
	{61, 73, 62},  
	{62, 73, 74},  
	{62, 74, 63},  
	{63, 74, 75},  
	{63, 75, 64},  
	{64, 75, 66},  
	{64, 66, 55},  
	{66, 77, 78},  
	{66, 78, 67},  
	{67, 78, 79},  
	{67, 79, 68},  
	{68, 79, 80},  
	{68, 80, 69},  
	{69, 80, 81},  
	{69, 81, 70},  
	{70, 81, 82},  
	{70, 82, 71},  
	{71, 82, 83},  
	{71, 83, 72},  
	{72, 83, 84},  
	{72, 84, 73},  
	{73, 84, 85},  
	{73, 85, 74},  
	{74, 85, 86},  
	{74, 86, 75},  
	{75, 86, 77},  
	{75, 77, 66},  
	{77, 88, 89},  
	{77, 89, 78},  
	{78, 89, 90},  
	{78, 90, 79},  
	{79, 90, 91},  
	{79, 91, 80},  
	{80, 91, 92},  
	{80, 92, 81},  
	{81, 92, 93},  
	{81, 93, 82},  
	{82, 93, 94},  
	{82, 94, 83},  
	{83, 94, 95},  
	{83, 95, 84},  
	{84, 95, 96},  
	{84, 96, 85},  
	{85, 96, 97},  
	{85, 97, 86},  
	{86, 97, 88},  
	{86, 88, 77},  
	{88, 99, 100},  
	{88, 100, 89},  
	{89, 100, 101},  
	{89, 101, 90},  
	{90, 101, 102},  
	{90, 102, 91},  
	{91, 102, 103},  
	{91, 103, 92},  
	{92, 103, 104},  
	{92, 104, 93},  
	{93, 104, 105},  
	{93, 105, 94},  
	{94, 105, 106},  
	{94, 106, 95},  
	{95, 106, 107},  
	{95, 107, 96},  
	{96, 107, 108},  
	{96, 108, 97},  
	{97, 108, 99},  
	{97, 99, 88},  
	{99, 110, 111},  
	{99, 111, 100},  
	{100, 111, 112},  
	{100, 112, 101},  
	{101, 112, 113},  
	{101, 113, 102},  
	{102, 113, 114},  
	{102, 114, 103},  
	{103, 114, 115},  
	{103, 115, 104},  
	{104, 115, 116},  
	{104, 116, 105},  
	{105, 116, 117},  
	{105, 117, 106},  
	{106, 117, 118},  
	{106, 118, 107},  
	{107, 118, 119},  
	{107, 119, 108},  
	{108, 119, 110},  
	{108, 110, 99},  
	{110, 121, 122},  
	{110, 122, 111},  
	{111, 122, 123},  
	{111, 123, 112},  
	{112, 123, 124},  
	{112, 124, 113},  
	{113, 124, 125},  
	{113, 125, 114},  
	{114, 125, 126},  
	{114, 126, 115},  
	{115, 126, 127},  
	{115, 127, 116},  
	{116, 127, 128},  
	{116, 128, 117},  
	{117, 128, 129},  
	{117, 129, 118},  
	{118, 129, 130},  
	{118, 130, 119},  
	{119, 130, 121},  
	{119, 121, 110},  
	{121, 132, 133},  
	{121, 133, 122},  
	{122, 133, 134},  
	{122, 134, 123},  
	{123, 134, 135},  
	{123, 135, 124},  
	{124, 135, 136},  
	{124, 136, 125},  
	{125, 136, 137},  
	{125, 137, 126},  
	{126, 137, 138},  
	{126, 138, 127},  
	{127, 138, 139},  
	{127, 139, 128},  
	{128, 139, 140},  
	{128, 140, 129},  
	{129, 140, 141},  
	{129, 141, 130},  
	{130, 141, 132},  
	{130, 132, 121},  
	{132, 143, 144},  
	{132, 144, 133},  
	{133, 144, 145},  
	{133, 145, 134},  
	{134, 145, 146},  
	{134, 146, 135},  
	{135, 146, 147},  
	{135, 147, 136},  
	{136, 147, 148},  
	{136, 148, 137},  
	{137, 148, 149},  
	{137, 149, 138},  
	{138, 149, 150},  
	{138, 150, 139},  
	{139, 150, 151},  
	{139, 151, 140},  
	{140, 151, 152},  
	{140, 152, 141},  
	{141, 152, 143},  
	{141, 143, 132},  
	{143, 154, 155},  
	{143, 155, 144},  
	{144, 155, 156},  
	{144, 156, 145},  
	{145, 156, 157},  
	{145, 157, 146},  
	{146, 157, 158},  
	{146, 158, 147},  
	{147, 158, 159},  
	{147, 159, 148},  
	{148, 159, 160},  
	{148, 160, 149},  
	{149, 160, 161},  
	{149, 161, 150},  
	{150, 161, 162},  
	{150, 162, 151},  
	{151, 162, 163},  
	{151, 163, 152},  
	{152, 163, 154},  
	{152, 154, 143},  
	{154, 165, 166},  
	{154, 166, 155},  
	{155, 166, 167},  
	{155, 167, 156},  
	{156, 167, 168},  
	{156, 168, 157},  
	{157, 168, 169},  
	{157, 169, 158},  
	{158, 169, 170},  
	{158, 170, 159},  
	{159, 170, 171},  
	{159, 171, 160},  
	{160, 171, 172},  
	{160, 172, 161},  
	{161, 172, 173},  
	{161, 173, 162},  
	{162, 173, 174},  
	{162, 174, 163},  
	{163, 174, 165},  
	{163, 165, 154},  
	{165, 176, 177},  
	{165, 177, 166},  
	{166, 177, 178},  
	{166, 178, 167},  
	{167, 178, 179},  
	{167, 179, 168},  
	{168, 179, 180},  
	{168, 180, 169},  
	{169, 180, 181},  
	{169, 181, 170},  
	{170, 181, 182},  
	{170, 182, 171},  
	{171, 182, 183},  
	{171, 183, 172},  
	{172, 183, 184},  
	{172, 184, 173},  
	{173, 184, 185},  
	{173, 185, 174},  
	{174, 185, 176},  
	{174, 176, 165},  
	{176, 187, 188},  
	{176, 188, 177},  
	{177, 188, 189},  
	{177, 189, 178},  
	{178, 189, 190},  
	{178, 190, 179},  
	{179, 190, 191},  
	{179, 191, 180},  
	{180, 191, 192},  
	{180, 192, 181},  
	{181, 192, 193},  
	{181, 193, 182},  
	{182, 193, 194},  
	{182, 194, 183},  
	{183, 194, 195},  
	{183, 195, 184},  
	{184, 195, 196},  
	{184, 196, 185},  
	{185, 196, 187},  
	{185, 187, 176},  
	{187, 198, 199},  
	{187, 199, 188},  
	{188, 199, 200},  
	{188, 200, 189},  
	{189, 200, 201},  
	{189, 201, 190},  
	{190, 201, 202},  
	{190, 202, 191},  
	{191, 202, 203},  
	{191, 203, 192},  
	{192, 203, 204},  
	{192, 204, 193},  
	{193, 204, 205},  
	{193, 205, 194},  
	{194, 205, 206},  
	{194, 206, 195},  
	{195, 206, 207},  
	{195, 207, 196},  
	{196, 207, 198},  
	{196, 198, 187},  
	{198, 209, 210},  
	{198, 210, 199},  
	{199, 210, 211},  
	{199, 211, 200},  
	{200, 211, 212},  
	{200, 212, 201},  
	{201, 212, 213},  
	{201, 213, 202},  
	{202, 213, 214},  
	{202, 214, 203},  
	{203, 214, 215},  
	{203, 215, 204},  
	{204, 215, 216},  
	{204, 216, 205},  
	{205, 216, 217},  
	{205, 217, 206},  
	{206, 217, 218},  
	{206, 218, 207},  
	{207, 218, 209},  
	{207, 209, 198},  
	{209, 220, 221},  
	{209, 221, 210},  
	{210, 221, 222},  
	{210, 222, 211},  
	{211, 222, 223},  
	{211, 223, 212},  
	{212, 223, 224},  
	{212, 224, 213},  
	{213, 224, 225},  
	{213, 225, 214},  
	{214, 225, 226},  
	{214, 226, 215},  
	{215, 226, 227},  
	{215, 227, 216},  
	{216, 227, 228},  
	{216, 228, 217},  
	{217, 228, 229},  
	{217, 229, 218},  
	{218, 229, 220},  
	{218, 220, 209},  
	{220, 231, 232},  
	{220, 232, 221},  
	{221, 232, 233},  
	{221, 233, 222},  
	{222, 233, 234},  
	{222, 234, 223},  
	{223, 234, 235},  
	{223, 235, 224},  
	{224, 235, 236},  
	{224, 236, 225},  
	{225, 236, 237},  
	{225, 237, 226},  
	{226, 237, 238},  
	{226, 238, 227},  
	{227, 238, 239},  
	{227, 239, 228},  
	{228, 239, 240},  
	{228, 240, 229},  
	{229, 240, 231},  
	{229, 231, 220},  
	{231, 242, 243},  
	{231, 243, 232},  
	{232, 243, 244},  
	{232, 244, 233},  
	{233, 244, 245},  
	{233, 245, 234},  
	{234, 245, 246},  
	{234, 246, 235},  
	{235, 246, 247},  
	{235, 247, 236},  
	{236, 247, 248},  
	{236, 248, 237},  
	{237, 248, 249},  
	{237, 249, 238},  
	{238, 249, 250},  
	{238, 250, 239},  
	{239, 250, 251},  
	{239, 251, 240},  
	{240, 251, 242},  
	{240, 242, 231},  
	{242, 253, 254},  
	{242, 254, 243},  
	{243, 254, 255},  
	{243, 255, 244},  
	{244, 255, 256},  
	{244, 256, 245},  
	{245, 256, 257},  
	{245, 257, 246},  
	{246, 257, 258},  
	{246, 258, 247},  
	{247, 258, 259},  
	{247, 259, 248},  
	{248, 259, 260},  
	{248, 260, 249},  
	{249, 260, 261},  
	{249, 261, 250},  
	{250, 261, 262},  
	{250, 262, 251},  
	{251, 262, 253},  
	{251, 253, 242},  
	{253, 264, 265},  
	{253, 265, 254},  
	{254, 265, 266},  
	{254, 266, 255},  
	{255, 266, 267},  
	{255, 267, 256},  
	{256, 267, 268},  
	{256, 268, 257},  
	{257, 268, 269},  
	{257, 269, 258},  
	{258, 269, 270},  
	{258, 270, 259},  
	{259, 270, 271},  
	{259, 271, 260},  
	{260, 271, 272},  
	{260, 272, 261},  
	{261, 272, 273},  
	{261, 273, 262},  
	{262, 273, 264},  
	{262, 264, 253},  
	{264, 275, 276},  
	{264, 276, 265},  
	{265, 276, 277},  
	{265, 277, 266},  
	{266, 277, 278},  
	{266, 278, 267},  
	{267, 278, 279},  
	{267, 279, 268},  
	{268, 279, 280},  
	{268, 280, 269},  
	{269, 280, 281},  
	{269, 281, 270},  
	{270, 281, 282},  
	{270, 282, 271},  
	{271, 282, 283},  
	{271, 283, 272},  
	{272, 283, 284},  
	{272, 284, 273},  
	{273, 284, 275},  
	{273, 275, 264},  
	{275, 286, 287},  
	{275, 287, 276},  
	{276, 287, 288},  
	{276, 288, 277},  
	{277, 288, 289},  
	{277, 289, 278},  
	{278, 289, 290},  
	{278, 290, 279},  
	{279, 290, 291},  
	{279, 291, 280},  
	{280, 291, 292},  
	{280, 292, 281},  
	{281, 292, 293},  
	{281, 293, 282},  
	{282, 293, 294},  
	{282, 294, 283},  
	{283, 294, 295},  
	{283, 295, 284},  
	{284, 295, 286},  
	{284, 286, 275},  
	{286, 297, 298},  
	{286, 298, 287},  
	{287, 298, 299},  
	{287, 299, 288},  
	{288, 299, 300},  
	{288, 300, 289},  
	{289, 300, 301},  
	{289, 301, 290},  
	{290, 301, 302},  
	{290, 302, 291},  
	{291, 302, 303},  
	{291, 303, 292},  
	{292, 303, 304},  
	{292, 304, 293},  
	{293, 304, 305},  
	{293, 305, 294},  
	{294, 305, 306},  
	{294, 306, 295},  
	{295, 306, 297},  
	{295, 297, 286},  
	{297, 308, 309},  
	{297, 309, 298},  
	{298, 309, 310},  
	{298, 310, 299},  
	{299, 310, 311},  
	{299, 311, 300},  
	{300, 311, 312},  
	{300, 312, 301},  
	{301, 312, 313},  
	{301, 313, 302},  
	{302, 313, 314},  
	{302, 314, 303},  
	{303, 314, 315},  
	{303, 315, 304},  
	{304, 315, 316},  
	{304, 316, 305},  
	{305, 316, 317},  
	{305, 317, 306},  
	{306, 317, 308},  
	{306, 308, 297},  
	{308, 319, 320},  
	{308, 320, 309},  
	{309, 320, 321},  
	{309, 321, 310},  
	{310, 321, 322},  
	{310, 322, 311},  
	{311, 322, 323},  
	{311, 323, 312},  
	{312, 323, 324},  
	{312, 324, 313},  
	{313, 324, 325},  
	{313, 325, 314},  
	{314, 325, 326},  
	{314, 326, 315},  
	{315, 326, 327},  
	{315, 327, 316},  
	{316, 327, 328},  
	{316, 328, 317},  
	{317, 328, 319},  
	{317, 319, 308},  
	{319, 330, 331},  
	{319, 331, 320},  
	{320, 331, 332},  
	{320, 332, 321},  
	{321, 332, 333},  
	{321, 333, 322},  
	{322, 333, 334},  
	{322, 334, 323},  
	{323, 334, 335},  
	{323, 335, 324},  
	{324, 335, 336},  
	{324, 336, 325},  
	{325, 336, 337},  
	{325, 337, 326},  
	{326, 337, 338},  
	{326, 338, 327},  
	{327, 338, 339},  
	{327, 339, 328},  
	{328, 339, 330},  
	{328, 330, 319},  
	{330, 341, 342},  
	{330, 342, 331},  
	{331, 342, 343},  
	{331, 343, 332},  
	{332, 343, 344},  
	{332, 344, 333},  
	{333, 344, 345},  
	{333, 345, 334},  
	{334, 345, 346},  
	{334, 346, 335},  
	{335, 346, 347},  
	{335, 347, 336},  
	{336, 347, 348},  
	{336, 348, 337},  
	{337, 348, 349},  
	{337, 349, 338},  
	{338, 349, 350},  
	{338, 350, 339},  
	{339, 350, 341},  
	{339, 341, 330},  
	{341, 352, 353},  
	{341, 353, 342},  
	{342, 353, 354},  
	{342, 354, 343},  
	{343, 354, 355},  
	{343, 355, 344},  
	{344, 355, 356},  
	{344, 356, 345},  
	{345, 356, 357},  
	{345, 357, 346},  
	{346, 357, 358},  
	{346, 358, 347},  
	{347, 358, 359},  
	{347, 359, 348},  
	{348, 359, 360},  
	{348, 360, 349},  
	{349, 360, 361},  
	{349, 361, 350},  
	{350, 361, 352},  
	{350, 352, 341},  
	{352, 363, 364},  
	{352, 364, 353},  
	{353, 364, 365},  
	{353, 365, 354},  
	{354, 365, 366},  
	{354, 366, 355},  
	{355, 366, 367},  
	{355, 367, 356},  
	{356, 367, 368},  
	{356, 368, 357},  
	{357, 368, 369},  
	{357, 369, 358},  
	{358, 369, 370},  
	{358, 370, 359},  
	{359, 370, 371},  
	{359, 371, 360},  
	{360, 371, 372},  
	{360, 372, 361},  
	{361, 372, 363},  
	{361, 363, 352},  
	{363, 374, 375},  
	{363, 375, 364},  
	{364, 375, 376},  
	{364, 376, 365},  
	{365, 376, 377},  
	{365, 377, 366},  
	{366, 377, 378},  
	{366, 378, 367},  
	{367, 378, 379},  
	{367, 379, 368},  
	{368, 379, 380},  
	{368, 380, 369},  
	{369, 380, 381},  
	{369, 381, 370},  
	{370, 381, 382},  
	{370, 382, 371},  
	{371, 382, 383},  
	{371, 383, 372},  
	{372, 383, 374},  
	{372, 374, 363},  
	{374, 385, 386},  
	{374, 386, 375},  
	{375, 386, 387},  
	{375, 387, 376},  
	{376, 387, 388},  
	{376, 388, 377},  
	{377, 388, 389},  
	{377, 389, 378},  
	{378, 389, 390},  
	{378, 390, 379},  
	{379, 390, 391},  
	{379, 391, 380},  
	{380, 391, 392},  
	{380, 392, 381},  
	{381, 392, 393},  
	{381, 393, 382},  
	{382, 393, 394},  
	{382, 394, 383},  
	{383, 394, 385},  
	{383, 385, 374},  
	{385, 396, 397},  
	{385, 397, 386},  
	{386, 397, 398},  
	{386, 398, 387},  
	{387, 398, 399},  
	{387, 399, 388},  
	{388, 399, 400},  
	{388, 400, 389},  
	{389, 400, 401},  
	{389, 401, 390},  
	{390, 401, 402},  
	{390, 402, 391},  
	{391, 402, 403},  
	{391, 403, 392},  
	{392, 403, 404},  
	{392, 404, 393},  
	{393, 404, 405},  
	{393, 405, 394},  
	{394, 405, 396},  
	{394, 396, 385},  
	{396, 407, 408},  
	{396, 408, 397},  
	{397, 408, 409},  
	{397, 409, 398},  
	{398, 409, 410},  
	{398, 410, 399},  
	{399, 410, 411},  
	{399, 411, 400},  
	{400, 411, 412},  
	{400, 412, 401},  
	{401, 412, 413},  
	{401, 413, 402},  
	{402, 413, 414},  
	{402, 414, 403},  
	{403, 414, 415},  
	{403, 415, 404},  
	{404, 415, 416},  
	{404, 416, 405},  
	{405, 416, 407},  
	{405, 407, 396},  
	{407, 418, 419},  
	{407, 419, 408},  
	{408, 419, 420},  
	{408, 420, 409},  
	{409, 420, 421},  
	{409, 421, 410},  
	{410, 421, 422},  
	{410, 422, 411},  
	{411, 422, 423},  
	{411, 423, 412},  
	{412, 423, 424},  
	{412, 424, 413},  
	{413, 424, 425},  
	{413, 425, 414},  
	{414, 425, 426},  
	{414, 426, 415},  
	{415, 426, 427},  
	{415, 427, 416},  
	{416, 427, 418},  
	{416, 418, 407},  
	{418, 429, 430},  
	{418, 430, 419},  
	{419, 430, 431},  
	{419, 431, 420},  
	{420, 431, 432},  
	{420, 432, 421},  
	{421, 432, 433},  
	{421, 433, 422},  
	{422, 433, 434},  
	{422, 434, 423},  
	{423, 434, 435},  
	{423, 435, 424},  
	{424, 435, 436},  
	{424, 436, 425},  
	{425, 436, 437},  
	{425, 437, 426},  
	{426, 437, 438},  
	{426, 438, 427},  
	{427, 438, 429},  
	{427, 429, 418},  
	{429, 440, 441},  
	{429, 441, 430},  
	{430, 441, 442},  
	{430, 442, 431},  
	{431, 442, 443},  
	{431, 443, 432},  
	{432, 443, 444},  
	{432, 444, 433},  
	{433, 444, 445},  
	{433, 445, 434},  
	{434, 445, 446},  
	{434, 446, 435},  
	{435, 446, 447},  
	{435, 447, 436},  
	{436, 447, 448},  
	{436, 448, 437},  
	{437, 448, 449},  
	{437, 449, 438},  
	{438, 449, 440},  
	{438, 440, 429},  
	{440, 451, 452},  
	{440, 452, 441},  
	{441, 452, 453},  
	{441, 453, 442},  
	{442, 453, 454},  
	{442, 454, 443},  
	{443, 454, 455},  
	{443, 455, 444},  
	{444, 455, 456},  
	{444, 456, 445},  
	{445, 456, 457},  
	{445, 457, 446},  
	{446, 457, 458},  
	{446, 458, 447},  
	{447, 458, 459},  
	{447, 459, 448},  
	{448, 459, 460},  
	{448, 460, 449},  
	{449, 460, 451},  
	{449, 451, 440},  
	{451, 462, 463},  
	{451, 463, 452},  
	{452, 463, 464},  
	{452, 464, 453},  
	{453, 464, 465},  
	{453, 465, 454},  
	{454, 465, 466},  
	{454, 466, 455},  
	{455, 466, 467},  
	{455, 467, 456},  
	{456, 467, 468},  
	{456, 468, 457},  
	{457, 468, 469},  
	{457, 469, 458},  
	{458, 469, 470},  
	{458, 470, 459},  
	{459, 470, 471},  
	{459, 471, 460},  
	{460, 471, 462},  
	{460, 462, 451},  
	{462, 473, 474},  
	{462, 474, 463},  
	{463, 474, 475},  
	{463, 475, 464},  
	{464, 475, 476},  
	{464, 476, 465},  
	{465, 476, 477},  
	{465, 477, 466},  
	{466, 477, 478},  
	{466, 478, 467},  
	{467, 478, 479},  
	{467, 479, 468},  
	{468, 479, 480},  
	{468, 480, 469},  
	{469, 480, 481},  
	{469, 481, 470},  
	{470, 481, 482},  
	{470, 482, 471},  
	{471, 482, 473},  
	{471, 473, 462},  
	{473, 484, 485},  
	{473, 485, 474},  
	{474, 485, 486},  
	{474, 486, 475},  
	{475, 486, 487},  
	{475, 487, 476},  
	{476, 487, 488},  
	{476, 488, 477},  
	{477, 488, 489},  
	{477, 489, 478},  
	{478, 489, 490},  
	{478, 490, 479},  
	{479, 490, 491},  
	{479, 491, 480},  
	{480, 491, 492},  
	{480, 492, 481},  
	{481, 492, 493},  
	{481, 493, 482},  
	{482, 493, 484},  
	{482, 484, 473},  
	{484, 495, 496},  
	{484, 496, 485},  
	{485, 496, 497},  
	{485, 497, 486},  
	{486, 497, 498},  
	{486, 498, 487},  
	{487, 498, 499},  
	{487, 499, 488},  
	{488, 499, 500},  
	{488, 500, 489},  
	{489, 500, 501},  
	{489, 501, 490},  
	{490, 501, 502},  
	{490, 502, 491},  
	{491, 502, 503},  
	{491, 503, 492},  
	{492, 503, 504},  
	{492, 504, 493},  
	{493, 504, 495},  
	{493, 495, 484},  
	{495, 506, 507},  
	{495, 507, 496},  
	{496, 507, 508},  
	{496, 508, 497},  
	{497, 508, 509},  
	{497, 509, 498},  
	{498, 509, 510},  
	{498, 510, 499},  
	{499, 510, 511},  
	{499, 511, 500},  
	{500, 511, 512},  
	{500, 512, 501},  
	{501, 512, 513},  
	{501, 513, 502},  
	{502, 513, 514},  
	{502, 514, 503},  
	{503, 514, 515},  
	{503, 515, 504},  
	{504, 515, 506},  
	{504, 506, 495},  
	{506, 517, 518},  
	{506, 518, 507},  
	{507, 518, 519},  
	{507, 519, 508},  
	{508, 519, 520},  
	{508, 520, 509},  
	{509, 520, 521},  
	{509, 521, 510},  
	{510, 521, 522},  
	{510, 522, 511},  
	{511, 522, 523},  
	{511, 523, 512},  
	{512, 523, 524},  
	{512, 524, 513},  
	{513, 524, 525},  
	{513, 525, 514},  
	{514, 525, 526},  
	{514, 526, 515},  
	{515, 526, 517},  
	{515, 517, 506},  
	{517, 528, 529},  
	{517, 529, 518},  
	{518, 529, 530},  
	{518, 530, 519},  
	{519, 530, 531},  
	{519, 531, 520},  
	{520, 531, 532},  
	{520, 532, 521},  
	{521, 532, 533},  
	{521, 533, 522},  
	{522, 533, 534},  
	{522, 534, 523},  
	{523, 534, 535},  
	{523, 535, 524},  
	{524, 535, 536},  
	{524, 536, 525},  
	{525, 536, 537},  
	{525, 537, 526},  
	{526, 537, 528},  
	{526, 528, 517},  
	{528, 539, 540},  
	{528, 540, 529},  
	{529, 540, 541},  
	{529, 541, 530},  
	{530, 541, 542},  
	{530, 542, 531},  
	{531, 542, 543},  
	{531, 543, 532},  
	{532, 543, 544},  
	{532, 544, 533},  
	{533, 544, 545},  
	{533, 545, 534},  
	{534, 545, 546},  
	{534, 546, 535},  
	{535, 546, 547},  
	{535, 547, 536},  
	{536, 547, 548},  
	{536, 548, 537},  
	{537, 548, 539},  
	{537, 539, 528},  
	{539, 550, 551},  
	{539, 551, 540},  
	{540, 551, 552},  
	{540, 552, 541},  
	{541, 552, 553},  
	{541, 553, 542},  
	{542, 553, 554},  
	{542, 554, 543},  
	{543, 554, 555},  
	{543, 555, 544},  
	{544, 555, 556},  
	{544, 556, 545},  
	{545, 556, 557},  
	{545, 557, 546},  
	{546, 557, 558},  
	{546, 558, 547},  
	{547, 558, 559},  
	{547, 559, 548},  
	{548, 559, 550},  
	{548, 550, 539},  
	{550, 561, 562},  
	{550, 562, 551},  
	{551, 562, 563},  
	{551, 563, 552},  
	{552, 563, 564},  
	{552, 564, 553},  
	{553, 564, 565},  
	{553, 565, 554},  
	{554, 565, 566},  
	{554, 566, 555},  
	{555, 566, 567},  
	{555, 567, 556},  
	{556, 567, 568},  
	{556, 568, 557},  
	{557, 568, 569},  
	{557, 569, 558},  
	{558, 569, 570},  
	{558, 570, 559},  
	{559, 570, 561},  
	{559, 561, 550},  
	{561, 572, 573},  
	{561, 573, 562},  
	{562, 573, 574},  
	{562, 574, 563},  
	{563, 574, 575},  
	{563, 575, 564},  
	{564, 575, 576},  
	{564, 576, 565},  
	{565, 576, 577},  
	{565, 577, 566},  
	{566, 577, 578},  
	{566, 578, 567},  
	{567, 578, 579},  
	{567, 579, 568},  
	{568, 579, 580},  
	{568, 580, 569},  
	{569, 580, 581},  
	{569, 581, 570},  
	{570, 581, 572},  
	{570, 572, 561},  
	{572, 583, 584},  
	{572, 584, 573},  
	{573, 584, 585},  
	{573, 585, 574},  
	{574, 585, 586},  
	{574, 586, 575},  
	{575, 586, 587},  
	{575, 587, 576},  
	{576, 587, 588},  
	{576, 588, 577},  
	{577, 588, 589},  
	{577, 589, 578},  
	{578, 589, 590},  
	{578, 590, 579},  
	{579, 590, 591},  
	{579, 591, 580},  
	{580, 591, 592},  
	{580, 592, 581},  
	{581, 592, 583},  
	{581, 583, 572},  
	{583, 594, 595},  
	{583, 595, 584},  
	{584, 595, 596},  
	{584, 596, 585},  
	{585, 596, 597},  
	{585, 597, 586},  
	{586, 597, 598},  
	{586, 598, 587},  
	{587, 598, 599},  
	{587, 599, 588},  
	{588, 599, 600},  
	{588, 600, 589},  
	{589, 600, 601},  
	{589, 601, 590},  
	{590, 601, 602},  
	{590, 602, 591},  
	{591, 602, 603},  
	{591, 603, 592},  
	{592, 603, 594},  
	{592, 594, 583},  
	{594, 605, 606},  
	{594, 606, 595},  
	{595, 606, 607},  
	{595, 607, 596},  
	{596, 607, 608},  
	{596, 608, 597},  
	{597, 608, 609},  
	{597, 609, 598},  
	{598, 609, 610},  
	{598, 610, 599},  
	{599, 610, 611},  
	{599, 611, 600},  
	{600, 611, 612},  
	{600, 612, 601},  
	{601, 612, 613},  
	{601, 613, 602},  
	{602, 613, 614},  
	{602, 614, 603},  
	{603, 614, 605},  
	{603, 605, 594},  
	{605, 616, 617},  
	{605, 617, 606},  
	{606, 617, 618},  
	{606, 618, 607},  
	{607, 618, 619},  
	{607, 619, 608},  
	{608, 619, 620},  
	{608, 620, 609},  
	{609, 620, 621},  
	{609, 621, 610},  
	{610, 621, 622},  
	{610, 622, 611},  
	{611, 622, 623},  
	{611, 623, 612},  
	{612, 623, 624},  
	{612, 624, 613},  
	{613, 624, 625},  
	{613, 625, 614},  
	{614, 625, 616},  
	{614, 616, 605},  
	{616, 627, 628},  
	{616, 628, 617},  
	{617, 628, 629},  
	{617, 629, 618},  
	{618, 629, 630},  
	{618, 630, 619},  
	{619, 630, 631},  
	{619, 631, 620},  
	{620, 631, 632},  
	{620, 632, 621},  
	{621, 632, 633},  
	{621, 633, 622},  
	{622, 633, 634},  
	{622, 634, 623},  
	{623, 634, 635},  
	{623, 635, 624},  
	{624, 635, 636},  
	{624, 636, 625},  
	{625, 636, 627},  
	{625, 627, 616},  
	{627, 638, 639},  
	{627, 639, 628},  
	{628, 639, 640},  
	{628, 640, 629},  
	{629, 640, 641},  
	{629, 641, 630},  
	{630, 641, 642},  
	{630, 642, 631},  
	{631, 642, 643},  
	{631, 643, 632},  
	{632, 643, 644},  
	{632, 644, 633},  
	{633, 644, 645},  
	{633, 645, 634},  
	{634, 645, 646},  
	{634, 646, 635},  
	{635, 646, 647},  
	{635, 647, 636},  
	{636, 647, 638},  
	{636, 638, 627},  
	{638, 649, 650},  
	{638, 650, 639},  
	{639, 650, 651},  
	{639, 651, 640},  
	{640, 651, 652},  
	{640, 652, 641},  
	{641, 652, 653},  
	{641, 653, 642},  
	{642, 653, 654},  
	{642, 654, 643},  
	{643, 654, 655},  
	{643, 655, 644},  
	{644, 655, 656},  
	{644, 656, 645},  
	{645, 656, 657},  
	{645, 657, 646},  
	{646, 657, 658},  
	{646, 658, 647},  
	{647, 658, 649},  
	{647, 649, 638},  
	{649, 660, 661},  
	{649, 661, 650},  
	{650, 661, 662},  
	{650, 662, 651},  
	{651, 662, 663},  
	{651, 663, 652},  
	{652, 663, 664},  
	{652, 664, 653},  
	{653, 664, 665},  
	{653, 665, 654},  
	{654, 665, 666},  
	{654, 666, 655},  
	{655, 666, 667},  
	{655, 667, 656},  
	{656, 667, 668},  
	{656, 668, 657},  
	{657, 668, 669},  
	{657, 669, 658},  
	{658, 669, 660},  
	{658, 660, 649},  
	{660, 671, 672},  
	{660, 672, 661},  
	{661, 672, 673},  
	{661, 673, 662},  
	{662, 673, 674},  
	{662, 674, 663},  
	{663, 674, 675},  
	{663, 675, 664},  
	{664, 675, 676},  
	{664, 676, 665},  
	{665, 676, 677},  
	{665, 677, 666},  
	{666, 677, 678},  
	{666, 678, 667},  
	{667, 678, 679},  
	{667, 679, 668},  
	{668, 679, 680},  
	{668, 680, 669},  
	{669, 680, 671},  
	{669, 671, 660},  
	{671, 682, 683},  
	{671, 683, 672},  
	{672, 683, 684},  
	{672, 684, 673},  
	{673, 684, 685},  
	{673, 685, 674},  
	{674, 685, 686},  
	{674, 686, 675},  
	{675, 686, 687},  
	{675, 687, 676},  
	{676, 687, 688},  
	{676, 688, 677},  
	{677, 688, 689},  
	{677, 689, 678},  
	{678, 689, 690},  
	{678, 690, 679},  
	{679, 690, 691},  
	{679, 691, 680},  
	{680, 691, 682},  
	{680, 682, 671},  
	{682, 693, 694},  
	{682, 694, 683},  
	{683, 694, 695},  
	{683, 695, 684},  
	{684, 695, 696},  
	{684, 696, 685},  
	{685, 696, 697},  
	{685, 697, 686},  
	{686, 697, 698},  
	{686, 698, 687},  
	{687, 698, 699},  
	{687, 699, 688},  
	{688, 699, 700},  
	{688, 700, 689},  
	{689, 700, 701},  
	{689, 701, 690},  
	{690, 701, 702},  
	{690, 702, 691},  
	{691, 702, 693},  
	{691, 693, 682},  
	{693, 704, 705},  
	{693, 705, 694},  
	{694, 705, 706},  
	{694, 706, 695},  
	{695, 706, 707},  
	{695, 707, 696},  
	{696, 707, 708},  
	{696, 708, 697},  
	{697, 708, 709},  
	{697, 709, 698},  
	{698, 709, 710},  
	{698, 710, 699},  
	{699, 710, 711},  
	{699, 711, 700},  
	{700, 711, 712},  
	{700, 712, 701},  
	{701, 712, 713},  
	{701, 713, 702},  
	{702, 713, 704},  
	{702, 704, 693},  
	{704, 715, 716},  
	{704, 716, 705},  
	{705, 716, 717},  
	{705, 717, 706},  
	{706, 717, 718},  
	{706, 718, 707},  
	{707, 718, 719},  
	{707, 719, 708},  
	{708, 719, 720},  
	{708, 720, 709},  
	{709, 720, 721},  
	{709, 721, 710},  
	{710, 721, 722},  
	{710, 722, 711},  
	{711, 722, 723},  
	{711, 723, 712},  
	{712, 723, 724},  
	{712, 724, 713},  
	{713, 724, 715},  
	{713, 715, 704},  
	{715, 726, 727},  
	{715, 727, 716},  
	{716, 727, 728},  
	{716, 728, 717},  
	{717, 728, 729},  
	{717, 729, 718},  
	{718, 729, 730},  
	{718, 730, 719},  
	{719, 730, 731},  
	{719, 731, 720},  
	{720, 731, 732},  
	{720, 732, 721},  
	{721, 732, 733},  
	{721, 733, 722},  
	{722, 733, 734},  
	{722, 734, 723},  
	{723, 734, 735},  
	{723, 735, 724},  
	{724, 735, 726},  
	{724, 726, 715},  
	{726, 737, 738},  
	{726, 738, 727},  
	{727, 738, 739},  
	{727, 739, 728},  
	{728, 739, 740},  
	{728, 740, 729},  
	{729, 740, 741},  
	{729, 741, 730},  
	{730, 741, 742},  
	{730, 742, 731},  
	{731, 742, 743},  
	{731, 743, 732},  
	{732, 743, 744},  
	{732, 744, 733},  
	{733, 744, 745},  
	{733, 745, 734},  
	{734, 745, 746},  
	{734, 746, 735},  
	{735, 746, 737},  
	{735, 737, 726},  
	{737, 748, 749},  
	{737, 749, 738},  
	{738, 749, 750},  
	{738, 750, 739},  
	{739, 750, 751},  
	{739, 751, 740},  
	{740, 751, 752},  
	{740, 752, 741},  
	{741, 752, 753},  
	{741, 753, 742},  
	{742, 753, 754},  
	{742, 754, 743},  
	{743, 754, 755},  
	{743, 755, 744},  
	{744, 755, 756},  
	{744, 756, 745},  
	{745, 756, 757},  
	{745, 757, 746},  
	{746, 757, 748},  
	{746, 748, 737},  
	{748, 759, 760},  
	{748, 760, 749},  
	{749, 760, 761},  
	{749, 761, 750},  
	{750, 761, 762},  
	{750, 762, 751},  
	{751, 762, 763},  
	{751, 763, 752},  
	{752, 763, 764},  
	{752, 764, 753},  
	{753, 764, 765},  
	{753, 765, 754},  
	{754, 765, 766},  
	{754, 766, 755},  
	{755, 766, 767},  
	{755, 767, 756},  
	{756, 767, 768},  
	{756, 768, 757},  
	{757, 768, 759},  
	{757, 759, 748},  
	{759, 770, 771},  
	{759, 771, 760},  
	{760, 771, 772},  
	{760, 772, 761},  
	{761, 772, 773},  
	{761, 773, 762},  
	{762, 773, 774},  
	{762, 774, 763},  
	{763, 774, 775},  
	{763, 775, 764},  
	{764, 775, 776},  
	{764, 776, 765},  
	{765, 776, 777},  
	{765, 777, 766},  
	{766, 777, 778},  
	{766, 778, 767},  
	{767, 778, 779},  
	{767, 779, 768},  
	{768, 779, 770},  
	{768, 770, 759},  
	{770, 781, 782},  
	{770, 782, 771},  
	{771, 782, 783},  
	{771, 783, 772},  
	{772, 783, 784},  
	{772, 784, 773},  
	{773, 784, 785},  
	{773, 785, 774},  
	{774, 785, 786},  
	{774, 786, 775},  
	{775, 786, 787},  
	{775, 787, 776},  
	{776, 787, 788},  
	{776, 788, 777},  
	{777, 788, 789},  
	{777, 789, 778},  
	{778, 789, 790},  
	{778, 790, 779},  
	{779, 790, 781},  
	{779, 781, 770},  
	{781, 792, 793},  
	{781, 793, 782},  
	{782, 793, 794},  
	{782, 794, 783},  
	{783, 794, 795},  
	{783, 795, 784},  
	{784, 795, 796},  
	{784, 796, 785},  
	{785, 796, 797},  
	{785, 797, 786},  
	{786, 797, 798},  
	{786, 798, 787},  
	{787, 798, 799},  
	{787, 799, 788},  
	{788, 799, 800},  
	{788, 800, 789},  
	{789, 800, 801},  
	{789, 801, 790},  
	{790, 801, 792},  
	{790, 792, 781},  
	{792, 803, 804},  
	{792, 804, 793},  
	{793, 804, 805},  
	{793, 805, 794},  
	{794, 805, 806},  
	{794, 806, 795},  
	{795, 806, 807},  
	{795, 807, 796},  
	{796, 807, 808},  
	{796, 808, 797},  
	{797, 808, 809},  
	{797, 809, 798},  
	{798, 809, 810},  
	{798, 810, 799},  
	{799, 810, 811},  
	{799, 811, 800},  
	{800, 811, 812},  
	{800, 812, 801},  
	{801, 812, 803},  
	{801, 803, 792},  
	{803, 814, 815},  
	{803, 815, 804},  
	{804, 815, 816},  
	{804, 816, 805},  
	{805, 816, 817},  
	{805, 817, 806},  
	{806, 817, 818},  
	{806, 818, 807},  
	{807, 818, 819},  
	{807, 819, 808},  
	{808, 819, 820},  
	{808, 820, 809},  
	{809, 820, 821},  
	{809, 821, 810},  
	{810, 821, 822},  
	{810, 822, 811},  
	{811, 822, 823},  
	{811, 823, 812},  
	{812, 823, 814},  
	{812, 814, 803},  
	{814, 825, 826},  
	{814, 826, 815},  
	{815, 826, 827},  
	{815, 827, 816},  
	{816, 827, 828},  
	{816, 828, 817},  
	{817, 828, 829},  
	{817, 829, 818},  
	{818, 829, 830},  
	{818, 830, 819},  
	{819, 830, 831},  
	{819, 831, 820},  
	{820, 831, 832},  
	{820, 832, 821},  
	{821, 832, 833},  
	{821, 833, 822},  
	{822, 833, 834},  
	{822, 834, 823},  
	{823, 834, 825},  
	{823, 825, 814},  
	{825, 836, 837},  
	{825, 837, 826},  
	{826, 837, 838},  
	{826, 838, 827},  
	{827, 838, 839},  
	{827, 839, 828},  
	{828, 839, 840},  
	{828, 840, 829},  
	{829, 840, 841},  
	{829, 841, 830},  
	{830, 841, 842},  
	{830, 842, 831},  
	{831, 842, 843},  
	{831, 843, 832},  
	{832, 843, 844},  
	{832, 844, 833},  
	{833, 844, 845},  
	{833, 845, 834},  
	{834, 845, 836},  
	{834, 836, 825},  
	{836, 847, 848},  
	{836, 848, 837},  
	{837, 848, 849},  
	{837, 849, 838},  
	{838, 849, 850},  
	{838, 850, 839},  
	{839, 850, 851},  
	{839, 851, 840},  
	{840, 851, 852},  
	{840, 852, 841},  
	{841, 852, 853},  
	{841, 853, 842},  
	{842, 853, 854},  
	{842, 854, 843},  
	{843, 854, 855},  
	{843, 855, 844},  
	{844, 855, 856},  
	{844, 856, 845},  
	{845, 856, 847},  
	{845, 847, 836},  
	{847, 858, 859},  
	{847, 859, 848},  
	{848, 859, 860},  
	{848, 860, 849},  
	{849, 860, 861},  
	{849, 861, 850},  
	{850, 861, 862},  
	{850, 862, 851},  
	{851, 862, 863},  
	{851, 863, 852},  
	{852, 863, 864},  
	{852, 864, 853},  
	{853, 864, 865},  
	{853, 865, 854},  
	{854, 865, 866},  
	{854, 866, 855},  
	{855, 866, 867},  
	{855, 867, 856},  
	{856, 867, 858},  
	{856, 858, 847},  
	{858, 869, 870},  
	{858, 870, 859},  
	{859, 870, 871},  
	{859, 871, 860},  
	{860, 871, 872},  
	{860, 872, 861},  
	{861, 872, 873},  
	{861, 873, 862},  
	{862, 873, 874},  
	{862, 874, 863},  
	{863, 874, 875},  
	{863, 875, 864},  
	{864, 875, 876},  
	{864, 876, 865},  
	{865, 876, 877},  
	{865, 877, 866},  
	{866, 877, 878},  
	{866, 878, 867},  
	{867, 878, 869},  
	{867, 869, 858},  
	{869, 0, 1},  
	{869, 1, 870},  
	{870, 1, 2},  
	{870, 2, 871},  
	{871, 2, 3},  
	{871, 3, 872},  
	{872, 3, 4},  
	{872, 4, 873},  
	{873, 4, 5},  
	{873, 5, 874},  
	{874, 5, 6},  
	{874, 6, 875},  
	{875, 6, 7},  
	{875, 7, 876},  
	{876, 7, 8},  
	{876, 8, 877},  
	{877, 8, 9},  
	{877, 9, 878},  
	{878, 9, 0},  
	{878, 0, 869} 
}; 
 
 
GLSObject::GLSObject() :  
	m_pFaceNormals (NULL), 
	m_pVertNormals (NULL), 
	m_pStorage (NULL) 
{ 
	// The object mesh is statically defined, just keep number of faces and vertices on hand 
	m_nbFaces = sizeof(OBJ_FACES) / sizeof(OBJ_FACES[0]); 
	m_nbVertices = sizeof(OBJ_VERTICES) / sizeof(OBJ_VERTICES[0]); 
} 
 
 
GLSObject::~GLSObject() 
{ 
	if (m_pFaceNormals) 
		delete [] m_pFaceNormals; 
 
	if (m_pVertNormals) 
		delete [] m_pVertNormals; 
 
	if (m_pStorage) 
		delete [] m_pStorage; 
} 
 
 
 
void GLSObject::Draw (WORD wFlags) 
{ 
	// Compute and store face normals if necessary 
	if ((m_pFaceNormals == NULL) && (wFlags & (DF_FLAT|DF_SMOOTH))) 
	{ 
		m_pFaceNormals = new GLpoint[m_nbFaces]; 
		if (m_pFaceNormals) 
		{ 
			GLFace * pFace = (GLFace *)&OBJ_FACES; 
			for (int ix = 0; ix < m_nbFaces; ix++, pFace++) 
				ComputeFaceNormal(&OBJ_VERTICES[pFace->v1], &OBJ_VERTICES[pFace->v2], &OBJ_VERTICES[pFace->v3], &m_pFaceNormals[ix]); 
		} 
	} 
 
	// Compute and store vertex normals if necessary 
	if (m_pFaceNormals && (m_pVertNormals == NULL) && (wFlags & DF_SMOOTH)) 
	{ 
		m_pVertNormals = new GLpoint[m_nbFaces * 3]; 
		if (m_pVertNormals) 
			for (int ix = 0; ix < m_nbVertices; ix++) 
				ComputeVerticeNormal(ix); 
	} 
 
	// Draw mesh 
	glBegin(GL_TRIANGLES); 
	GLFace * pFace = (GLFace *)&OBJ_FACES; 
	for (int ix = 0; ix < m_nbFaces; ix++, pFace++) 
	{ 
		if (m_pFaceNormals) 
			if (wFlags & DF_FLAT) 
				// Flat shading 
				glNormal3fv((float *)&m_pFaceNormals[ix]); 
			else 
				if (m_pVertNormals && (wFlags & DF_SMOOTH)) 
					// Smooth shading 
					glNormal3fv((float *)&m_pVertNormals[pFace->v1]); 
 
		glVertex3fv((float *)&OBJ_VERTICES[pFace->v1]); 
 
		if (m_pVertNormals && (wFlags & DF_SMOOTH)) 
			// Smooth shading 
			glNormal3fv((float *)&m_pVertNormals[pFace->v2]); 
 
		glVertex3fv((float *)&OBJ_VERTICES[pFace->v2]); 
 
		if (m_pVertNormals && (wFlags & DF_SMOOTH)) 
			// Smooth shading 
			glNormal3fv((float *)&m_pVertNormals[pFace->v3]); 
 
		glVertex3fv((float *)&OBJ_VERTICES[pFace->v3]);	 
	} 
	glEnd(); 
 
	// Draw face or vertex normals if the shift key is down 
	if (GetAsyncKeyState(VK_SHIFT) < 0) 
	{ 
		GLboolean bLightning = glIsEnabled(GL_LIGHTING); 
		glDisable(GL_LIGHTING); 
 
		glColor3d(1, 1, 0); 
		glBegin(GL_LINES); 
		GLFace * pFace = (GLFace *)&OBJ_FACES; 
		for (int ix = 0; ix < m_nbFaces; ix++, pFace++) 
		{ 
			#define t 10 
			if ((wFlags & DF_SMOOTH) && m_pVertNormals) 
			{ 
				// Show vertices normals 
				GLpoint pt = OBJ_VERTICES[pFace->v1]; 
				glVertex3d(pt.x, pt.y, pt.z); 
				glVertex3d(pt.x + (m_pVertNormals[pFace->v1].x * t), pt.y + (m_pVertNormals[pFace->v1].y * t), pt.z + (m_pVertNormals[pFace->v1].z * t)); 
 
				pt = OBJ_VERTICES[pFace->v2]; 
				glVertex3d(pt.x, pt.y, pt.z); 
				glVertex3d(pt.x + (m_pVertNormals[pFace->v2].x * t), pt.y + (m_pVertNormals[pFace->v2].y * t), pt.z + (m_pVertNormals[pFace->v2].z * t)); 
 
				pt = OBJ_VERTICES[pFace->v3]; 
				glVertex3d(pt.x, pt.y, pt.z); 
				glVertex3d(pt.x + (m_pVertNormals[pFace->v3].x * t), pt.y + (m_pVertNormals[pFace->v3].y * t), pt.z + (m_pVertNormals[pFace->v3].z * t)); 
			} 
			else 
				if ((wFlags & DF_FLAT) && m_pFaceNormals) 
				{ 
					// Show face normal 
					GLpoint p; 
					p.x = (OBJ_VERTICES[pFace->v1].x + OBJ_VERTICES[pFace->v2].x + OBJ_VERTICES[pFace->v3].x) / 3; 
					p.y = (OBJ_VERTICES[pFace->v1].y + OBJ_VERTICES[pFace->v2].y + OBJ_VERTICES[pFace->v3].y) / 3; 
					p.z = (OBJ_VERTICES[pFace->v1].z + OBJ_VERTICES[pFace->v2].z + OBJ_VERTICES[pFace->v3].z) / 3; 
					glVertex3d(p.x, p.y, p.z); 
					glVertex3d(p.x + (m_pFaceNormals[ix].x * t), p.y + (m_pFaceNormals[ix].y * t), p.z + (m_pFaceNormals[ix].z * t)); 
				} 
		} 
		glEnd(); 
 
		if (bLightning) 
			glEnable(GL_LIGHTING); 
	} 
} 
 
 
void GLSObject::ComputeVerticeNormal (int ixVertice) 
{ 
	// Allocate a temporary storage to store adjacent faces indexes 
	if (!m_pStorage) 
	{ 
		m_pStorage = new int[m_nbFaces]; 
		if (!m_pStorage) 
			return; 
	} 
 
	// Store each face which has an intersection with the ixVertice'th vertex 
	int nbAdjFaces = 0; 
	GLFace * pFace = (GLFace *)&OBJ_FACES; 
	for (int ix = 0; ix < m_nbFaces; ix++, pFace++) 
		if (pFace->v1 == ixVertice) 
			m_pStorage[nbAdjFaces++] = ix; 
		else 
			if (pFace->v2 == ixVertice) 
				m_pStorage[nbAdjFaces++] = ix; 
			else 
				if (pFace->v3 == ixVertice) 
					m_pStorage[nbAdjFaces++] = ix; 
 
	// Average all adjacent faces normals to get the vertex normal 
	GLpoint pn; 
	pn.x = pn.y = pn.z = 0; 
	for (int jx = 0; jx < nbAdjFaces; jx++) 
	{ 
		int ixFace = m_pStorage[jx]; 
		pn.x += m_pFaceNormals[ixFace].x; 
		pn.y += m_pFaceNormals[ixFace].y; 
		pn.z += m_pFaceNormals[ixFace].z; 
	} 
	pn.x /= nbAdjFaces; 
	pn.y /= nbAdjFaces; 
	pn.z /= nbAdjFaces; 
 
	// Normalize the vertex normal 
	VectorNormalize(&pn, &m_pVertNormals[ixVertice]); 
}