odin-blend2d

Odin bindings to Blend2D
Log | Files | Refs | README | LICENSE

shape_data.cpp (73229B)


      1 // This file is part of Blend2D project <https://blend2d.com>
      2 //
      3 // See LICENSE.md for license and copyright information
      4 // SPDX-License-Identifier: Zlib
      5 
      6 #include "shape_data.h"
      7 
      8 /*
      9 // The following code can be used to dump any BLPath to a data compatible with shape data.
     10 static void dumpShapeData(const BLPath& p) noexcept {
     11   BLString command_string;
     12   BLString vector_string;
     13 
     14   BLPathView view = p.view();
     15   size_t size = view.size;
     16   const uint8_t* command_data = view.command_data;
     17   const BLPoint* vertex_data = view.vertex_data;
     18 
     19   size_t i = 0;
     20   while (i < size) {
     21     uint8_t cmd = command_data[i];
     22 
     23     switch (cmd) {
     24       case BL_PATH_CMD_MOVE:
     25       case BL_PATH_CMD_ON:
     26         command_string.append(cmd == BL_PATH_CMD_MOVE ? 'M' : 'L');
     27 
     28         if (!vector_string.empty()) {
     29           vector_string.append(",\n");
     30         }
     31 
     32         vector_string.append_format("  %f, %f",
     33           vertex_data[i].x, vertex_data[i].y);
     34 
     35         i += 1;
     36         break;
     37 
     38       case BL_PATH_CMD_QUAD:
     39         command_string.append('Q');
     40 
     41         if (!vector_string.empty()) {
     42           vector_string.append(",\n");
     43         }
     44 
     45         vector_string.append_format("  %f, %f, %f, %f",
     46           vertex_data[i + 0].x, vertex_data[i + 0].y,
     47           vertex_data[i + 1].x, vertex_data[i + 1].y);
     48 
     49         i += 2;
     50         break;
     51 
     52       case BL_PATH_CMD_CUBIC:
     53         if (!vector_string.empty()) {
     54           vector_string.append(",\n");
     55         }
     56 
     57         command_string.append('C');
     58         vector_string.append_format("  %f, %f, %f, %f, %f, %f",
     59           vertex_data[i + 0].x, vertex_data[i + 0].y,
     60           vertex_data[i + 1].x, vertex_data[i + 1].y,
     61           vertex_data[i + 2].x, vertex_data[i + 2].y);
     62 
     63         i += 3;
     64         break;
     65 
     66       case BL_PATH_CMD_CLOSE:
     67         command_string.append("Z");
     68 
     69         i += 1;
     70         break;
     71     }
     72   }
     73 
     74   BLString data;
     75   data.append_format("constexpr char commands[] =\n  \"%s\";\n", command_string.data());
     76   data.append_format("constexpr double vertices[] = {\n%s\n};\n", vector_string.data());
     77 
     78   printf("%s\n", data.data());
     79 }
     80 */
     81 
     82 #define ARRAY_SIZE(X) uint32_t(sizeof(X) / sizeof(X[0]))
     83 
     84 namespace blbench {
     85 
     86 // Public domain.
     87 constexpr char butterfly_commands[] =
     88   "MCCCCCCLCCCCCCCCCCCCCCCCCCLLCCCCCCCCCCCCCCLLLCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCLCCLCCCCCCCCCCCCCCCCCCCCCCCCCCCCLCCCCCCCCCCCCCCLLCCCCCCCCCCCCCCCCCCCCZ";
     89 
     90 constexpr double butterfly_vertices[] = {
     91   0.996537, 0.064954,
     92   0.993752, 0.050263, 0.989116, 0.037814, 0.982760, 0.027953,
     93   0.976193, 0.017700, 0.966729, 0.009674, 0.956111, 0.005354,
     94   0.947852, 0.001955, 0.938374, 0.000230, 0.927941, 0.000230,
     95   0.924588, 0.000230, 0.921051, 0.000407, 0.917431, 0.000756,
     96   0.903445, 0.002160, 0.888782, 0.005829, 0.872604, 0.011972,
     97   0.842838, 0.023344, 0.814658, 0.040444, 0.787406, 0.056982,
     98   0.787049, 0.057198,
     99   0.779094, 0.062111, 0.770959, 0.067003, 0.763092, 0.071733,
    100   0.755616, 0.076228, 0.747885, 0.080877, 0.740322, 0.085536,
    101   0.715897, 0.100667, 0.687906, 0.118856, 0.664830, 0.143282,
    102   0.655450, 0.153337, 0.646158, 0.164412, 0.637213, 0.176198,
    103   0.628832, 0.187242, 0.620487, 0.199262, 0.612411, 0.211927,
    104   0.599025, 0.233035, 0.585902, 0.256540, 0.572296, 0.283785,
    105   0.559363, 0.309680, 0.547303, 0.336361, 0.537211, 0.359044,
    106   0.531569, 0.371160, 0.524734, 0.385013, 0.514991, 0.396163,
    107   0.515458, 0.393140, 0.516021, 0.390068, 0.516567, 0.387096,
    108   0.518222, 0.378075, 0.519933, 0.368746, 0.519220, 0.359351,
    109   0.518849, 0.353698, 0.517257, 0.347795, 0.514490, 0.341807,
    110   0.525767, 0.316394, 0.535723, 0.289763, 0.545350, 0.264009,
    111   0.549268, 0.253532, 0.553317, 0.242697, 0.557400, 0.232097,
    112   0.558269, 0.229903, 0.559129, 0.227657, 0.559961, 0.225484,
    113   0.562894, 0.217827, 0.565926, 0.209908, 0.569931, 0.202734,
    114   0.570101, 0.202412, 0.570272, 0.202089, 0.570443, 0.201765,
    115   0.573622, 0.195744, 0.576909, 0.189518, 0.577757, 0.182438,
    116   0.578339, 0.177538, 0.576559, 0.172383, 0.572995, 0.168649,
    117   0.572952, 0.168603,
    118   0.572927, 0.168664,
    119   0.571876, 0.171135, 0.571043, 0.173762, 0.570237, 0.176303,
    120   0.569698, 0.178001, 0.569141, 0.179758, 0.568523, 0.181453,
    121   0.559856, 0.207043, 0.549627, 0.232362, 0.539734, 0.256848,
    122   0.533800, 0.271536, 0.527664, 0.286723, 0.521930, 0.301809,
    123   0.520066, 0.306464, 0.518896, 0.311494, 0.517766, 0.316358,
    124   0.516331, 0.322533, 0.514848, 0.328918, 0.511928, 0.334565,
    125   0.509243, 0.339707, 0.505293, 0.343102, 0.501099, 0.343881,
    126   0.496390, 0.343827, 0.491623, 0.340706, 0.488658, 0.335735,
    127   0.485246, 0.330155, 0.483362, 0.323648, 0.481539, 0.317355,
    128   0.480411, 0.313464, 0.479246, 0.309440, 0.477730, 0.305670,
    129   0.473688, 0.295601, 0.469520, 0.285535, 0.465598, 0.276088,
    130   0.460318, 0.263417, 0.455498, 0.249775, 0.450860, 0.234382,
    131   0.450381, 0.232850, 0.449904, 0.231314, 0.449427, 0.229777,
    132   0.442988, 0.209044, 0.436330, 0.187605, 0.424264, 0.169941,
    133   0.424243, 0.169910,
    134   0.422251, 0.170903,
    135   0.422260, 0.170944,
    136   0.427099, 0.192915, 0.434511, 0.213736, 0.441800, 0.232965,
    137   0.446725, 0.245803, 0.451991, 0.258730, 0.457084, 0.271232,
    138   0.466770, 0.295008, 0.476785, 0.319592, 0.484880, 0.344614,
    139   0.484479, 0.345589, 0.483947, 0.346506, 0.483432, 0.347394,
    140   0.482759, 0.348553, 0.482064, 0.349751, 0.481652, 0.351096,
    141   0.478890, 0.358331, 0.479848, 0.366528, 0.481295, 0.374308,
    142   0.481535, 0.375769, 0.481819, 0.377267, 0.482092, 0.378715,
    143   0.483208, 0.384609, 0.484361, 0.390701, 0.483123, 0.396684,
    144   0.464551, 0.354942, 0.444111, 0.310539, 0.420513, 0.268591,
    145   0.409919, 0.249696, 0.398977, 0.231782, 0.387993, 0.215345,
    146   0.376149, 0.197621, 0.363804, 0.180939, 0.351302, 0.165762,
    147   0.335506, 0.146419, 0.320183, 0.130559, 0.304457, 0.117277,
    148   0.285094, 0.100717, 0.263209, 0.085094, 0.233498, 0.066623,
    149   0.216130, 0.055916, 0.193166, 0.042107, 0.169549, 0.030252,
    150   0.157334, 0.024158, 0.146468, 0.019259, 0.136331, 0.015277,
    151   0.124194, 0.010508, 0.112940, 0.006966, 0.101924, 0.004449,
    152   0.089957, 0.001783, 0.077226, 0.000287, 0.064083, 0.000001,
    153   0.063913, 0.000000, 0.063743, 0.000000, 0.063573, 0.000000,
    154   0.047727, 0.000000, 0.035764, 0.003718, 0.026998, 0.011369,
    155   0.018384, 0.019899, 0.013592, 0.032061, 0.010042, 0.042833,
    156   0.004378, 0.060560, 0.001059, 0.080429, 0.000178, 0.101887,
    157   -0.000434, 0.118425, 0.000530, 0.133075, 0.003124, 0.146675,
    158   0.005473, 0.158080, 0.011228, 0.167827, 0.016793, 0.177252,
    159   0.019569, 0.181954, 0.022439, 0.186816, 0.024848, 0.191819,
    160   0.028514, 0.198869, 0.031442, 0.207183, 0.034062, 0.217987,
    161   0.040758, 0.245180, 0.044408, 0.273539, 0.047938, 0.300966,
    162   0.050632, 0.321896, 0.053418, 0.343539, 0.057539, 0.364526,
    163   0.059785, 0.375450, 0.061848, 0.383680, 0.064226, 0.391211,
    164   0.067248, 0.400780, 0.070726, 0.408921, 0.074857, 0.416099,
    165   0.080169, 0.425346, 0.087823, 0.433270, 0.096990, 0.439015,
    166   0.102601, 0.442564, 0.108760, 0.445464, 0.115819, 0.447879,
    167   0.121663, 0.449879, 0.128174, 0.451550, 0.135724, 0.452987,
    168   0.148144, 0.455266, 0.160328, 0.456346, 0.170609, 0.457103,
    169   0.176430, 0.457531, 0.182358, 0.457902, 0.188090, 0.458261,
    170   0.208442, 0.459535, 0.229488, 0.460852, 0.249919, 0.464963,
    171   0.250733, 0.465151, 0.251518, 0.465456, 0.252249, 0.465763,
    172   0.244052, 0.471806, 0.235637, 0.477802, 0.227498, 0.483601,
    173   0.213265, 0.493741, 0.198547, 0.504227, 0.184513, 0.515315,
    174   0.157191, 0.536822, 0.137272, 0.556896, 0.121828, 0.578488,
    175   0.116857, 0.585609, 0.111658, 0.593254, 0.107522, 0.601548,
    176   0.107517, 0.601571,
    177   0.107229, 0.617612, 0.108009, 0.634682, 0.110046, 0.656919,
    178   0.114472, 0.703027, 0.123678, 0.747454, 0.134364, 0.796592,
    179   0.134397, 0.796741,
    180   0.142032, 0.831679, 0.149928, 0.867806, 0.161323, 0.902046,
    181   0.168637, 0.923705, 0.176050, 0.940619, 0.184650, 0.955275,
    182   0.190128, 0.964972, 0.197358, 0.973862, 0.206137, 0.981700,
    183   0.215385, 0.989861, 0.223951, 0.995206, 0.232323, 0.998040,
    184   0.236067, 0.999347, 0.240162, 0.999983, 0.244841, 0.999983,
    185   0.246773, 0.999983, 0.248772, 0.999877, 0.250954, 0.999656,
    186   0.262942, 0.998220, 0.275491, 0.993342, 0.288254, 0.985158,
    187   0.301910, 0.976633, 0.314643, 0.965047, 0.326102, 0.950719,
    188   0.341620, 0.931379, 0.355720, 0.908251, 0.370474, 0.877935,
    189   0.381824, 0.854509, 0.392204, 0.829376, 0.402205, 0.801098,
    190   0.410327, 0.778394, 0.417695, 0.753602, 0.424103, 0.727411,
    191   0.426925, 0.716082, 0.429640, 0.704514, 0.432266, 0.693326,
    192   0.436645, 0.674668, 0.441173, 0.655375, 0.446330, 0.636628,
    193   0.452661, 0.613947, 0.460882, 0.587568, 0.473848, 0.563846,
    194   0.476793, 0.577381, 0.476673, 0.591583, 0.476556, 0.605318,
    195   0.476542, 0.607014, 0.476527, 0.608767, 0.476518, 0.610487,
    196   0.476470, 0.614319, 0.476391, 0.618218, 0.476313, 0.621989,
    197   0.476063, 0.634239, 0.475803, 0.646905, 0.476596, 0.659341,
    198   0.477128, 0.667063, 0.478080, 0.676065, 0.481106, 0.684272,
    199   0.483337, 0.690191, 0.486853, 0.694657, 0.491005, 0.696847,
    200   0.493582, 0.698189, 0.496437, 0.698870, 0.499491, 0.698869,
    201   0.502595, 0.698869, 0.505815, 0.698142, 0.508803, 0.696767,
    202   0.515676, 0.693339, 0.518814, 0.685534, 0.520073, 0.681187,
    203   0.522839, 0.671664, 0.523222, 0.661301, 0.523364, 0.652336,
    204   0.523469, 0.643817, 0.523203, 0.635163, 0.522947, 0.626793,
    205   0.522661, 0.617472, 0.522365, 0.607833, 0.522580, 0.598348,
    206   0.522939, 0.586709, 0.523665, 0.574444, 0.528129, 0.563620,
    207   0.540224, 0.596614, 0.550134, 0.631187, 0.559718, 0.664623,
    208   0.560086, 0.665910,
    209   0.561636, 0.671376, 0.563206, 0.676935, 0.564725, 0.682311,
    210   0.573685, 0.714023, 0.582949, 0.746814, 0.593021, 0.778688,
    211   0.602829, 0.809554, 0.616473, 0.849915, 0.635089, 0.888377,
    212   0.642467, 0.903459, 0.649743, 0.916506, 0.657333, 0.928262,
    213   0.666111, 0.941858, 0.675091, 0.953417, 0.684786, 0.963601,
    214   0.694124, 0.973455, 0.705544, 0.981993, 0.718730, 0.988978,
    215   0.730344, 0.994940, 0.740943, 0.998413, 0.751134, 0.999595,
    216   0.753296, 0.999864, 0.755462, 1.000000, 0.757571, 1.000000,
    217   0.764286, 1.000000, 0.770528, 0.998652, 0.776124, 0.995996,
    218   0.786561, 0.991208, 0.796201, 0.982452, 0.805598, 0.969225,
    219   0.812476, 0.959519, 0.818763, 0.948102, 0.825386, 0.933294,
    220   0.836892, 0.907222, 0.845008, 0.880016, 0.851429, 0.856842,
    221   0.860333, 0.823959, 0.866557, 0.798444, 0.871610, 0.774111,
    222   0.883378, 0.718009, 0.890229, 0.659922, 0.891971, 0.601464,
    223   0.891971, 0.601449,
    224   0.891964, 0.601436,
    225   0.885844, 0.590088, 0.878517, 0.578874, 0.870186, 0.568105,
    226   0.862500, 0.558167, 0.853755, 0.548345, 0.844194, 0.538911,
    227   0.831804, 0.526844, 0.820427, 0.517254, 0.809413, 0.509593,
    228   0.803694, 0.505538, 0.797760, 0.501591, 0.792021, 0.497774,
    229   0.776458, 0.487424, 0.760368, 0.476723, 0.746737, 0.462659,
    230   0.756830, 0.461866, 0.767107, 0.461367, 0.777048, 0.460884,
    231   0.784049, 0.460544, 0.791287, 0.460192, 0.798401, 0.459740,
    232   0.825745, 0.458022, 0.850344, 0.456095, 0.874493, 0.449883,
    233   0.886652, 0.446557, 0.900634, 0.441847, 0.912144, 0.432128,
    234   0.919904, 0.425456, 0.926036, 0.415550, 0.931439, 0.400953,
    235   0.937185, 0.385330, 0.940611, 0.369085, 0.943900, 0.352426,
    236   0.944476, 0.349326, 0.945069, 0.346176, 0.945642, 0.343130,
    237   0.947313, 0.334259, 0.949041, 0.325086, 0.950540, 0.316019,
    238   0.952343, 0.304715, 0.953756, 0.293146, 0.955122, 0.281958,
    239   0.955879, 0.275752, 0.956663, 0.269335, 0.957504, 0.263038,
    240   0.961054, 0.236741, 0.965083, 0.211233, 0.975254, 0.188238,
    241   0.977302, 0.183515, 0.979523, 0.178784, 0.981670, 0.174210,
    242   0.985841, 0.165325, 0.990154, 0.156138, 0.993408, 0.146564,
    243   0.997628, 0.134251, 0.999838, 0.121996, 0.999978, 0.110139,
    244   1.000176, 0.093057, 0.999051, 0.078277, 0.996537, 0.064954
    245 };
    246 
    247 // Public domain.
    248 constexpr char fish_commands[] =
    249   "MCCCCCCCCCCCCCCZMCCCCCCCCCCCCCCCCCCCCCCCLLZMCCCCCCCCCCCCCCCCCCCCCCCLLCZMCCCZMCCCCCCCZMCCCCCCZMCCCZMCCCCCZMCCCCCCZMCCCCCCCZMCCCCLLCCLLCCCZMCCLLCZMCCCCLLCCZMCCCCCZMLLCCLLCCZMCCCCCZMCCCCZMCCCLLCCCCZMCLLLLCCZMCCCCCCZMCCCCCCZMCCCLLCZMCCCCCZMCCCCCCCZMCCCCCCCZMCCCCLLCZMCCCCCCCCCZMCCCCCCCZMCCCCCCZMCCCCCCCZMCCCCCZMCCCCZMCLLCCCZMCCCCCZMCCLLZMCCCCCZMCCCCZMCCCCZ";
    250 
    251 constexpr double fish_vertices[] = {
    252   0.437004, 0.847854,
    253   0.428891, 0.844338, 0.405683, 0.812911, 0.399583, 0.797114,
    254   0.396960, 0.790304, 0.358929, 0.754357, 0.347127, 0.747547,
    255   0.325473, 0.734987, 0.300383, 0.709143, 0.289068, 0.687641,
    256   0.269034, 0.649600, 0.270141, 0.593301, 0.292185, 0.529343,
    257   0.309919, 0.477855, 0.313213, 0.483487, 0.317117, 0.572051,
    258   0.318520, 0.603739, 0.321814, 0.637013, 0.324650, 0.647931,
    259   0.333037, 0.680245, 0.372226, 0.735769, 0.372104, 0.715171,
    260   0.372104, 0.712883, 0.367560, 0.705331, 0.362010, 0.698420,
    261   0.349353, 0.682629, 0.333311, 0.652375, 0.337642, 0.652375,
    262   0.339411, 0.652375, 0.346181, 0.655780, 0.352708, 0.659944,
    263   0.359204, 0.664108, 0.378235, 0.671945, 0.395008, 0.677365,
    264   0.434777, 0.690198, 0.453442, 0.700904, 0.467258, 0.718744,
    265   0.486044, 0.743025, 0.489551, 0.770377, 0.478847, 0.808781,
    266   0.469514, 0.842272, 0.455180, 0.855613, 0.437004, 0.847854,
    267   0.915453, 0.797505,
    268   0.912281, 0.787960, 0.906548, 0.758822, 0.902705, 0.732755,
    269   0.898130, 0.701585, 0.893830, 0.683438, 0.890140, 0.679821,
    270   0.887029, 0.676790, 0.884498, 0.670644, 0.884498, 0.666168,
    271   0.884498, 0.655512, 0.862936, 0.626698, 0.841801, 0.609120,
    272   0.827345, 0.597091, 0.819263, 0.594780, 0.783123, 0.592291,
    273   0.756224, 0.590443, 0.740121, 0.587032, 0.738200, 0.582768,
    274   0.736523, 0.579117, 0.734296, 0.553719, 0.733198, 0.526334,
    275   0.732100, 0.498949, 0.727800, 0.456566, 0.723652, 0.432156,
    276   0.712643, 0.367366, 0.707001, 0.327919, 0.706208, 0.310191,
    277   0.704774, 0.277843, 0.726245, 0.265496, 0.760982, 0.278697,
    278   0.767691, 0.281248, 0.782818, 0.283844, 0.794621, 0.284458,
    279   0.806393, 0.285072, 0.818958, 0.287567, 0.822557, 0.289989,
    280   0.831554, 0.296091, 0.833871, 0.313741, 0.828229, 0.333640,
    281   0.820879, 0.359702, 0.822282, 0.365870, 0.837775, 0.375538,
    282   0.856836, 0.387433, 0.870591, 0.386747, 0.895599, 0.372647,
    283   0.923443, 0.356967, 0.955405, 0.325251, 0.974527, 0.294382,
    284   0.978248, 0.288343, 0.984256, 0.285128, 0.989776, 0.286183,
    285   0.998133, 0.287790, 0.998956, 0.289861, 0.999840, 0.312077,
    286   1.001213, 0.346495, 0.994076, 0.375706, 0.964981, 0.454986,
    287   0.936375, 0.532865, 0.935978, 0.535790, 0.945310, 0.600066,
    288   0.948513, 0.621959, 0.952081, 0.660022, 0.953240, 0.684649,
    289   0.955222, 0.726335, 0.954795, 0.731582, 0.946988, 0.760776,
    290   0.942383, 0.778080, 0.934697, 0.797282, 0.929909, 0.803534,
    291   0.921217, 0.814865,
    292   0.915453, 0.797505,
    293   0.096496, 0.729908,
    294   0.078710, 0.724828, 0.064104, 0.702467, 0.064104, 0.680318,
    295   0.064104, 0.665983, 0.064510, 0.665699, 0.084690, 0.665732,
    296   0.113157, 0.665782, 0.137183, 0.650979, 0.145472, 0.628283,
    297   0.155796, 0.600010, 0.156805, 0.579586, 0.148766, 0.561596,
    298   0.137991, 0.537487, 0.117756, 0.525452, 0.046553, 0.500814,
    299   0.024610, 0.493222, 0.017738, 0.476343, 0.003542, 0.395209,
    300   -0.004623, 0.348522, 0.000690, 0.334204, 0.026171, 0.334204,
    301   0.037965, 0.334204, 0.043777, 0.330096, 0.059154, 0.310877,
    302   0.092007, 0.269828, 0.168849, 0.207204, 0.198291, 0.197486,
    303   0.204162, 0.195543, 0.211958, 0.195995, 0.215617, 0.198496,
    304   0.222479, 0.203174, 0.271486, 0.339585, 0.271486, 0.354009,
    305   0.271486, 0.358296, 0.265255, 0.389817, 0.257637, 0.424062,
    306   0.250025, 0.458313, 0.244532, 0.487685, 0.245438, 0.489343,
    307   0.247606, 0.493312, 0.247143, 0.494819, 0.260656, 0.440261,
    308   0.274332, 0.385056, 0.275103, 0.383046, 0.281062, 0.387232,
    309   0.286101, 0.390777, 0.301981, 0.446641, 0.301981, 0.460830,
    310   0.301981, 0.465865, 0.297824, 0.481835, 0.292749, 0.496315,
    311   0.281023, 0.529756, 0.269601, 0.582958, 0.265045, 0.625347,
    312   0.261053, 0.662528, 0.252160, 0.680284, 0.237530, 0.680284,
    313   0.226731, 0.680284, 0.226636, 0.675171, 0.236581, 0.630365,
    314   0.240866, 0.611057, 0.243883, 0.588640, 0.243279, 0.580557,
    315   0.242275, 0.567083, 0.241553, 0.568188, 0.234639, 0.593764,
    316   0.222671, 0.638046, 0.210259, 0.675629, 0.199313, 0.700709,
    317   0.189185, 0.723935,
    318   0.162478, 0.727731,
    319   0.117994, 0.734150, 0.111952, 0.734318, 0.096496, 0.729908,
    320   0.194305, 0.589237,
    321   0.194864, 0.571777, 0.194089, 0.557482, 0.192588, 0.557482,
    322   0.188968, 0.557482, 0.186187, 0.577543, 0.186138, 0.603996,
    323   0.186068, 0.638420, 0.193143, 0.625643, 0.194305, 0.589237,
    324   0.199057, 0.461751,
    325   0.208481, 0.452681, 0.212702, 0.433406, 0.211274, 0.405921,
    326   0.209487, 0.371497, 0.198136, 0.350805, 0.178858, 0.346825,
    327   0.166748, 0.344330, 0.163567, 0.346138, 0.152908, 0.361595,
    328   0.139007, 0.381740, 0.132044, 0.411140, 0.137088, 0.428388,
    329   0.138857, 0.434439, 0.145460, 0.447233, 0.151761, 0.456817,
    330   0.162301, 0.472848, 0.164442, 0.473954, 0.178471, 0.470571,
    331   0.186858, 0.468539, 0.196120, 0.464570, 0.199057, 0.461751,
    332   0.158397, 0.449918,
    333   0.149824, 0.439379, 0.147808, 0.433094, 0.147061, 0.414595,
    334   0.146323, 0.396298, 0.147693, 0.389259, 0.154399, 0.376984,
    335   0.165924, 0.355890, 0.175842, 0.352574, 0.188959, 0.365429,
    336   0.198956, 0.375226, 0.199890, 0.378318, 0.200719, 0.404436,
    337   0.201811, 0.438731, 0.195867, 0.454294, 0.179743, 0.459329,
    338   0.171310, 0.461963, 0.166446, 0.459820, 0.158397, 0.449918,
    339   0.060905, 0.436074,
    340   0.060710, 0.407646, 0.051963, 0.376069, 0.044293, 0.376069,
    341   0.035500, 0.376069, 0.035461, 0.389270, 0.044137, 0.425179,
    342   0.053259, 0.462940, 0.061131, 0.468053, 0.060905, 0.436074,
    343   0.468203, 0.676422,
    344   0.443927, 0.666212, 0.439230, 0.662495, 0.439230, 0.653552,
    345   0.439261, 0.642701, 0.472686, 0.558654, 0.477352, 0.557772,
    346   0.480707, 0.557136, 0.493608, 0.640513, 0.493943, 0.664934,
    347   0.494126, 0.678733, 0.493120, 0.680217, 0.484214, 0.679637,
    348   0.478755, 0.679280, 0.471558, 0.677834, 0.468203, 0.676422,
    349   0.519622, 0.671839,
    350   0.518646, 0.667195, 0.519104, 0.660290, 0.520659, 0.656489,
    351   0.522215, 0.652687, 0.527369, 0.630745, 0.532126, 0.607719,
    352   0.543502, 0.552603, 0.545271, 0.548752, 0.552041, 0.564515,
    353   0.557562, 0.577426, 0.566131, 0.653558, 0.563051, 0.662629,
    354   0.561099, 0.668428, 0.537402, 0.680284, 0.527765, 0.680284,
    355   0.524258, 0.680284, 0.520598, 0.676483, 0.519622, 0.671839,
    356   0.502025, 0.651375,
    357   0.498548, 0.621166, 0.488393, 0.542617, 0.486563, 0.531967,
    358   0.485068, 0.523303, 0.489216, 0.508941, 0.503153, 0.474517,
    359   0.513370, 0.449276, 0.522855, 0.429862, 0.524197, 0.431380,
    360   0.525539, 0.432893, 0.529900, 0.451676, 0.533865, 0.473105,
    361   0.540971, 0.511230, 0.541001, 0.512703, 0.535969, 0.541752,
    362   0.527308, 0.591799, 0.511052, 0.659726, 0.507179, 0.662087,
    363   0.505166, 0.663321, 0.502848, 0.658504, 0.502025, 0.651375,
    364   0.383572, 0.653887,
    365   0.377289, 0.652682, 0.372135, 0.649360, 0.372135, 0.646514,
    366   0.372135, 0.643667, 0.378570, 0.625883, 0.386408, 0.606999,
    367   0.401931, 0.569667, 0.401809, 0.569667, 0.413734, 0.605659,
    368   0.421114, 0.627948, 0.421267, 0.606474, 0.413978, 0.571961,
    369   0.406292, 0.535640,
    370   0.419772, 0.503912,
    371   0.427183, 0.486468, 0.435875, 0.461238, 0.439108, 0.447852,
    372   0.448623, 0.408539, 0.453076, 0.415499, 0.462042, 0.483582,
    373   0.467349, 0.524113,
    374   0.452527, 0.578475,
    375   0.437553, 0.633469, 0.431636, 0.647524, 0.425354, 0.643120,
    376   0.423463, 0.641791, 0.420138, 0.644582, 0.418004, 0.649321,
    377   0.414191, 0.657733, 0.407970, 0.658554, 0.383572, 0.653887,
    378   0.585650, 0.651353,
    379   0.585650, 0.647306, 0.591994, 0.621657, 0.599770, 0.594350,
    380   0.615538, 0.538793, 0.617886, 0.539056, 0.619625, 0.596555,
    381   0.620692, 0.632838,
    382   0.610018, 0.642076,
    383   0.592878, 0.656907, 0.585619, 0.659670, 0.585650, 0.651353,
    384   0.572414, 0.635623,
    385   0.571590, 0.627948, 0.568724, 0.603728, 0.566070, 0.581797,
    386   0.563417, 0.559865, 0.561252, 0.534746, 0.561282, 0.525977,
    387   0.561343, 0.508969, 0.596263, 0.378860, 0.600777, 0.378860,
    388   0.605870, 0.378860, 0.609926, 0.415287, 0.610750, 0.468171,
    389   0.611543, 0.521199,
    390   0.597270, 0.574227,
    391   0.589401, 0.603393, 0.580953, 0.632274, 0.578452, 0.638414,
    392   0.574000, 0.649366, 0.573908, 0.649310, 0.572414, 0.635623,
    393   0.345602, 0.626296,
    394   0.342644, 0.618096, 0.340265, 0.602187, 0.340265, 0.590934,
    395   0.340265, 0.567473, 0.368963, 0.439530, 0.373599, 0.442198,
    396   0.377533, 0.444436, 0.393056, 0.517264, 0.393300, 0.534534,
    397   0.393605, 0.556723, 0.361949, 0.641211, 0.353318, 0.641211,
    398   0.352006, 0.641211, 0.348530, 0.634501, 0.345602, 0.626296,
    399   0.628377, 0.569455,
    400   0.624504, 0.507970,
    401   0.638930, 0.458771,
    402   0.655856, 0.401065, 0.657655, 0.396845, 0.662077, 0.404927,
    403   0.665859, 0.411866, 0.666561, 0.418006, 0.669519, 0.472128,
    404   0.671715, 0.512357,
    405   0.657350, 0.561439,
    406   0.649451, 0.588428, 0.640576, 0.615110, 0.637618, 0.620725,
    407   0.632464, 0.630510, 0.632068, 0.628378, 0.628377, 0.569455,
    408   0.656954, 0.610951,
    409   0.655307, 0.602974, 0.667933, 0.555958, 0.675740, 0.541160,
    410   0.679339, 0.534333, 0.680315, 0.535165, 0.682785, 0.547094,
    411   0.685652, 0.560797, 0.687269, 0.581328, 0.686598, 0.595444,
    412   0.686293, 0.602327, 0.668817, 0.618883, 0.661864, 0.618883,
    413   0.660095, 0.618883, 0.657869, 0.615311, 0.656954, 0.610951,
    414   0.695412, 0.594462,
    415   0.695412, 0.572229, 0.717583, 0.490532, 0.723622, 0.490510,
    416   0.724872, 0.490504, 0.725909, 0.511704, 0.725909, 0.537627,
    417   0.725909, 0.579999, 0.725238, 0.585631, 0.719139, 0.593446,
    418   0.710630, 0.604336, 0.695412, 0.604990, 0.695412, 0.594462,
    419   0.322210, 0.504972,
    420   0.317788, 0.482232, 0.314189, 0.460250, 0.314159, 0.456130,
    421   0.314128, 0.441260, 0.339411, 0.322616, 0.342278, 0.324357,
    422   0.343864, 0.325334, 0.350238, 0.342901, 0.356368, 0.363398,
    423   0.367560, 0.400663,
    424   0.358716, 0.446976,
    425   0.353836, 0.472446, 0.348865, 0.495807, 0.347676, 0.498877,
    426   0.346456, 0.501947, 0.343833, 0.513881, 0.341820, 0.525391,
    427   0.339777, 0.536907, 0.336331, 0.546323, 0.334165, 0.546323,
    428   0.332000, 0.546323, 0.326632, 0.527708, 0.322210, 0.504972,
    429   0.689495, 0.525386,
    430   0.686689, 0.506876, 0.687635, 0.498196, 0.697638, 0.450292,
    431   0.708922, 0.396136,
    432   0.715906, 0.426485,
    433   0.722921, 0.456839,
    434   0.709928, 0.501472,
    435   0.702792, 0.526016, 0.695991, 0.546156, 0.694802, 0.546217,
    436   0.693612, 0.546279, 0.691233, 0.536901, 0.689495, 0.525386,
    437   0.399125, 0.494685,
    438   0.392995, 0.485514, 0.381284, 0.433680, 0.381284, 0.415617,
    439   0.381284, 0.398882, 0.414557, 0.278373, 0.420321, 0.274243,
    440   0.422487, 0.272680, 0.426177, 0.276113, 0.428525, 0.281868,
    441   0.434289, 0.296063, 0.448410, 0.367595, 0.448410, 0.382477,
    442   0.448379, 0.396320, 0.411874, 0.501433, 0.407024, 0.501567,
    443   0.405256, 0.501618, 0.401687, 0.498525, 0.399125, 0.494685,
    444   0.477383, 0.480730,
    445   0.468538, 0.440523, 0.461341, 0.381572, 0.463811, 0.369616,
    446   0.465946, 0.359317, 0.485190, 0.307165, 0.493333, 0.289593,
    447   0.496505, 0.282733, 0.518128, 0.373797, 0.518372, 0.395086,
    448   0.518463, 0.402477, 0.513218, 0.421316, 0.506722, 0.436951,
    449   0.500226, 0.452586, 0.493303, 0.471029, 0.491351, 0.477939,
    450   0.487142, 0.492938, 0.480372, 0.494289, 0.477383, 0.480730,
    451   0.552804, 0.478079,
    452   0.546735, 0.464464, 0.533651, 0.398631, 0.535359, 0.390163,
    453   0.538805, 0.373088, 0.587205, 0.246032, 0.589340, 0.248449,
    454   0.590560, 0.249822, 0.594403, 0.267740, 0.597849, 0.288270,
    455   0.604162, 0.325597,
    456   0.585132, 0.397040,
    457   0.564698, 0.473741, 0.558171, 0.490074, 0.552804, 0.478079,
    458   0.677723, 0.453529,
    459   0.665524, 0.362253, 0.665249, 0.368098, 0.683731, 0.329002,
    460   0.693765, 0.307762, 0.695229, 0.306384, 0.697790, 0.315583,
    461   0.699376, 0.321220, 0.701511, 0.339345, 0.702517, 0.355856,
    462   0.704103, 0.381388, 0.702975, 0.391832, 0.695137, 0.425631,
    463   0.683273, 0.476683, 0.681261, 0.479954, 0.677723, 0.453529,
    464   0.624260, 0.464447,
    465   0.623132, 0.462404, 0.622217, 0.452753, 0.622217, 0.443007,
    466   0.622217, 0.433261, 0.620173, 0.412954, 0.617673, 0.397883,
    467   0.611543, 0.360852, 0.611909, 0.332289, 0.618862, 0.307467,
    468   0.623864, 0.289710, 0.640394, 0.255108, 0.640576, 0.262057,
    469   0.640637, 0.263358, 0.644572, 0.285647, 0.649360, 0.311580,
    470   0.659424, 0.365915, 0.659058, 0.370241, 0.639723, 0.430493,
    471   0.626669, 0.471168, 0.627249, 0.469912, 0.624260, 0.464447,
    472   0.298483, 0.416526,
    473   0.294027, 0.403482, 0.288254, 0.383336, 0.285646, 0.371754,
    474   0.280986, 0.351022, 0.281108, 0.349845, 0.293356, 0.297793,
    475   0.300203, 0.268694, 0.307339, 0.244938, 0.309230, 0.244988,
    476   0.314110, 0.245127, 0.324449, 0.266629, 0.330548, 0.289370,
    477   0.335733, 0.308683, 0.335702, 0.308862, 0.321704, 0.374494,
    478   0.313957, 0.410660, 0.307400, 0.440255, 0.307126, 0.440250,
    479   0.306821, 0.440244, 0.302939, 0.429571, 0.298483, 0.416526,
    480   0.367298, 0.372273,
    481   0.364431, 0.362080, 0.358393, 0.341181, 0.353879, 0.325831,
    482   0.349365, 0.310481, 0.346346, 0.294154, 0.347139, 0.289549,
    483   0.351073, 0.267237, 0.378308, 0.166746, 0.380412, 0.166768,
    484   0.385414, 0.166824, 0.401578, 0.199428, 0.408562, 0.223615,
    485   0.415850, 0.248739,
    486   0.398314, 0.313512,
    487   0.376966, 0.392418, 0.374373, 0.397330, 0.367298, 0.372273,
    488   0.525246, 0.360997,
    489   0.523233, 0.357313, 0.521586, 0.351341, 0.521586, 0.347718,
    490   0.521586, 0.344095, 0.518049, 0.326936, 0.513687, 0.309588,
    491   0.504050, 0.270966, 0.504935, 0.264854, 0.529302, 0.201460,
    492   0.545832, 0.158496, 0.552145, 0.149872, 0.559800, 0.159852,
    493   0.564985, 0.166601, 0.582582, 0.220098, 0.582582, 0.229107,
    494   0.582582, 0.233701, 0.577092, 0.251803, 0.570383, 0.269331,
    495   0.563673, 0.286864, 0.558184, 0.302460, 0.558184, 0.303989,
    496   0.558184, 0.309437, 0.533541, 0.367696, 0.531254, 0.367696,
    497   0.529973, 0.367696, 0.527259, 0.364681, 0.525246, 0.360997,
    498   0.446013, 0.310481,
    499   0.441042, 0.285150, 0.436040, 0.258870, 0.434912, 0.252077,
    500   0.432624, 0.238557, 0.435095, 0.227606, 0.449490, 0.187667,
    501   0.460926, 0.155984, 0.468490, 0.154711, 0.474315, 0.183492,
    502   0.476480, 0.194237, 0.481268, 0.216710, 0.484897, 0.233433,
    503   0.489960, 0.256604, 0.490784, 0.266774, 0.488466, 0.276185,
    504   0.484257, 0.293065, 0.459554, 0.356197, 0.457083, 0.356381,
    505   0.455955, 0.356465, 0.451014, 0.335806, 0.446013, 0.310481,
    506   0.658887, 0.321645,
    507   0.656936, 0.305524, 0.653825, 0.285150, 0.651995, 0.276370,
    508   0.649250, 0.263319, 0.649738, 0.256682, 0.654496, 0.240087,
    509   0.660260, 0.220070, 0.672855, 0.197446, 0.678192, 0.197446,
    510   0.680449, 0.197446, 0.692008, 0.265306, 0.693472, 0.287310,
    511   0.693838, 0.292680, 0.666481, 0.350950, 0.663584, 0.350950,
    512   0.662974, 0.350950, 0.660870, 0.337765, 0.658887, 0.321645,
    513   0.250217, 0.260762,
    514   0.236508, 0.223123, 0.226667, 0.190770, 0.228115, 0.188119,
    515   0.229552, 0.185490, 0.242602, 0.180684, 0.257116, 0.177430,
    516   0.280919, 0.172104, 0.284253, 0.172523, 0.291105, 0.181694,
    517   0.304399, 0.199489, 0.305238, 0.215147, 0.295207, 0.258848,
    518   0.290276, 0.280338, 0.284686, 0.304826, 0.282786, 0.313272,
    519   0.280879, 0.321717, 0.278333, 0.328622, 0.277125, 0.328622,
    520   0.275917, 0.328622, 0.263807, 0.298083, 0.250217, 0.260762,
    521   0.603168, 0.267455,
    522   0.596275, 0.224441, 0.596214, 0.225379, 0.607377, 0.193534,
    523   0.616190, 0.168443, 0.617319, 0.166991, 0.622168, 0.174996,
    524   0.627414, 0.183676, 0.634428, 0.218541, 0.634428, 0.235834,
    525   0.634428, 0.247209, 0.615733, 0.299998, 0.611555, 0.300400,
    526   0.609877, 0.300567, 0.606096, 0.285736, 0.603168, 0.267455,
    527   0.694143, 0.241583,
    528   0.687769, 0.192149, 0.689507, 0.184608, 0.705061, 0.194058,
    529   0.720035, 0.203146, 0.735071, 0.221259, 0.735071, 0.230185,
    530   0.735071, 0.236459, 0.704695, 0.283967, 0.700700, 0.283967,
    531   0.700090, 0.283967, 0.697132, 0.264893, 0.694143, 0.241583,
    532   0.330182, 0.271407,
    533   0.328505, 0.267567, 0.324357, 0.254254, 0.320911, 0.241812,
    534   0.314689, 0.219199,
    535   0.323595, 0.190955,
    536   0.332134, 0.163960, 0.333201, 0.162559, 0.348206, 0.159311,
    537   0.374038, 0.153706, 0.374526, 0.158356, 0.355343, 0.228253,
    538   0.342046, 0.276760, 0.336617, 0.286065, 0.330182, 0.271407,
    539   0.493315, 0.224167,
    540   0.482275, 0.191513, 0.475321, 0.161610, 0.477395, 0.155515,
    541   0.478401, 0.152484, 0.490845, 0.150000, 0.504996, 0.150000,
    542   0.528936, 0.150000, 0.530736, 0.150804, 0.530736, 0.161471,
    543   0.530736, 0.172506, 0.509509, 0.235086, 0.503410, 0.241962,
    544   0.501793, 0.243799, 0.497249, 0.235789, 0.493315, 0.224167,
    545   0.641046, 0.216447,
    546   0.632720, 0.175828, 0.634611, 0.168900, 0.651720, 0.177268,
    547   0.663462, 0.183012, 0.663858, 0.194695, 0.652940, 0.213841,
    548   0.643791, 0.229866,
    549   0.641046, 0.216447,
    550   0.413594, 0.206807,
    551   0.411154, 0.198139, 0.407006, 0.187790, 0.404383, 0.183799,
    552   0.401761, 0.179808, 0.399595, 0.172116, 0.399595, 0.166712,
    553   0.399595, 0.152836, 0.437687, 0.144731, 0.444457, 0.157162,
    554   0.448392, 0.164368, 0.447721, 0.168794, 0.438754, 0.193857,
    555   0.427226, 0.226138, 0.420090, 0.229805, 0.413594, 0.206807,
    556   0.581514, 0.187952,
    557   0.578434, 0.173606, 0.577580, 0.162492, 0.579319, 0.159339,
    558   0.583741, 0.151245, 0.603930, 0.160254, 0.603930, 0.170324,
    559   0.603930, 0.180187, 0.592524, 0.211401, 0.588925, 0.211401,
    560   0.587645, 0.211401, 0.584290, 0.200846, 0.581514, 0.187952,
    561   0.302740, 0.189152,
    562   0.296897, 0.172021, 0.298160, 0.166746, 0.308102, 0.166746,
    563   0.314872, 0.166746, 0.317251, 0.169353, 0.317251, 0.176793,
    564   0.317251, 0.186327, 0.311914, 0.200237, 0.308224, 0.200237,
    565   0.307278, 0.200237, 0.304820, 0.195242, 0.302740, 0.189152
    566 };
    567 
    568 // Extracted from: https://llvm.org/Logo.html (old logo).
    569 constexpr char dragon_commands[] =
    570   "MLCCCCLCCCLCCCCCCCCCLCLCCCCCCCCLCCCLCCCCCCCCLLCCCLCCCCCCCCCCCCLCCCCCCCCCCCCCCCCCCCCCCCLLCLLCCCLLCCCCCLCLCCCLCCCCCCCCCLCCCCCCCLCCCCCLCCCCCCCCCCCCCCLLLCCCCCCLCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCLLCCLCLCCCCCCLLLCCCLCLLCLLCCCCCCLCLLLCCCCCCLLCCCCLLCCCLCCCCCCLLLCCCCCCLCLCCCCCCCCLLCLLCCLCCCCCCCCCLCCCCLCCCCCLCCZMCLZMCLCCLZMCLLCLCCLCCCZ";
    571 
    572 constexpr double dragon_vertices[] = {
    573   0.867886, 0.000277,
    574   0.864345, 0.005538,
    575   0.846621, 0.031677, 0.830066, 0.059176, 0.814765, 0.087893,
    576   0.807847, 0.100544, 0.801637, 0.113854, 0.796184, 0.127714,
    577   0.791803, 0.138182, 0.788323, 0.149273, 0.785810, 0.160777,
    578   0.784906, 0.163906, 0.784440, 0.167228, 0.784435, 0.170580,
    579   0.784435, 0.170802,
    580   0.779145, 0.172954, 0.775573, 0.179511, 0.775685, 0.186863,
    581   0.775581, 0.193745, 0.778679, 0.200000, 0.783476, 0.202591,
    582   0.785060, 0.223139, 0.786809, 0.265839, 0.786393, 0.324434,
    583   0.786226, 0.332299,
    584   0.785039, 0.376212, 0.778945, 0.419646, 0.768144, 0.461175,
    585   0.767478, 0.460622, 0.766894, 0.460400, 0.766478, 0.460455,
    586   0.765228, 0.460622, 0.761853, 0.467101, 0.758562, 0.474357,
    587   0.756145, 0.479341, 0.753604, 0.485156, 0.752146, 0.490473,
    588   0.751353, 0.492925, 0.750929, 0.495559, 0.750896, 0.498227,
    589   0.750814, 0.499871, 0.750956, 0.501522, 0.751312, 0.503100,
    590   0.751729, 0.505150, 0.752229, 0.506313, 0.752229, 0.506313,
    591   0.752187, 0.506442, 0.752146, 0.506571, 0.752104, 0.506700,
    592   0.751483, 0.507784, 0.751081, 0.509062, 0.750937, 0.510411,
    593   0.750437, 0.512017,
    594   0.747170, 0.521946, 0.743584, 0.531684, 0.739688, 0.541204,
    595   0.736480, 0.549068,
    596   0.735524, 0.551204, 0.734552, 0.553327, 0.733564, 0.555437,
    597   0.733275, 0.555146, 0.732968, 0.554886, 0.732647, 0.554662,
    598   0.731008, 0.554310, 0.729329, 0.554784, 0.727939, 0.555991,
    599   0.725981, 0.557930, 0.721648, 0.566736, 0.707191, 0.576372,
    600   0.702275, 0.579640, 0.697775, 0.581523, 0.693859, 0.582686,
    601   0.699426, 0.544863, 0.702880, 0.506544, 0.704191, 0.468043,
    602   0.704842, 0.448459, 0.703948, 0.428839, 0.701525, 0.409503,
    603   0.701650, 0.408949, 0.701650, 0.408561, 0.701650, 0.408561,
    604   0.701442, 0.409115,
    605   0.700342, 0.400562, 0.698896, 0.392095, 0.697109, 0.383750,
    606   0.691460, 0.355523, 0.681156, 0.329321, 0.666944, 0.307044,
    607   0.640655, 0.265285, 0.604616, 0.243907, 0.572952, 0.242523,
    608   0.567744, 0.242412,
    609   0.567744, 0.241969, 0.567744, 0.241581, 0.567828, 0.241194,
    610   0.568703, 0.235766, 0.568828, 0.234160, 0.564203, 0.239421,
    611   0.563378, 0.240370, 0.562586, 0.241368, 0.561828, 0.242412,
    612   0.559620, 0.242467, 0.557620, 0.242633, 0.555745, 0.242800,
    613   0.555590, 0.240813, 0.555549, 0.238813, 0.555620, 0.236818,
    614   0.555787, 0.232609, 0.556620, 0.229785, 0.551996, 0.235046,
    615   0.549579, 0.237573, 0.547568, 0.240718, 0.546079, 0.244295,
    616   0.543996, 0.244738, 0.542746, 0.245126, 0.542746, 0.245126,
    617   0.544621, 0.245015,
    618   0.542663, 0.245458,
    619   0.541997, 0.243132, 0.540455, 0.239643, 0.540663, 0.236597,
    620   0.541080, 0.230062, 0.542455, 0.228843, 0.539122, 0.232997,
    621   0.535039, 0.237981, 0.530706, 0.245513, 0.529956, 0.249556,
    622   0.525956, 0.251218,
    623   0.525206, 0.250221, 0.522873, 0.247341, 0.522373, 0.241360,
    624   0.521832, 0.235268, 0.521873, 0.232166, 0.519040, 0.238535,
    625   0.516450, 0.244540, 0.514620, 0.251070, 0.513624, 0.257864,
    626   0.512291, 0.258695, 0.510999, 0.259525, 0.509749, 0.260411,
    627   0.508147, 0.257680, 0.507307, 0.254293, 0.507374, 0.250830,
    628   0.507166, 0.242855, 0.509041, 0.236375, 0.504583, 0.247064,
    629   0.501817, 0.254169, 0.499771, 0.261730, 0.498500, 0.269550,
    630   0.497000, 0.270934, 0.495542, 0.272374, 0.494125, 0.273925,
    631   0.493940, 0.270792, 0.493829, 0.267652, 0.493792, 0.264510,
    632   0.493709, 0.256645, 0.494667, 0.248172, 0.491001, 0.263125,
    633   0.489918, 0.267501, 0.488793, 0.273759, 0.488084, 0.280903,
    634   0.471252, 0.302226, 0.461003, 0.331690, 0.461253, 0.367966,
    635   0.461253, 0.368353,
    636   0.461212, 0.374833, 0.461462, 0.380981, 0.461837, 0.386630,
    637   0.462670, 0.399811, 0.464211, 0.410887, 0.466294, 0.420136,
    638   0.462336, 0.427336, 0.462003, 0.458295, 0.465878, 0.465440,
    639   0.468919, 0.471200, 0.486543, 0.484824, 0.490292, 0.487538,
    640   0.491822, 0.488925, 0.493149, 0.490670, 0.494209, 0.492688,
    641   0.499000, 0.503100, 0.499000, 0.524091, 0.495334, 0.534890,
    642   0.490876, 0.548071, 0.499792, 0.550674, 0.507208, 0.552613,
    643   0.514624, 0.554607, 0.524498, 0.551339, 0.526498, 0.546078,
    644   0.528456, 0.540816, 0.520082, 0.528964, 0.516624, 0.504651,
    645   0.513124, 0.480338, 0.522040, 0.478399, 0.522040, 0.478399,
    646   0.522040, 0.478399, 0.525998, 0.479729, 0.531914, 0.492190,
    647   0.536497, 0.501882, 0.541372, 0.509525, 0.545913, 0.515063,
    648   0.543583, 0.518893, 0.540745, 0.522121, 0.537539, 0.524589,
    649   0.542538, 0.524866, 0.547538, 0.521764, 0.550204, 0.519771,
    650   0.551155, 0.520672, 0.552143, 0.521504, 0.553162, 0.522263,
    651   0.552492, 0.523218, 0.551797, 0.524141, 0.551079, 0.525032,
    652   0.552608, 0.524845, 0.554117, 0.524436, 0.555579, 0.523814,
    653   0.556694, 0.524447, 0.557873, 0.524858, 0.559078, 0.525032,
    654   0.565536, 0.525697, 0.582826, 0.504651, 0.582826, 0.500719,
    655   0.582826, 0.499722, 0.582201, 0.498504, 0.581243, 0.497230,
    656   0.579493, 0.494738, 0.576244, 0.491691, 0.572619, 0.487427,
    657   0.570968, 0.485447, 0.569436, 0.483299, 0.568036, 0.481002,
    658   0.564653, 0.474969, 0.562617, 0.467790, 0.562161, 0.460289,
    659   0.562161, 0.459735,
    660   0.562036, 0.458018,
    661   0.562036, 0.458018, 0.562328, 0.457631, 0.562703, 0.456911,
    662   0.562703, 0.457132,
    663   0.562870, 0.456579,
    664   0.565036, 0.452148, 0.569119, 0.435588, 0.543288, 0.396876,
    665   0.532464, 0.380676, 0.519394, 0.367400, 0.504791, 0.357775,
    666   0.503041, 0.331634, 0.511041, 0.307210, 0.530872, 0.295192,
    667   0.530664, 0.295469,
    668   0.530997, 0.295137,
    669   0.540455, 0.289488, 0.552537, 0.286552, 0.567536, 0.287605,
    670   0.596284, 0.289598, 0.618365, 0.307487, 0.633781, 0.334403,
    671   0.655195, 0.373836, 0.664528, 0.432985, 0.657737, 0.492578,
    672   0.654904, 0.496177, 0.655445, 0.496731, 0.657195, 0.496842,
    673   0.656546, 0.501911, 0.655782, 0.506954, 0.654904, 0.511962,
    674   0.653779, 0.512792,
    675   0.648654, 0.516891, 0.650821, 0.516835, 0.653779, 0.517888,
    676   0.653529, 0.518995,
    677   0.652696, 0.522595, 0.651737, 0.526195, 0.650779, 0.529684,
    678   0.649552, 0.530160, 0.648342, 0.530715, 0.647154, 0.531346,
    679   0.641530, 0.534281, 0.643821, 0.534669, 0.646654, 0.536386,
    680   0.648488, 0.537604,
    681   0.647154, 0.542035, 0.645738, 0.546465, 0.644280, 0.550730,
    682   0.643157, 0.550962, 0.642044, 0.551277, 0.640947, 0.551671,
    683   0.635030, 0.553665, 0.637280, 0.554441, 0.639947, 0.556656,
    684   0.640519, 0.557120, 0.641075, 0.557619, 0.641613, 0.558151,
    685   0.640180, 0.562136, 0.638694, 0.566088, 0.637155, 0.570003,
    686   0.635000, 0.570175, 0.632865, 0.570639, 0.630781, 0.571388,
    687   0.624948, 0.573382, 0.627156, 0.574157, 0.629823, 0.576372,
    688   0.631239, 0.577480, 0.632322, 0.578643, 0.633197, 0.579640,
    689   0.631905, 0.582707, 0.630586, 0.585753, 0.629239, 0.588778,
    690   0.628281, 0.590772,
    691   0.625384, 0.590538, 0.622478, 0.590988, 0.619698, 0.592101,
    692   0.613782, 0.594095, 0.616032, 0.594870, 0.618698, 0.597086,
    693   0.620247, 0.598353, 0.621698, 0.599818, 0.623031, 0.601461,
    694   0.621314, 0.604813, 0.619564, 0.608137, 0.617782, 0.611430,
    695   0.614644, 0.610376, 0.611368, 0.610282, 0.608199, 0.611153,
    696   0.602200, 0.612261, 0.604366, 0.613368, 0.606824, 0.615916,
    697   0.609658, 0.618851, 0.611032, 0.621399, 0.611741, 0.622451,
    698   0.609158, 0.627103,
    699   0.607324, 0.623891, 0.602950, 0.620236, 0.598908, 0.616414,
    700   0.595257, 0.613026, 0.591158, 0.610583, 0.586826, 0.609214,
    701   0.584826, 0.609214, 0.578535, 0.624057, 0.544455, 0.620125,
    702   0.510332, 0.616193, 0.508208, 0.611817, 0.505208, 0.611817,
    703   0.502291, 0.611817, 0.495917, 0.614974, 0.495709, 0.615085,
    704   0.494292, 0.613977,
    705   0.480301, 0.602506, 0.466782, 0.590046, 0.453796, 0.576649,
    706   0.434464, 0.556157, 0.423798, 0.540816, 0.423798, 0.540816,
    707   0.423798, 0.540816, 0.429506, 0.533893, 0.421840, 0.525087,
    708   0.417404, 0.519568, 0.412700, 0.514443, 0.407758, 0.509746,
    709   0.404558, 0.506381, 0.401189, 0.503309, 0.397675, 0.500553,
    710   0.396415, 0.498244, 0.395193, 0.495899, 0.394009, 0.493519,
    711   0.388693, 0.482140, 0.383650, 0.470541, 0.378885, 0.458738,
    712   0.375210, 0.449140, 0.371736, 0.439407, 0.368469, 0.429552,
    713   0.361803, 0.409614, 0.357220, 0.391780, 0.354054, 0.376162,
    714   0.350934, 0.359380, 0.348872, 0.342281, 0.347888, 0.325044,
    715   0.347763, 0.320575, 0.347818, 0.316101, 0.348054, 0.311641,
    716   0.352199, 0.307338, 0.354626, 0.300742, 0.354637, 0.293752,
    717   0.354625, 0.282327, 0.348244, 0.272684, 0.339722, 0.271211,
    718   0.331222, 0.247563, 0.298808, 0.189410, 0.177985, 0.067401,
    719   0.172694, 0.061974,
    720   0.172902, 0.062195,
    721   0.171402, 0.060700,
    722   0.294475, 0.200819, 0.318473, 0.255593, 0.324806, 0.278466,
    723   0.324408, 0.279049, 0.324032, 0.279659, 0.323681, 0.280294,
    724   0.323431, 0.280054, 0.323182, 0.279814, 0.322931, 0.279574,
    725   0.323681, 0.279574, 0.323973, 0.279297, 0.323973, 0.279297,
    726   0.323973, 0.279297, 0.295975, 0.249058, 0.249521, 0.211176,
    727   0.202900, 0.173128, 0.176652, 0.164156, 0.171194, 0.162605,
    728   0.170069, 0.162273,
    729   0.170069, 0.162273, 0.178652, 0.172795, 0.177319, 0.178057,
    730   0.176902, 0.179829, 0.170319, 0.179275, 0.159778, 0.179607,
    731   0.149641, 0.179660, 0.139530, 0.180958, 0.129573, 0.183484,
    732   0.106225, 0.188966, 0.083991, 0.200848, 0.064286, 0.218376,
    733   0.009916, 0.266504, 0.000000, 0.300675, 0.000000, 0.300675,
    734   0.000000, 0.300675, 0.022915, 0.258141, 0.065828, 0.228400,
    735   0.065245, 0.247064, 0.063870, 0.337449, 0.084368, 0.456579,
    736   0.106491, 0.585067, 0.148154, 0.705083, 0.151612, 0.714941,
    737   0.151779, 0.724799, 0.152279, 0.730005, 0.152279, 0.730005,
    738   0.152279, 0.730005, 0.158445, 0.630869, 0.183776, 0.528023,
    739   0.191067, 0.543696, 0.215357, 0.589886, 0.270269, 0.644106,
    740   0.338097, 0.711119, 0.369011, 0.729174, 0.370261, 0.729839,
    741   0.370302, 0.738534, 0.370469, 0.743131, 0.370469, 0.743131,
    742   0.370469, 0.743131, 0.370677, 0.737593, 0.371219, 0.728565,
    743   0.373052, 0.724965, 0.383635, 0.704750, 0.394217, 0.691458,
    744   0.401112, 0.682479, 0.408647, 0.674411, 0.416715, 0.667367,
    745   0.418048, 0.673459, 0.419340, 0.678665, 0.420590, 0.682652,
    746   0.419757, 0.677280, 0.419090, 0.672130, 0.418423, 0.667034,
    747   0.422881, 0.667588, 0.440838, 0.670690, 0.468669, 0.688800,
    748   0.482960, 0.698104, 0.494042, 0.710676, 0.501917, 0.721753,
    749   0.501718, 0.721852, 0.501524, 0.721963, 0.501333, 0.722085,
    750   0.501143, 0.722208, 0.506458, 0.728288, 0.512541, 0.744405,
    751   0.502283, 0.743885, 0.492027, 0.745454, 0.482126, 0.749057,
    752   0.480862, 0.745503, 0.479500, 0.742011, 0.478043, 0.738589,
    753   0.477778, 0.736005, 0.477231, 0.733487, 0.476419, 0.731113,
    754   0.475294, 0.727734, 0.472461, 0.725574, 0.469586, 0.723359,
    755   0.468314, 0.721711, 0.466851, 0.720346, 0.465253, 0.719316,
    756   0.464289, 0.718191, 0.463509, 0.716815, 0.462961, 0.715273,
    757   0.459462, 0.705083, 0.429714, 0.715938, 0.423715, 0.725242,
    758   0.416424, 0.736540, 0.415007, 0.750940, 0.417882, 0.758915,
    759   0.418757, 0.761407, 0.420798, 0.763456, 0.423631, 0.765007,
    760   0.423715, 0.777247, 0.429339, 0.806545, 0.440463, 0.827812,
    761   0.438334, 0.815648, 0.436831, 0.803306, 0.435964, 0.790871,
    762   0.435589, 0.782010, 0.435964, 0.775696, 0.436589, 0.771487,
    763   0.438547, 0.789653, 0.443838, 0.809369, 0.460628, 0.833793,
    764   0.450296, 0.803886, 0.451462, 0.786053, 0.452504, 0.770435,
    765   0.452879, 0.767998,
    766   0.453129, 0.767942,
    767   0.454629, 0.782508, 0.459045, 0.797517, 0.473211, 0.821332,
    768   0.473001, 0.820825, 0.472807, 0.820308, 0.472627, 0.819781,
    769   0.473211, 0.820944,
    770   0.466240, 0.803462, 0.463795, 0.783414, 0.466253, 0.763900,
    771   0.466586, 0.763733,
    772   0.468503, 0.765395, 0.470377, 0.767610, 0.472169, 0.770712,
    773   0.477502, 0.780238, 0.480002, 0.790040, 0.481002, 0.796742,
    774   0.479857, 0.804045, 0.480856, 0.811653, 0.483793, 0.818009,
    775   0.473586, 0.827922, 0.463586, 0.837171, 0.453796, 0.845756,
    776   0.444213, 0.854008, 0.433381, 0.863091, 0.422256, 0.871786,
    777   0.416424, 0.876217, 0.410632, 0.880536, 0.405008, 0.884524,
    778   0.399383, 0.880259,
    779   0.399467, 0.880259,
    780   0.399133, 0.880038,
    781   0.358720, 0.849079, 0.328723, 0.828421, 0.294225, 0.820113,
    782   0.255437, 0.810864, 0.219773, 0.835787, 0.211607, 0.880038,
    783   0.206275, 0.909422, 0.215499, 0.940077, 0.234605, 0.956467,
    784   0.235105, 0.956910,
    785   0.235647, 0.957464, 0.236189, 0.957851, 0.236772, 0.958350,
    786   0.239272, 0.960343,
    787   0.239355, 0.960343,
    788   0.247354, 0.966436, 0.257020, 0.970922, 0.268144, 0.973469,
    789   0.269311, 0.973746,
    790   0.269561, 0.973746,
    791   0.275241, 0.975008, 0.280973, 0.975822, 0.286726, 0.976183,
    792   0.327348, 0.978786, 0.376552, 0.953587, 0.425173, 0.921797,
    793   0.429339, 0.924788, 0.433589, 0.927778, 0.437922, 0.930990,
    794   0.544038, 1.008693, 0.608658, 1.018773, 0.694317, 0.971309,
    795   0.673402, 0.979672, 0.643988, 0.991026, 0.607074, 0.990361,
    796   0.606817, 0.990174, 0.606533, 0.990060, 0.606241, 0.990029,
    797   0.606283, 0.990361,
    798   0.597250, 0.990151, 0.588235, 0.989227, 0.579285, 0.987592,
    799   0.579285, 0.987537,
    800   0.578035, 0.987370,
    801   0.578035, 0.987204,
    802   0.578021, 0.987241, 0.578007, 0.987278, 0.577994, 0.987315,
    803   0.555689, 0.983029, 0.533898, 0.974912, 0.513166, 0.963168,
    804   0.502559, 0.957221, 0.492198, 0.950529, 0.482126, 0.943119,
    805   0.468076, 0.932803, 0.454104, 0.922298, 0.440213, 0.911606,
    806   0.454712, 0.901748, 0.469044, 0.891502, 0.482960, 0.881423,
    807   0.497750, 0.870955, 0.510957, 0.861374, 0.521207, 0.853731,
    808   0.521582, 0.853509,
    809   0.521873, 0.853454,
    810   0.521873, 0.853454, 0.525331, 0.852457, 0.528539, 0.851128,
    811   0.535622, 0.848248, 0.545621, 0.842876, 0.557495, 0.835455,
    812   0.558662, 0.841934, 0.561453, 0.847362, 0.565620, 0.849466,
    813   0.575410, 0.854506, 0.582576, 0.850962, 0.587368, 0.843817,
    814   0.588118, 0.843264,
    815   0.590076, 0.841214,
    816   0.592159, 0.839553, 0.594534, 0.837504, 0.596575, 0.836230,
    817   0.597304, 0.835799, 0.598040, 0.835393, 0.598783, 0.835011,
    818   0.600450, 0.834458, 0.602033, 0.833738, 0.603616, 0.832962,
    819   0.604991, 0.832408,
    820   0.598950, 0.848857, 0.601200, 0.864586, 0.601200, 0.864586,
    821   0.602991, 0.844039, 0.610366, 0.830913, 0.617532, 0.824987,
    822   0.620198, 0.823492, 0.622948, 0.822218, 0.625865, 0.821276,
    823   0.628531, 0.821276, 0.630697, 0.822550, 0.631864, 0.825153,
    824   0.634780, 0.831799, 0.640905, 0.835898, 0.647029, 0.837670,
    825   0.648029, 0.845977, 0.645155, 0.860045, 0.630364, 0.885632,
    826   0.634114, 0.882198,
    827   0.634280, 0.882032,
    828   0.637280, 0.879096,
    829   0.643238, 0.873115, 0.647779, 0.867466, 0.651196, 0.862205,
    830   0.654618, 0.857283, 0.657317, 0.851554, 0.659153, 0.845313,
    831   0.659653, 0.856389, 0.657362, 0.873392, 0.646196, 0.902690,
    832   0.646196, 0.902690, 0.659403, 0.887404, 0.667611, 0.867798,
    833   0.667861, 0.878376, 0.667194, 0.892333, 0.664986, 0.911274,
    834   0.679360, 0.874001, 0.678527, 0.851183, 0.674944, 0.837836,
    835   0.674527, 0.835842,
    836   0.674457, 0.834630, 0.674318, 0.833427, 0.674110, 0.832242,
    837   0.675860, 0.829085,
    838   0.680777, 0.819892, 0.673861, 0.810034, 0.669444, 0.806101,
    839   0.666944, 0.803886, 0.661112, 0.797572, 0.650529, 0.797406,
    840   0.641155, 0.782453, 0.629281, 0.789099, 0.610616, 0.805437,
    841   0.608408, 0.807377, 0.606097, 0.809098, 0.603700, 0.810588,
    842   0.603083, 0.808341, 0.602316, 0.806173, 0.601408, 0.804108,
    843   0.608074, 0.798791, 0.614990, 0.793086, 0.621990, 0.787050,
    844   0.635197, 0.775585, 0.645030, 0.764010, 0.652321, 0.752989,
    845   0.673569, 0.724356, 0.681068, 0.696498, 0.702733, 0.672905,
    846   0.702191, 0.672960,
    847   0.704691, 0.671188,
    848   0.740272, 0.645823, 0.759145, 0.640894, 0.760478, 0.640561,
    849   0.760353, 0.647650,
    850   0.761103, 0.640727,
    851   0.768530, 0.645562, 0.775302, 0.652000, 0.781143, 0.659779,
    852   0.787118, 0.667762, 0.792197, 0.676845, 0.796225, 0.686751,
    853   0.798058, 0.703421,
    854   0.798058, 0.703421, 0.798058, 0.696941, 0.797642, 0.685145,
    855   0.804016, 0.676726, 0.840138, 0.627325, 0.869469, 0.548515,
    856   0.898383, 0.470757, 0.908799, 0.408783, 0.911841, 0.386574,
    857   0.923472, 0.431180, 0.932730, 0.476817, 0.939547, 0.523149,
    858   0.946363, 0.569481, 0.939463, 0.515783, 0.938255, 0.502436,
    859   0.942296, 0.483827, 0.959753, 0.398759, 0.964378, 0.294417,
    860   0.968544, 0.201318, 0.961670, 0.140452, 0.958545, 0.118631,
    861   0.985543, 0.148371, 1.000000, 0.191016, 1.000000, 0.191016,
    862   1.000000, 0.191016, 0.998333, 0.181989, 0.992167, 0.166814,
    863   0.993001, 0.168309,
    864   0.993001, 0.168309, 0.983168, 0.143110, 0.966169, 0.118188,
    865   0.964032, 0.114960, 0.961852, 0.111784, 0.959628, 0.108662,
    866   0.941630, 0.083241, 0.924048, 0.074490, 0.910882, 0.071444,
    867   0.906716, 0.070337, 0.902425, 0.069783, 0.898050, 0.069783,
    868   0.897259, 0.069783,
    869   0.892051, 0.069617, 0.888884, 0.069894, 0.888634, 0.068343,
    870   0.887801, 0.063081, 0.893217, 0.052559, 0.893217, 0.052559,
    871   0.893217, 0.052559, 0.885843, 0.055106, 0.870136, 0.070835,
    872   0.860553, 0.080084, 0.848471, 0.093542, 0.834597, 0.112926,
    873   0.821570, 0.130482, 0.809195, 0.148873, 0.797517, 0.168032,
    874   0.794392, 0.173294,
    875   0.794090, 0.172950, 0.793770, 0.172636, 0.793434, 0.172352,
    876   0.796600, 0.154020, 0.808516, 0.110434, 0.867928, 0.000000,
    877   0.496667, 0.615805,
    878   0.496835, 0.615912, 0.497002, 0.616022, 0.497167, 0.616137,
    879   0.496667, 0.615805,
    880   0.485710, 0.760133,
    881   0.489376, 0.762570, 0.493626, 0.766004, 0.498333, 0.770878,
    882   0.498125, 0.770878,
    883   0.495817, 0.771653, 0.493631, 0.772966, 0.491667, 0.774755,
    884   0.489505, 0.770952, 0.487740, 0.766779, 0.486418, 0.762349,
    885   0.485710, 0.760133,
    886   0.283435, 0.847085,
    887   0.288934, 0.847085, 0.294934, 0.847860, 0.301433, 0.849743,
    888   0.302266, 0.850020,
    889   0.302975, 0.850242,
    890   0.307558, 0.851737, 0.312266, 0.853676, 0.317015, 0.855891,
    891   0.319390, 0.857054,
    892   0.327348, 0.861152, 0.335847, 0.865694, 0.344846, 0.870789,
    893   0.358178, 0.878487, 0.370636, 0.886130, 0.379760, 0.891558,
    894   0.387384, 0.896431,
    895   0.378177, 0.902302, 0.369719, 0.907286, 0.363345, 0.910886,
    896   0.321098, 0.933926, 0.287101, 0.940572, 0.265936, 0.932541,
    897   0.226564, 0.917643, 0.234272, 0.847473, 0.283435, 0.847140
    898 };
    899 
    900 // Public domain.
    901 constexpr char world_commands[] =
    902   "MLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLLLLLLLLZMLLLLLLLLLLLLLLZ";
    903 
    904 constexpr double world_vertices[] = {
    905   0.442757, 0.379556,
    906   0.438444, 0.387420,
    907   0.435571, 0.391353,
    908   0.429823, 0.395678,
    909   0.428960, 0.399218,
    910   0.426949, 0.404332,
    911   0.427238, 0.409837,
    912   0.421488, 0.416522,
    913   0.417463, 0.421635,
    914   0.415165, 0.424782,
    915   0.411716, 0.430287,
    916   0.408841, 0.435398,
    917   0.405679, 0.443658,
    918   0.402517, 0.453096,
    919   0.401941, 0.455062,
    920   0.402805, 0.465289,
    921   0.403379, 0.471974,
    922   0.402230, 0.481413,
    923   0.399357, 0.490065,
    924   0.400506, 0.495569,
    925   0.400793, 0.501863,
    926   0.401081, 0.505402,
    927   0.405680, 0.509729,
    928   0.409130, 0.514841,
    929   0.412004, 0.522707,
    930   0.415166, 0.529392,
    931   0.418615, 0.534900,
    932   0.423215, 0.540404,
    933   0.427525, 0.543942,
    934   0.431549, 0.545909,
    935   0.436148, 0.545909,
    936   0.441323, 0.544337,
    937   0.445634, 0.541976,
    938   0.449083, 0.542369,
    939   0.453106, 0.540799,
    940   0.457992, 0.539224,
    941   0.462880, 0.536862,
    942   0.466902, 0.536077,
    943   0.470352, 0.535684,
    944   0.474663, 0.536862,
    945   0.477539, 0.538438,
    946   0.480124, 0.542763,
    947   0.482136, 0.545911,
    948   0.483861, 0.546303,
    949   0.486736, 0.545518,
    950   0.489897, 0.546699,
    951   0.492483, 0.550630,
    952   0.493347, 0.552203,
    953   0.494783, 0.560855,
    954   0.493634, 0.569506,
    955   0.492197, 0.575800,
    956   0.493634, 0.580519,
    957   0.498808, 0.587989,
    958   0.502256, 0.596643,
    959   0.504270, 0.604507,
    960   0.507143, 0.612375,
    961   0.507718, 0.619059,
    962   0.507431, 0.624171,
    963   0.509156, 0.630858,
    964   0.508293, 0.637150,
    965   0.507718, 0.639510,
    966   0.505132, 0.646199,
    967   0.503407, 0.649735,
    968   0.501970, 0.659174,
    969   0.502832, 0.667037,
    970   0.507718, 0.678838,
    971   0.510304, 0.688275,
    972   0.512316, 0.694569,
    973   0.513178, 0.701254,
    974   0.513467, 0.709513,
    975   0.514616, 0.715807,
    976   0.515478, 0.720528,
    977   0.519502, 0.726820,
    978   0.521227, 0.730753,
    979   0.523527, 0.737438,
    980   0.524964, 0.748449,
    981   0.526975, 0.753956,
    982   0.531288, 0.756315,
    983   0.536462, 0.753563,
    984   0.541060, 0.753563,
    985   0.545373, 0.751203,
    986   0.549973, 0.748844,
    987   0.553995, 0.746089,
    988   0.558881, 0.739405,
    989   0.562905, 0.734291,
    990   0.568367, 0.727211,
    991   0.571527, 0.721707,
    992   0.573252, 0.716986,
    993   0.574978, 0.712268,
    994   0.579579, 0.704009,
    995   0.582739, 0.700076,
    996   0.584464, 0.697715,
    997   0.583891, 0.687885,
    998   0.582740, 0.684735,
    999   0.586190, 0.672937,
   1000   0.591939, 0.664287,
   1001   0.595676, 0.660354,
   1002   0.601999, 0.652882,
   1003   0.603724, 0.644621,
   1004   0.603151, 0.635576,
   1005   0.602000, 0.624171,
   1006   0.598838, 0.608047,
   1007   0.598262, 0.599395,
   1008   0.601138, 0.592317,
   1009   0.605737, 0.584449,
   1010   0.613497, 0.571080,
   1011   0.618957, 0.561249,
   1012   0.625856, 0.552201,
   1013   0.632181, 0.539616,
   1014   0.634765, 0.534505,
   1015   0.638503, 0.526639,
   1016   0.641375, 0.509334,
   1017   0.636202, 0.511300,
   1018   0.629591, 0.512481,
   1019   0.616946, 0.513660,
   1020   0.611483, 0.511300,
   1021   0.608323, 0.498716,
   1022   0.602862, 0.488096,
   1023   0.598261, 0.481413,
   1024   0.593950, 0.473546,
   1025   0.589639, 0.463321,
   1026   0.585902, 0.451522,
   1027   0.583315, 0.442870,
   1028   0.575267, 0.420059,
   1029   0.573255, 0.413767,
   1030   0.577567, 0.418880,
   1031   0.580729, 0.417698,
   1032   0.585040, 0.423597,
   1033   0.592515, 0.438150,
   1034   0.595964, 0.449161,
   1035   0.600276, 0.459388,
   1036   0.605735, 0.468827,
   1037   0.611773, 0.484164,
   1038   0.614646, 0.497535,
   1039   0.620107, 0.501076,
   1040   0.627006, 0.498716,
   1041   0.638503, 0.489668,
   1042   0.648852, 0.483770,
   1043   0.655173, 0.476300,
   1044   0.661211, 0.466073,
   1045   0.665233, 0.459780,
   1046   0.668684, 0.450341,
   1047   0.662648, 0.444835,
   1048   0.658048, 0.436576,
   1049   0.654023, 0.431465,
   1050   0.647124, 0.440119,
   1051   0.639077, 0.441297,
   1052   0.633902, 0.433824,
   1053   0.631604, 0.425173,
   1054   0.629304, 0.416912,
   1055   0.630166, 0.407080,
   1056   0.637640, 0.416519,
   1057   0.646550, 0.423206,
   1058   0.653448, 0.423990,
   1059   0.656035, 0.424383,
   1060   0.658621, 0.426349,
   1061   0.663794, 0.431855,
   1062   0.668970, 0.433820,
   1063   0.677882, 0.434608,
   1064   0.683341, 0.434214,
   1065   0.689665, 0.434998,
   1066   0.695414, 0.438538,
   1067   0.699725, 0.445225,
   1068   0.704898, 0.450730,
   1069   0.708635, 0.457416,
   1070   0.715248, 0.455846,
   1071   0.718123, 0.455846,
   1072   0.720133, 0.465285,
   1073   0.720133, 0.475903,
   1074   0.728182, 0.501466,
   1075   0.730481, 0.508941,
   1076   0.732492, 0.517985,
   1077   0.734792, 0.524278,
   1078   0.739104, 0.524278,
   1079   0.743990, 0.518771,
   1080   0.745428, 0.514051,
   1081   0.745428, 0.505008,
   1082   0.744566, 0.493212,
   1083   0.748302, 0.481019,
   1084   0.752325, 0.473153,
   1085   0.761237, 0.465680,
   1086   0.767273, 0.456636,
   1087   0.774459, 0.450737,
   1088   0.776472, 0.451524,
   1089   0.782507, 0.453491,
   1090   0.789406, 0.464109,
   1091   0.792856, 0.471976,
   1092   0.798892, 0.480233,
   1093   0.800330, 0.488492,
   1094   0.805214, 0.484954,
   1095   0.808662, 0.490460,
   1096   0.811251, 0.503045,
   1097   0.810962, 0.508549,
   1098   0.811251, 0.518774,
   1099   0.813549, 0.525856,
   1100   0.814697, 0.514450,
   1101   0.816135, 0.501081,
   1102   0.820159, 0.502261,
   1103   0.824470, 0.509339,
   1104   0.829645, 0.516810,
   1105   0.833381, 0.522316,
   1106   0.839418, 0.519564,
   1107   0.848330, 0.505011,
   1108   0.846603, 0.493215,
   1109   0.837118, 0.475517,
   1110   0.833097, 0.462539,
   1111   0.840857, 0.452708,
   1112   0.847178, 0.462147,
   1113   0.850053, 0.469225,
   1114   0.854938, 0.455857,
   1115   0.857526, 0.452710,
   1116   0.862701, 0.447598,
   1117   0.870749, 0.444058,
   1118   0.878222, 0.431472,
   1119   0.880809, 0.418888,
   1120   0.876784, 0.403156,
   1121   0.872763, 0.398045,
   1122   0.865863, 0.386246,
   1123   0.865574, 0.380347,
   1124   0.868450, 0.374841,
   1125   0.866724, 0.371696,
   1126   0.861838, 0.372091,
   1127   0.853217, 0.366586,
   1128   0.860400, 0.353216,
   1129   0.865862, 0.352821,
   1130   0.868162, 0.361471,
   1131   0.874198, 0.357147,
   1132   0.877646, 0.359899,
   1133   0.879084, 0.368158,
   1134   0.881096, 0.369338,
   1135   0.887706, 0.377597,
   1136   0.889719, 0.386249,
   1137   0.895469, 0.385070,
   1138   0.900066, 0.376024,
   1139   0.895755, 0.369338,
   1140   0.886559, 0.360687,
   1141   0.887132, 0.350460,
   1142   0.889144, 0.343775,
   1143   0.894318, 0.338661,
   1144   0.899492, 0.338269,
   1145   0.900356, 0.336695,
   1146   0.904377, 0.323323,
   1147   0.903803, 0.316245,
   1148   0.903517, 0.302087,
   1149   0.897480, 0.292648,
   1150   0.888282, 0.285961,
   1151   0.875635, 0.285177,
   1152   0.871899, 0.280456,
   1153   0.873625, 0.264723,
   1154   0.879371, 0.258038,
   1155   0.888859, 0.256073,
   1156   0.902656, 0.258828,
   1157   0.909267, 0.258828,
   1158   0.910991, 0.248601,
   1159   0.916164, 0.244273,
   1160   0.922779, 0.246239,
   1161   0.925940, 0.242308,
   1162   0.927086, 0.243882,
   1163   0.929674, 0.245451,
   1164   0.930824, 0.255678,
   1165   0.927376, 0.264723,
   1166   0.930536, 0.275738,
   1167   0.936285, 0.282423,
   1168   0.940597, 0.291076,
   1169   0.945483, 0.297368,
   1170   0.948933, 0.298156,
   1171   0.948933, 0.288717,
   1172   0.949505, 0.276524,
   1173   0.945770, 0.266693,
   1174   0.938873, 0.261187,
   1175   0.946059, 0.251355,
   1176   0.950942, 0.248996,
   1177   0.954968, 0.251355,
   1178   0.959567, 0.244277,
   1179   0.964740, 0.244277,
   1180   0.967039, 0.241132,
   1181   0.957844, 0.234838,
   1182   0.951805, 0.230121,
   1183   0.955256, 0.228548,
   1184   0.958420, 0.224220,
   1185   0.971642, 0.228548,
   1186   0.979975, 0.229727,
   1187   0.974227, 0.222647,
   1188   0.960719, 0.218321,
   1189   0.952096, 0.218713,
   1190   0.943760, 0.214386,
   1191   0.915306, 0.208095,
   1192   0.911568, 0.214780,
   1193   0.905243, 0.212026,
   1194   0.888572, 0.208488,
   1195   0.874490, 0.206127,
   1196   0.863281, 0.203767,
   1197   0.850059, 0.203767,
   1198   0.840000, 0.202980,
   1199   0.835114, 0.199442,
   1200   0.830227, 0.197476,
   1201   0.825916, 0.195902,
   1202   0.823616, 0.200621,
   1203   0.819016, 0.205341,
   1204   0.812405, 0.204948,
   1205   0.807231, 0.203375,
   1206   0.800620, 0.202980,
   1207   0.790560, 0.200228,
   1208   0.784236, 0.196688,
   1209   0.777338, 0.195902,
   1210   0.765841, 0.199442,
   1211   0.755494, 0.197868,
   1212   0.745433, 0.195114,
   1213   0.735085, 0.193148,
   1214   0.739109, 0.186463,
   1215   0.740545, 0.183318,
   1216   0.734223, 0.180958,
   1217   0.725887, 0.181744,
   1218   0.718128, 0.179385,
   1219   0.703757, 0.180958,
   1220   0.698295, 0.182530,
   1221   0.685648, 0.190395,
   1222   0.674152, 0.192360,
   1223   0.666390, 0.197866,
   1224   0.668978, 0.207698,
   1225   0.663230, 0.212024,
   1226   0.656905, 0.201406,
   1227   0.659779, 0.220283,
   1228   0.654029, 0.218709,
   1229   0.653742, 0.209270,
   1230   0.651730, 0.202585,
   1231   0.648569, 0.197866,
   1232   0.644545, 0.195505,
   1233   0.638510, 0.199439,
   1234   0.642531, 0.208484,
   1235   0.645981, 0.215169,
   1236   0.632472, 0.216350,
   1237   0.627296, 0.213597,
   1238   0.620400, 0.210057,
   1239   0.612926, 0.215955,
   1240   0.605741, 0.216350,
   1241   0.597406, 0.216350,
   1242   0.587920, 0.221463,
   1243   0.578434, 0.228541,
   1244   0.566938, 0.236405,
   1245   0.558314, 0.223427,
   1246   0.566938, 0.222641,
   1247   0.573547, 0.222641,
   1248   0.573260, 0.216349,
   1249   0.564063, 0.212809,
   1250   0.556589, 0.209269,
   1251   0.543941, 0.206124,
   1252   0.536182, 0.205730,
   1253   0.528708, 0.204944,
   1254   0.521235, 0.208091,
   1255   0.512899, 0.215955,
   1256   0.502840, 0.226182,
   1257   0.494504, 0.236800,
   1258   0.492778, 0.242699,
   1259   0.486455, 0.244665,
   1260   0.484729, 0.245058,
   1261   0.485017, 0.261182,
   1262   0.491915, 0.258825,
   1263   0.501975, 0.269441,
   1264   0.506861, 0.275735,
   1265   0.510310, 0.274160,
   1266   0.516634, 0.265903,
   1267   0.520658, 0.256857,
   1268   0.517782, 0.250958,
   1269   0.519220, 0.241911,
   1270   0.524682, 0.234438,
   1271   0.533879, 0.232081,
   1272   0.533590, 0.236012,
   1273   0.528991, 0.245451,
   1274   0.533014, 0.252531,
   1275   0.539052, 0.251350,
   1276   0.544512, 0.250958,
   1277   0.545949, 0.256071,
   1278   0.539052, 0.259611,
   1279   0.535314, 0.261183,
   1280   0.533301, 0.270622,
   1281   0.528416, 0.272196,
   1282   0.523817, 0.282027,
   1283   0.521231, 0.281633,
   1284   0.517207, 0.281239,
   1285   0.512033, 0.284779,
   1286   0.508584, 0.285173,
   1287   0.505709, 0.282027,
   1288   0.499387, 0.282027,
   1289   0.493925, 0.283206,
   1290   0.492200, 0.280847,
   1291   0.487314, 0.287141,
   1292   0.486452, 0.287532,
   1293   0.479841, 0.289893,
   1294   0.477254, 0.296971,
   1295   0.473230, 0.298544,
   1296   0.468344, 0.305623,
   1297   0.464895, 0.307196,
   1298   0.461157, 0.308375,
   1299   0.458284, 0.308769,
   1300   0.453397, 0.311129,
   1301   0.456559, 0.316635,
   1302   0.452822, 0.319780,
   1303   0.456271, 0.323320,
   1304   0.458570, 0.328434,
   1305   0.459433, 0.330793,
   1306   0.458570, 0.337873,
   1307   0.455984, 0.339838,
   1308   0.449946, 0.341018,
   1309   0.440749, 0.337086,
   1310   0.437013, 0.338657,
   1311   0.434140, 0.348096,
   1312   0.433851, 0.358716,
   1313   0.433562, 0.366975,
   1314   0.435864, 0.372089,
   1315   0.440749, 0.373269,
   1316   0.445635, 0.374447,
   1317   0.451672, 0.374841,
   1318   0.460584, 0.367370,
   1319   0.462595, 0.361864,
   1320   0.465757, 0.352426,
   1321   0.470355, 0.350065,
   1322   0.473805, 0.342987,
   1323   0.478116, 0.339054,
   1324   0.487027, 0.338269,
   1325   0.488463, 0.333548,
   1326   0.491625, 0.334728,
   1327   0.493636, 0.335123,
   1328   0.497373, 0.342594,
   1329   0.501685, 0.345739,
   1330   0.506285, 0.348493,
   1331   0.511170, 0.353998,
   1332   0.513471, 0.357931,
   1333   0.514907, 0.360292,
   1334   0.510022, 0.367370,
   1335   0.506285, 0.368156,
   1336   0.510596, 0.370515,
   1337   0.516919, 0.361470,
   1338   0.516919, 0.359502,
   1339   0.518357, 0.355571,
   1340   0.521231, 0.356752,
   1341   0.520943, 0.354786,
   1342   0.514332, 0.346527,
   1343   0.508294, 0.342199,
   1344   0.505421, 0.337875,
   1345   0.502257, 0.332760,
   1346   0.503121, 0.327255,
   1347   0.511168, 0.333153,
   1348   0.516055, 0.338659,
   1349   0.520941, 0.342987,
   1350   0.525254, 0.348100,
   1351   0.526402, 0.356359,
   1352   0.529276, 0.360292,
   1353   0.531862, 0.367370,
   1354   0.534449, 0.372091,
   1355   0.536461, 0.372484,
   1356   0.538473, 0.371303,
   1357   0.538759, 0.366977,
   1358   0.541636, 0.364616,
   1359   0.537324, 0.357538,
   1360   0.538759, 0.353214,
   1361   0.544797, 0.353998,
   1362   0.550545, 0.353998,
   1363   0.550545, 0.364616,
   1364   0.553709, 0.370910,
   1365   0.558594, 0.374843,
   1366   0.564631, 0.375631,
   1367   0.570380, 0.375238,
   1368   0.577853, 0.375631,
   1369   0.582452, 0.376811,
   1370   0.583028, 0.382709,
   1371   0.581015, 0.393328,
   1372   0.575266, 0.403947,
   1373   0.570382, 0.405127,
   1374   0.560896, 0.403947,
   1375   0.547387, 0.402766,
   1376   0.538762, 0.399621,
   1377   0.533014, 0.395688,
   1378   0.531290, 0.396083,
   1379   0.528128, 0.405915,
   1380   0.525827, 0.407094,
   1381   0.517205, 0.404342,
   1382   0.508008, 0.397656,
   1383   0.501109, 0.394904,
   1384   0.495360, 0.388610,
   1385   0.495648, 0.380745,
   1386   0.497660, 0.373667,
   1387   0.495360, 0.371702,
   1388   0.488175, 0.374454,
   1389   0.482138, 0.375635,
   1390   0.467766, 0.378387,
   1391   0.465466, 0.379173,
   1392   0.460005, 0.381927,
   1393   0.455120, 0.381533,
   1394   0.450234, 0.381533,
   1395   0.445059, 0.383497,
   1396   0.442722, 0.379549,
   1397   0.635048, 0.638326,
   1398   0.631024, 0.648944,
   1399   0.625274, 0.652877,
   1400   0.622113, 0.655631,
   1401   0.618089, 0.657991,
   1402   0.616364, 0.660742,
   1403   0.617226, 0.669787,
   1404   0.616940, 0.676476,
   1405   0.614640, 0.684338,
   1406   0.612053, 0.688666,
   1407   0.612341, 0.699678,
   1408   0.616079, 0.707544,
   1409   0.619528, 0.706364,
   1410   0.624127, 0.703614,
   1411   0.626425, 0.700074,
   1412   0.627287, 0.689454,
   1413   0.629876, 0.681983,
   1414   0.632750, 0.673331,
   1415   0.635049, 0.665861,
   1416   0.636198, 0.656422,
   1417   0.637062, 0.651703,
   1418   0.637062, 0.646984,
   1419   0.635018, 0.638317,
   1420   0.860106, 0.691425,
   1421   0.858095, 0.711875,
   1422   0.856947, 0.726425,
   1423   0.857809, 0.740191,
   1424   0.856657, 0.751203,
   1425   0.854648, 0.752775,
   1426   0.856657, 0.756314,
   1427   0.861546, 0.755920,
   1428   0.868157, 0.753560,
   1429   0.873904, 0.751199,
   1430   0.881379, 0.750020,
   1431   0.886264, 0.746482,
   1432   0.894601, 0.743728,
   1433   0.899775, 0.740190,
   1434   0.908399, 0.739793,
   1435   0.915008, 0.739793,
   1436   0.920759, 0.747266,
   1437   0.920468, 0.753560,
   1438   0.923918, 0.753165,
   1439   0.930242, 0.748446,
   1440   0.933116, 0.746482,
   1441   0.930816, 0.754739,
   1442   0.931390, 0.759067,
   1443   0.933116, 0.764571,
   1444   0.933116, 0.770077,
   1445   0.934263, 0.773222,
   1446   0.939151, 0.777157,
   1447   0.942888, 0.775584,
   1448   0.948060, 0.777552,
   1449   0.953523, 0.776372,
   1450   0.967030, 0.765751,
   1451   0.971342, 0.759459,
   1452   0.975079, 0.754739,
   1453   0.981692, 0.746087,
   1454   0.987729, 0.735862,
   1455   0.989740, 0.729566,
   1456   0.992326, 0.718950,
   1457   0.992900, 0.712265,
   1458   0.992326, 0.701649,
   1459   0.990601, 0.694567,
   1460   0.985715, 0.691029,
   1461   0.981977, 0.681197,
   1462   0.977666, 0.672936,
   1463   0.975079, 0.670185,
   1464   0.975943, 0.662318,
   1465   0.974794, 0.654848,
   1466   0.972494, 0.646587,
   1467   0.969619, 0.639902,
   1468   0.967895, 0.634789,
   1469   0.966458, 0.634394,
   1470   0.964731, 0.646978,
   1471   0.961569, 0.655632,
   1472   0.958409, 0.662316,
   1473   0.954959, 0.663888,
   1474   0.951223, 0.663104,
   1475   0.946910, 0.658383,
   1476   0.944036, 0.654846,
   1477   0.942025, 0.650518,
   1478   0.942887, 0.643833,
   1479   0.944899, 0.638719,
   1480   0.943461, 0.636360,
   1481   0.938574, 0.635965,
   1482   0.933400, 0.635179,
   1483   0.931389, 0.635572,
   1484   0.924778, 0.642654,
   1485   0.922769, 0.645406,
   1486   0.920180, 0.647766,
   1487   0.919890, 0.654058,
   1488   0.912995, 0.651306,
   1489   0.913281, 0.648946,
   1490   0.909259, 0.645407,
   1491   0.904947, 0.649341,
   1492   0.902934, 0.654451,
   1493   0.899485, 0.657598,
   1494   0.898337, 0.663497,
   1495   0.896326, 0.661533,
   1496   0.895177, 0.659960,
   1497   0.893165, 0.664678,
   1498   0.891153, 0.670972,
   1499   0.888564, 0.673725,
   1500   0.881669, 0.678052,
   1501   0.876208, 0.680804,
   1502   0.871321, 0.682771,
   1503   0.866721, 0.685916,
   1504   0.862411, 0.689456,
   1505   0.860164, 0.691396,
   1506   0.877065, 0.536076,
   1507   0.870744, 0.545909,
   1508   0.866719, 0.547875,
   1509   0.862120, 0.552988,
   1510   0.858956, 0.560459,
   1511   0.855508, 0.564787,
   1512   0.851771, 0.569115,
   1513   0.852921, 0.576586,
   1514   0.855221, 0.583269,
   1515   0.859244, 0.587599,
   1516   0.867578, 0.587599,
   1517   0.871316, 0.588779,
   1518   0.873902, 0.587992,
   1519   0.876202, 0.583666,
   1520   0.876776, 0.579731,
   1521   0.880801, 0.573832,
   1522   0.881089, 0.569504,
   1523   0.883389, 0.566753,
   1524   0.882813, 0.562425,
   1525   0.881375, 0.554165,
   1526   0.883389, 0.547087,
   1527   0.882813, 0.541187,
   1528   0.878502, 0.536859,
   1529   0.877084, 0.536055,
   1530   0.933406, 0.575407,
   1531   0.938869, 0.578160,
   1532   0.941169, 0.587204,
   1533   0.946052, 0.590353,
   1534   0.950938, 0.584847,
   1535   0.953238, 0.581307,
   1536   0.956404, 0.582490,
   1537   0.961576, 0.585240,
   1538   0.970775, 0.589960,
   1539   0.977385, 0.593893,
   1540   0.981983, 0.597433,
   1541   0.985145, 0.604904,
   1542   0.987158, 0.608049,
   1543   0.988596, 0.614732,
   1544   0.997504, 0.624566,
   1545   0.999232, 0.628894,
   1546   0.991471, 0.627713,
   1547   0.986583, 0.622994,
   1548   0.980263, 0.615915,
   1549   0.976813, 0.612769,
   1550   0.971926, 0.617881,
   1551   0.968189, 0.617488,
   1552   0.961291, 0.615520,
   1553   0.957844, 0.612769,
   1554   0.954970, 0.610803,
   1555   0.955256, 0.605295,
   1556   0.954109, 0.600578,
   1557   0.950084, 0.596250,
   1558   0.944911, 0.593498,
   1559   0.943760, 0.593105,
   1560   0.940598, 0.591925,
   1561   0.935425, 0.589958,
   1562   0.934849, 0.585239,
   1563   0.934849, 0.581306,
   1564   0.930251, 0.576588,
   1565   0.930537, 0.575407,
   1566   0.933410, 0.575389,
   1567   0.804059, 0.542750,
   1568   0.807795, 0.544325,
   1569   0.813257, 0.552975,
   1570   0.818717, 0.559269,
   1571   0.825903, 0.565168,
   1572   0.830214, 0.573425,
   1573   0.834525, 0.582476,
   1574   0.836827, 0.587980,
   1575   0.839124, 0.593879,
   1576   0.837976, 0.600957,
   1577   0.834813, 0.604104,
   1578   0.830214, 0.599384,
   1579   0.825615, 0.590341,
   1580   0.820154, 0.578148,
   1581   0.816418, 0.571068,
   1582   0.812106, 0.560842,
   1583   0.808656, 0.554943,
   1584   0.806070, 0.548258,
   1585   0.803197, 0.543142,
   1586   0.804040, 0.542757,
   1587   0.245013, 0.849518,
   1588   0.237253, 0.843619,
   1589   0.231505, 0.833391,
   1590   0.228342, 0.825131,
   1591   0.225469, 0.816481,
   1592   0.228056, 0.811368,
   1593   0.228342, 0.805863,
   1594   0.226042, 0.800750,
   1595   0.224031, 0.793277,
   1596   0.220869, 0.786985,
   1597   0.218569, 0.783838,
   1598   0.216844, 0.751982,
   1599   0.215695, 0.734284,
   1600   0.215119, 0.718553,
   1601   0.214544, 0.703216,
   1602   0.214257, 0.687880,
   1603   0.214257, 0.671363,
   1604   0.210520, 0.665463,
   1605   0.203047, 0.660745,
   1606   0.194136, 0.650910,
   1607   0.186663, 0.642259,
   1608   0.182639, 0.632032,
   1609   0.179190, 0.620629,
   1610   0.174591, 0.610011,
   1611   0.167692, 0.598607,
   1612   0.168267, 0.592315,
   1613   0.172003, 0.587596,
   1614   0.170278, 0.582876,
   1615   0.170278, 0.574224,
   1616   0.174589, 0.565963,
   1617   0.178900, 0.556133,
   1618   0.182351, 0.547478,
   1619   0.184362, 0.538435,
   1620   0.182062, 0.530173,
   1621   0.184362, 0.523882,
   1622   0.191548, 0.512870,
   1623   0.195859, 0.511689,
   1624   0.200746, 0.507361,
   1625   0.203333, 0.517193,
   1626   0.205632, 0.520342,
   1627   0.207356, 0.514439,
   1628   0.210230, 0.506970,
   1629   0.214829, 0.510510,
   1630   0.219139, 0.513655,
   1631   0.224600, 0.514050,
   1632   0.235523, 0.515620,
   1633   0.236959, 0.519554,
   1634   0.243858, 0.525454,
   1635   0.251619, 0.530567,
   1636   0.256792, 0.538036,
   1637   0.260529, 0.541183,
   1638   0.265989, 0.543545,
   1639   0.269151, 0.544332,
   1640   0.276050, 0.554162,
   1641   0.278061, 0.566356,
   1642   0.273175, 0.575008,
   1643   0.280073, 0.572648,
   1644   0.283523, 0.572648,
   1645   0.285248, 0.573827,
   1646   0.284959, 0.576581,
   1647   0.287834, 0.575008,
   1648   0.293294, 0.577760,
   1649   0.298755, 0.584054,
   1650   0.302492, 0.583661,
   1651   0.308529, 0.584840,
   1652   0.313416, 0.586020,
   1653   0.322325, 0.591525,
   1654   0.326637, 0.595458,
   1655   0.329511, 0.597426,
   1656   0.333535, 0.602142,
   1657   0.333821, 0.607254,
   1658   0.329511, 0.619053,
   1659   0.326637, 0.624559,
   1660   0.324337, 0.628099,
   1661   0.322038, 0.639503,
   1662   0.320889, 0.644616,
   1663   0.319740, 0.658776,
   1664   0.318590, 0.669001,
   1665   0.317440, 0.676079,
   1666   0.313704, 0.688665,
   1667   0.310830, 0.691811,
   1668   0.305656, 0.694958,
   1669   0.295884, 0.698498,
   1670   0.290423, 0.705968,
   1671   0.290423, 0.717376,
   1672   0.286112, 0.727992,
   1673   0.284676, 0.735463,
   1674   0.283814, 0.739396,
   1675   0.278927, 0.747263,
   1676   0.277777, 0.750801,
   1677   0.273753, 0.754732,
   1678   0.272890, 0.755913,
   1679   0.267716, 0.754732,
   1680   0.262255, 0.751980,
   1681   0.265130, 0.759060,
   1682   0.270878, 0.765354,
   1683   0.268866, 0.769680,
   1684   0.268003, 0.771254,
   1685   0.263979, 0.777548,
   1686   0.261392, 0.778727,
   1687   0.256794, 0.776760,
   1688   0.255356, 0.780298,
   1689   0.254781, 0.790132,
   1690   0.249894, 0.790132,
   1691   0.249319, 0.788164,
   1692   0.247308, 0.788951,
   1693   0.247883, 0.794456,
   1694   0.250469, 0.798388,
   1695   0.251045, 0.805074,
   1696   0.249608, 0.808221,
   1697   0.247308, 0.812941,
   1698   0.247883, 0.818839,
   1699   0.252482, 0.822773,
   1700   0.252195, 0.831818,
   1701   0.249321, 0.840469,
   1702   0.250184, 0.847156,
   1703   0.250759, 0.849516,
   1704   0.245025, 0.849464,
   1705   0.170858, 0.529384,
   1706   0.168847, 0.525452,
   1707   0.166547, 0.522699,
   1708   0.161947, 0.517193,
   1709   0.160510, 0.512869,
   1710   0.160222, 0.501071,
   1711   0.161085, 0.488879,
   1712   0.160510, 0.485339,
   1713   0.151887, 0.483373,
   1714   0.145563, 0.484945,
   1715   0.149300, 0.471182,
   1716   0.152461, 0.459385,
   1717   0.151599, 0.456240,
   1718   0.145276, 0.455058,
   1719   0.142402, 0.458204,
   1720   0.137803, 0.468823,
   1721   0.132630, 0.471970,
   1722   0.126880, 0.471184,
   1723   0.118258, 0.463713,
   1724   0.116534, 0.452308,
   1725   0.119407, 0.439330,
   1726   0.122282, 0.428317,
   1727   0.123719, 0.421632,
   1728   0.130042, 0.416519,
   1729   0.135215, 0.412193,
   1730   0.140390, 0.410620,
   1731   0.146138, 0.410620,
   1732   0.150737, 0.413765,
   1733   0.154761, 0.411013,
   1734   0.159360, 0.405506,
   1735   0.163671, 0.406294,
   1736   0.167407, 0.407867,
   1737   0.172006, 0.411798,
   1738   0.173155, 0.414158,
   1739   0.174306, 0.418483,
   1740   0.175742, 0.429889,
   1741   0.178616, 0.434608,
   1742   0.181202, 0.430284,
   1743   0.182065, 0.419664,
   1744   0.180916, 0.406292,
   1745   0.183789, 0.398426,
   1746   0.197585, 0.385449,
   1747   0.204195, 0.379550,
   1748   0.206208, 0.375224,
   1749   0.212244, 0.364999,
   1750   0.216269, 0.359495,
   1751   0.220005, 0.354383,
   1752   0.226041, 0.348879,
   1753   0.231503, 0.347303,
   1754   0.234377, 0.339831,
   1755   0.242425, 0.331965,
   1756   0.250760, 0.327641,
   1757   0.253347, 0.327641,
   1758   0.250185, 0.333540,
   1759   0.253634, 0.336685,
   1760   0.260820, 0.329213,
   1761   0.265706, 0.328425,
   1762   0.270306, 0.325673,
   1763   0.271168, 0.322135,
   1764   0.268006, 0.321740,
   1765   0.261107, 0.323313,
   1766   0.257084, 0.318592,
   1767   0.261682, 0.311907,
   1768   0.251623, 0.312693,
   1769   0.247023, 0.312693,
   1770   0.247023, 0.308762,
   1771   0.256509, 0.304040,
   1772   0.274904, 0.302075,
   1773   0.282952, 0.300895,
   1774   0.289563, 0.294209,
   1775   0.292437, 0.290277,
   1776   0.293587, 0.285165,
   1777   0.289563, 0.280838,
   1778   0.286977, 0.281232,
   1779   0.283815, 0.274153,
   1780   0.282378, 0.268255,
   1781   0.282953, 0.260388,
   1782   0.282953, 0.255278,
   1783   0.280080, 0.254883,
   1784   0.268870, 0.262749,
   1785   0.265707, 0.255278,
   1786   0.264845, 0.250165,
   1787   0.257372, 0.245444,
   1788   0.250474, 0.244265,
   1789   0.242137, 0.254883,
   1790   0.238402, 0.260388,
   1791   0.236966, 0.276907,
   1792   0.228342, 0.281232,
   1793   0.224607, 0.284772,
   1794   0.221444, 0.296176,
   1795   0.213971, 0.293424,
   1796   0.214258, 0.282413,
   1797   0.216845, 0.278873,
   1798   0.198736, 0.273367,
   1799   0.192701, 0.266682,
   1800   0.192414, 0.257243,
   1801   0.204772, 0.243873,
   1802   0.217707, 0.236793,
   1803   0.224318, 0.234435,
   1804   0.225755, 0.228929,
   1805   0.226329, 0.224208,
   1806   0.229779, 0.227355,
   1807   0.232079, 0.228139,
   1808   0.238977, 0.222242,
   1809   0.246739, 0.219490,
   1810   0.252486, 0.212410,
   1811   0.250186, 0.209263,
   1812   0.245875, 0.212803,
   1813   0.238977, 0.215948,
   1814   0.234953, 0.216736,
   1815   0.235528, 0.211624,
   1816   0.233804, 0.210445,
   1817   0.231504, 0.207300,
   1818   0.230067, 0.200220,
   1819   0.222594, 0.206905,
   1820   0.211958, 0.221063,
   1821   0.208509, 0.218702,
   1822   0.202473, 0.215950,
   1823   0.190114, 0.215950,
   1824   0.184076, 0.216738,
   1825   0.179766, 0.223425,
   1826   0.176317, 0.219492,
   1827   0.170569, 0.217919,
   1828   0.165396, 0.215952,
   1829   0.165396, 0.212412,
   1830   0.145849, 0.211233,
   1831   0.137515, 0.208481,
   1832   0.124005, 0.210446,
   1833   0.109633, 0.215952,
   1834   0.101298, 0.214379,
   1835   0.100435, 0.212414,
   1836   0.097562, 0.208482,
   1837   0.093538, 0.203370,
   1838   0.080605, 0.203370,
   1839   0.065371, 0.206515,
   1840   0.053586, 0.207303,
   1841   0.043527, 0.211234,
   1842   0.035192, 0.212809,
   1843   0.029155, 0.218314,
   1844   0.031454, 0.223427,
   1845   0.029155, 0.227358,
   1846   0.025419, 0.225786,
   1847   0.017370, 0.224606,
   1848   0.013921, 0.229720,
   1849   0.019095, 0.233652,
   1850   0.022832, 0.230507,
   1851   0.024844, 0.232867,
   1852   0.019095, 0.239161,
   1853   0.011048, 0.240340,
   1854   0.005299, 0.242701,
   1855   0.000700, 0.248600,
   1856   0.000700, 0.254105,
   1857   0.000987, 0.256857,
   1858   0.006448, 0.260395,
   1859   0.007597, 0.261968,
   1860   0.008172, 0.264722,
   1861   0.016507, 0.261968,
   1862   0.023980, 0.258037,
   1863   0.029154, 0.252922,
   1864   0.030303, 0.255283,
   1865   0.032029, 0.256067,
   1866   0.036053, 0.253709,
   1867   0.042664, 0.250955,
   1868   0.046113, 0.252136,
   1869   0.047262, 0.252136,
   1870   0.054735, 0.253709,
   1871   0.066232, 0.258821,
   1872   0.069394, 0.261180,
   1873   0.072556, 0.266292,
   1874   0.071981, 0.285563,
   1875   0.071406, 0.290676,
   1876   0.073994, 0.312305,
   1877   0.070257, 0.313878,
   1878   0.068820, 0.320956,
   1879   0.064509, 0.330001,
   1880   0.058473, 0.339831,
   1881   0.053874, 0.350058,
   1882   0.050712, 0.357530,
   1883   0.051287, 0.374048,
   1884   0.054449, 0.386634,
   1885   0.058473, 0.390958,
   1886   0.062784, 0.397252,
   1887   0.063071, 0.411412,
   1888   0.065083, 0.419669,
   1889   0.067382, 0.428322,
   1890   0.069108, 0.433436,
   1891   0.071120, 0.436974,
   1892   0.072557, 0.441692,
   1893   0.072845, 0.443268,
   1894   0.071982, 0.434614,
   1895   0.070833, 0.427929,
   1896   0.069396, 0.419276,
   1897   0.066810, 0.411803,
   1898   0.065948, 0.403544,
   1899   0.070260, 0.403544,
   1900   0.073134, 0.412591,
   1901   0.075145, 0.420849,
   1902   0.079169, 0.432253,
   1903   0.081755, 0.436186,
   1904   0.086068, 0.447198,
   1905   0.089229, 0.454669,
   1906   0.088941, 0.460568,
   1907   0.089515, 0.468041,
   1908   0.093827, 0.471186,
   1909   0.098714, 0.475905,
   1910   0.103025, 0.479443,
   1911   0.107335, 0.482983,
   1912   0.111936, 0.484558,
   1913   0.115096, 0.485737,
   1914   0.118546, 0.486130,
   1915   0.121707, 0.484558,
   1916   0.125444, 0.484949,
   1917   0.128893, 0.488491,
   1918   0.132055, 0.492029,
   1919   0.136366, 0.495174,
   1920   0.140677, 0.496747,
   1921   0.143552, 0.497141,
   1922   0.146425, 0.497929,
   1923   0.149298, 0.503040,
   1924   0.152460, 0.508153,
   1925   0.153322, 0.513658,
   1926   0.155335, 0.518379,
   1927   0.159357, 0.523095,
   1928   0.163668, 0.524276,
   1929   0.167118, 0.527816,
   1930   0.170757, 0.529389,
   1931   0.262981, 0.164030,
   1932   0.280227, 0.161081,
   1933   0.289281, 0.158131,
   1934   0.298334, 0.152823,
   1935   0.309545, 0.150463,
   1936   0.320755, 0.152823,
   1937   0.331963, 0.154003,
   1938   0.342742, 0.155182,
   1939   0.354814, 0.155182,
   1940   0.368610, 0.153412,
   1941   0.379390, 0.156361,
   1942   0.392755, 0.156361,
   1943   0.406983, 0.156361,
   1944   0.418193, 0.155773,
   1945   0.425521, 0.155182,
   1946   0.432850, 0.158722,
   1947   0.433282, 0.163441,
   1948   0.424658, 0.171110,
   1949   0.419053, 0.184089,
   1950   0.407412, 0.188808,
   1951   0.406982, 0.201196,
   1952   0.403101, 0.208274,
   1953   0.394479, 0.210044,
   1954   0.381545, 0.213584,
   1955   0.371628, 0.217713,
   1956   0.365592, 0.224203,
   1957   0.351795, 0.231871,
   1958   0.348346, 0.240132,
   1959   0.338860, 0.251932,
   1960   0.332824, 0.246622,
   1961   0.328081, 0.237183,
   1962   0.325925, 0.225384,
   1963   0.325925, 0.214766,
   1964   0.334117, 0.214177,
   1965   0.336705, 0.208867,
   1966   0.334979, 0.198837,
   1967   0.332393, 0.188810,
   1968   0.327219, 0.182321,
   1969   0.320321, 0.176422,
   1970   0.312559, 0.174652,
   1971   0.311265, 0.169932,
   1972   0.322907, 0.170521,
   1973   0.328081, 0.165213,
   1974   0.325925, 0.161083,
   1975   0.311267, 0.165802,
   1976   0.300919, 0.168751,
   1977   0.288848, 0.174061,
   1978   0.286260, 0.178190,
   1979   0.282381, 0.178190,
   1980   0.275052, 0.180551,
   1981   0.269878, 0.177601,
   1982   0.268154, 0.176422,
   1983   0.260393, 0.172291,
   1984   0.260824, 0.167572,
   1985   0.262969, 0.164030,
   1986   0.253493, 0.190576,
   1987   0.247457, 0.199426,
   1988   0.252200, 0.205916,
   1989   0.261685, 0.202966,
   1990   0.272894, 0.209456,
   1991   0.275480, 0.223614,
   1992   0.269444, 0.228924,
   1993   0.266426, 0.236002,
   1994   0.277636, 0.243672,
   1995   0.284102, 0.240134,
   1996   0.284964, 0.232464,
   1997   0.289708, 0.231284,
   1998   0.287121, 0.222436,
   1999   0.292294, 0.225385,
   2000   0.294019, 0.220666,
   2001   0.292294, 0.212997,
   2002   0.286690, 0.205329,
   2003   0.284964, 0.198250,
   2004   0.275479, 0.194120,
   2005   0.265131, 0.191761,
   2006   0.256509, 0.194710,
   2007   0.253508, 0.190576,
   2008   0.157347, 0.197656,
   2009   0.169420, 0.188218,
   2010   0.178904, 0.189988,
   2011   0.187958, 0.198836,
   2012   0.196150, 0.197656,
   2013   0.206066, 0.197068,
   2014   0.203479, 0.208276,
   2015   0.191406, 0.211816,
   2016   0.184076, 0.210637,
   2017   0.178471, 0.211816,
   2018   0.172868, 0.211226,
   2019   0.169849, 0.204736,
   2020   0.168986, 0.200017,
   2021   0.162519, 0.198837,
   2022   0.157360, 0.197656
   2023 };
   2024 
   2025 bool get_shape_data(ShapeData& dst, ShapeKind kind) {
   2026   switch (kind) {
   2027     case ShapeKind::kButterfly:
   2028       dst.size = sizeof(butterfly_commands) - 1;
   2029       dst.commands = butterfly_commands;
   2030       dst.vertices = reinterpret_cast<const BLPoint*>(butterfly_vertices);
   2031       return true;
   2032 
   2033     case ShapeKind::kFish:
   2034       dst.size = sizeof(fish_commands) - 1;
   2035       dst.commands = fish_commands;
   2036       dst.vertices = reinterpret_cast<const BLPoint*>(fish_vertices);
   2037       return true;
   2038 
   2039     case ShapeKind::kDragon:
   2040       dst.size = sizeof(dragon_commands) - 1;
   2041       dst.commands = dragon_commands;
   2042       dst.vertices = reinterpret_cast<const BLPoint*>(dragon_vertices);
   2043       return true;
   2044 
   2045     case ShapeKind::kWorld:
   2046       dst.size = sizeof(world_commands) - 1;
   2047       dst.commands = world_commands;
   2048       dst.vertices = reinterpret_cast<const BLPoint*>(world_vertices);
   2049       return true;
   2050 
   2051     default:
   2052       dst = ShapeData{};
   2053       return false;
   2054   }
   2055 }
   2056 
   2057 } // {blbench}