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]);
}