#pragma once #include "geometry.hpp" namespace heart { constexpr position__color vertices[] = { { { 0.000000f, 0.400000f, -0.707107f}, { 1.000000f, 0.611800f, 0.211800f} }, { { 0.144430f, -0.400000f, -0.831470f}, { 1.000000f, 0.000000f, 0.674500f} }, { { 0.144430f, 0.400000f, -0.831470f}, { 1.000000f, 0.611800f, 0.215700f} }, { { 0.317317f, -0.400000f, -0.923880f}, { 1.000000f, 0.000000f, 0.670600f} }, { { 0.317317f, 0.400000f, -0.923880f}, { 1.000000f, 0.611800f, 0.211800f} }, { { 0.504910f, -0.400000f, -0.980785f}, { 1.000000f, 0.011800f, 0.670600f} }, { { 0.504910f, 0.400000f, -0.980785f}, { 1.000000f, 0.611800f, 0.211800f} }, { { 0.700000f, -0.400000f, -1.000000f}, { 1.000000f, 0.000000f, 0.670600f} }, { { 0.700000f, 0.400000f, -1.000000f}, { 1.000000f, 0.611800f, 0.211800f} }, { { 0.895090f, -0.400000f, -0.980785f}, { 1.000000f, 0.000000f, 0.898000f} }, { { 0.895090f, 0.400000f, -0.980785f}, { 1.000000f, 0.235300f, 0.843100f} }, { { 1.082684f, -0.400000f, -0.923879f}, { 1.000000f, 0.023500f, 0.909800f} }, { { 1.082684f, 0.400000f, -0.923879f}, { 1.000000f, 0.611800f, 0.211800f} }, { { 1.255570f, -0.400000f, -0.831469f}, { 1.000000f, 0.329400f, 0.866600f} }, { { 1.255570f, 0.400000f, -0.831469f}, { 1.000000f, 0.615700f, 0.219600f} }, { { 1.407107f, -0.400000f, -0.707107f}, { 1.000000f, 0.282300f, 0.886200f} }, { { 1.407107f, 0.400000f, -0.707107f}, { 1.000000f, 0.580400f, 0.384300f} }, { { 1.531470f, -0.400000f, -0.555570f}, { 1.000000f, 0.282300f, 0.886200f} }, { { 1.531470f, 0.400000f, -0.555570f}, { 1.000000f, 0.051000f, 0.600000f} }, { { 1.623880f, -0.400000f, -0.382683f}, { 1.000000f, 0.282300f, 0.886200f} }, { { 1.623880f, 0.400000f, -0.382683f}, { 1.000000f, 0.051000f, 0.603900f} }, { { 1.680785f, -0.400000f, -0.195090f}, { 1.000000f, 0.615700f, 0.674500f} }, { { 1.680785f, 0.400000f, -0.195090f}, { 1.000000f, 0.035300f, 0.776400f} }, { { 1.700000f, -0.400000f, 0.000000f}, { 1.000000f, 0.623600f, 0.666700f} }, { { 1.700000f, 0.400000f, 0.000000f}, { 0.988200f, 0.003900f, 0.996000f} }, { { 1.680785f, -0.400000f, 0.195090f}, { 1.000000f, 0.000000f, 0.909800f} }, { { 1.680785f, 0.400000f, 0.195090f}, { 0.843100f, 0.011800f, 0.956800f} }, { { 1.623879f, -0.400000f, 0.382684f}, { 1.000000f, 0.011800f, 0.909800f} }, { { 1.623879f, 0.400000f, 0.382684f}, { 0.611800f, 0.239200f, 0.976400f} }, { { 1.531470f, -0.400000f, 0.555570f}, { 1.000000f, 0.643200f, 0.619700f} }, { { 1.531470f, 0.400000f, 0.555570f}, { 0.611800f, 0.231400f, 0.976400f} }, { { 1.407107f, 0.400000f, 0.707107f}, { 0.572500f, 0.235300f, 0.976400f} }, { { 0.000000f, -0.400000f, -0.707107f}, { 1.000000f, 0.000000f, 0.670600f} }, { {-0.000000f, 0.400000f, 2.121320f}, { 0.000000f, 0.807800f, 1.000000f} }, { {-0.000000f, -0.400000f, 2.121320f}, { 1.000000f, 0.921500f, 0.000000f} }, { { 1.407107f, -0.400000f, 0.707107f}, { 1.000000f, 0.780400f, 0.415700f} }, { {-0.144430f, -0.400000f, -0.831470f}, { 0.901900f, 0.439200f, 0.603900f} }, { {-0.144430f, 0.400000f, -0.831470f}, { 1.000000f, 0.611800f, 0.211800f} }, { {-0.317317f, -0.400000f, -0.923880f}, { 0.670600f, 0.745100f, 0.603900f} }, { {-0.317317f, 0.400000f, -0.923880f}, { 1.000000f, 0.607900f, 0.235300f} }, { {-0.504910f, -0.400000f, -0.980785f}, { 0.235300f, 0.976400f, 0.196100f} }, { {-0.504910f, 0.400000f, -0.980785f}, { 1.000000f, 0.047100f, 0.913700f} }, { {-0.700000f, -0.400000f, -1.000000f}, { 0.403900f, 0.917600f, 0.360800f} }, { {-0.700000f, 0.400000f, -1.000000f}, { 1.000000f, 0.000000f, 0.909800f} }, { {-0.895090f, -0.400000f, -0.980785f}, { 0.403900f, 0.917600f, 0.360800f} }, { {-0.895090f, 0.400000f, -0.980785f}, { 1.000000f, 0.000000f, 0.909800f} }, { {-1.082683f, -0.400000f, -0.923880f}, { 0.262700f, 0.968600f, 0.223500f} }, { {-1.082683f, 0.400000f, -0.923880f}, { 1.000000f, 0.117600f, 0.956800f} }, { {-1.255570f, -0.400000f, -0.831470f}, { 0.560800f, 0.831300f, 0.505900f} }, { {-1.255570f, 0.400000f, -0.831470f}, { 1.000000f, 0.000000f, 0.956800f} }, { {-1.407107f, -0.400000f, -0.707107f}, { 0.776400f, 0.996000f, 0.090200f} }, { {-1.407107f, 0.400000f, -0.707107f}, { 1.000000f, 0.117600f, 0.956800f} }, { {-1.531470f, -0.400000f, -0.555570f}, { 0.878400f, 0.941100f, 0.305900f} }, { {-1.531470f, 0.400000f, -0.555570f}, { 1.000000f, 0.000000f, 0.956800f} }, { {-1.623880f, -0.400000f, -0.382683f}, { 0.882300f, 0.933300f, 0.325500f} }, { {-1.623880f, 0.400000f, -0.382683f}, { 0.984300f, 1.000000f, 0.019600f} }, { {-1.680785f, -0.400000f, -0.195090f}, { 0.745100f, 0.878400f, 0.458900f} }, { {-1.680785f, 0.400000f, -0.195090f}, { 0.698000f, 0.741200f, 0.639300f} }, { {-1.700000f, -0.400000f, -0.000000f}, { 0.219600f, 0.768600f, 0.639300f} }, { {-1.700000f, 0.400000f, -0.000000f}, { 0.254900f, 1.000000f, 0.003900f} }, { {-1.680785f, -0.400000f, 0.195090f}, { 0.051000f, 0.203900f, 0.980400f} }, { {-1.680785f, 0.400000f, 0.195090f}, { 0.251000f, 1.000000f, 0.003900f} }, { {-1.623879f, -0.400000f, 0.382683f}, { 0.054900f, 0.223500f, 0.976400f} }, { {-1.623879f, 0.400000f, 0.382683f}, { 0.251000f, 1.000000f, 0.003900f} }, { {-1.531470f, -0.400000f, 0.555570f}, { 0.098000f, 0.423500f, 0.901900f} }, { {-1.531470f, 0.400000f, 0.555570f}, { 0.251000f, 1.000000f, 0.003900f} }, { {-1.407107f, 0.400000f, 0.707107f}, { 0.254900f, 1.000000f, 0.007800f} }, { {-1.407107f, -0.400000f, 0.707107f}, { 0.105900f, 0.203900f, 0.980400f} }, }; constexpr vec3 normals[] = { { -0.652500f, -0.000000f, -0.757800f }, { -0.471400f, -0.000000f, -0.881900f }, { -0.290300f, -0.000000f, -0.956900f }, { -0.098000f, -0.000000f, -0.995200f }, { 0.098000f, -0.000000f, -0.995200f }, { 0.290300f, -0.000000f, -0.956900f }, { 0.471400f, -0.000000f, -0.881900f }, { 0.634400f, -0.000000f, -0.773000f }, { 0.773000f, -0.000000f, -0.634400f }, { 0.881900f, -0.000000f, -0.471400f }, { 0.956900f, -0.000000f, -0.290300f }, { 0.995200f, -0.000000f, -0.098000f }, { 0.995200f, -0.000000f, 0.098000f }, { 0.956900f, -0.000000f, 0.290300f }, { 0.881900f, -0.000000f, 0.471400f }, { 0.773000f, -0.000000f, 0.634400f }, { -0.000000f, 1.000000f, -0.000000f }, { -0.000000f, -1.000000f, -0.000000f }, { 0.708900f, -0.000000f, 0.705300f }, { 0.652500f, -0.000000f, -0.757800f }, { -0.634400f, -0.000000f, -0.773000f }, { -0.773000f, -0.000000f, -0.634400f }, { -0.881900f, -0.000000f, -0.471400f }, { -0.956900f, -0.000000f, -0.290300f }, { -0.995200f, -0.000000f, -0.098000f }, { -0.995200f, -0.000000f, 0.098000f }, { -0.956900f, -0.000000f, 0.290300f }, { -0.881900f, -0.000000f, 0.471400f }, { -0.773000f, -0.000000f, 0.634400f }, { -0.708900f, -0.000000f, 0.705300f }, }; constexpr face_vn faces[] = { {{ 0, 0}, { 1, 0}, {32, 0}}, {{ 2, 1}, { 3, 1}, { 1, 1}}, {{ 4, 2}, { 5, 2}, { 3, 2}}, {{ 6, 3}, { 7, 3}, { 5, 3}}, {{ 8, 4}, { 9, 4}, { 7, 4}}, {{10, 5}, {11, 5}, { 9, 5}}, {{12, 6}, {13, 6}, {11, 6}}, {{14, 7}, {15, 7}, {13, 7}}, {{16, 8}, {17, 8}, {15, 8}}, {{18, 9}, {19, 9}, {17, 9}}, {{20, 10}, {21, 10}, {19, 10}}, {{22, 11}, {23, 11}, {21, 11}}, {{24, 12}, {25, 12}, {23, 12}}, {{26, 13}, {27, 13}, {25, 13}}, {{28, 14}, {29, 14}, {27, 14}}, {{30, 15}, {35, 15}, {29, 15}}, {{ 0, 16}, {18, 16}, {10, 16}}, {{ 1, 17}, {17, 17}, {25, 17}}, {{31, 18}, {34, 18}, {35, 18}}, {{35, 17}, {34, 17}, {32, 17}}, {{33, 16}, {31, 16}, { 0, 16}}, {{36, 19}, { 0, 19}, {32, 19}}, {{38, 6}, {37, 6}, {36, 6}}, {{40, 5}, {39, 5}, {38, 5}}, {{42, 4}, {41, 4}, {40, 4}}, {{44, 3}, {43, 3}, {42, 3}}, {{46, 2}, {45, 2}, {44, 2}}, {{48, 1}, {47, 1}, {46, 1}}, {{50, 20}, {49, 20}, {48, 20}}, {{52, 21}, {51, 21}, {50, 21}}, {{54, 22}, {53, 22}, {52, 22}}, {{56, 23}, {55, 23}, {54, 23}}, {{58, 24}, {57, 24}, {56, 24}}, {{60, 25}, {59, 25}, {58, 25}}, {{62, 26}, {61, 26}, {60, 26}}, {{64, 27}, {63, 27}, {62, 27}}, {{67, 28}, {65, 28}, {64, 28}}, {{39, 16}, {55, 16}, {63, 16}}, {{67, 17}, {50, 17}, {42, 17}}, {{34, 29}, {66, 29}, {67, 29}}, {{67, 17}, {32, 17}, {34, 17}}, {{33, 16}, { 0, 16}, {66, 16}}, {{ 0, 0}, { 2, 0}, { 1, 0}}, {{ 2, 1}, { 4, 1}, { 3, 1}}, {{ 4, 2}, { 6, 2}, { 5, 2}}, {{ 6, 3}, { 8, 3}, { 7, 3}}, {{ 8, 4}, {10, 4}, { 9, 4}}, {{10, 5}, {12, 5}, {11, 5}}, {{12, 6}, {14, 6}, {13, 6}}, {{14, 7}, {16, 7}, {15, 7}}, {{16, 8}, {18, 8}, {17, 8}}, {{18, 9}, {20, 9}, {19, 9}}, {{20, 10}, {22, 10}, {21, 10}}, {{22, 11}, {24, 11}, {23, 11}}, {{24, 12}, {26, 12}, {25, 12}}, {{26, 13}, {28, 13}, {27, 13}}, {{28, 14}, {30, 14}, {29, 14}}, {{30, 15}, {31, 15}, {35, 15}}, {{ 4, 16}, { 2, 16}, { 0, 16}}, {{ 0, 16}, {31, 16}, {30, 16}}, {{30, 16}, {28, 16}, {26, 16}}, {{26, 16}, {24, 16}, {22, 16}}, {{22, 16}, {20, 16}, {18, 16}}, {{18, 16}, {16, 16}, {14, 16}}, {{14, 16}, {12, 16}, {10, 16}}, {{10, 16}, { 8, 16}, { 6, 16}}, {{ 6, 16}, { 4, 16}, { 0, 16}}, {{ 0, 16}, {30, 16}, {26, 16}}, {{26, 16}, {22, 16}, {18, 16}}, {{18, 16}, {14, 16}, {10, 16}}, {{10, 16}, { 6, 16}, { 0, 16}}, {{ 0, 16}, {26, 16}, {18, 16}}, {{35, 17}, {32, 17}, { 1, 17}}, {{ 1, 17}, { 3, 17}, { 5, 17}}, {{ 5, 17}, { 7, 17}, { 9, 17}}, {{ 9, 17}, {11, 17}, {13, 17}}, {{13, 17}, {15, 17}, {17, 17}}, {{17, 17}, {19, 17}, {21, 17}}, {{21, 17}, {23, 17}, {25, 17}}, {{25, 17}, {27, 17}, {29, 17}}, {{29, 17}, {35, 17}, { 1, 17}}, {{ 1, 17}, { 5, 17}, { 9, 17}}, {{ 9, 17}, {13, 17}, {17, 17}}, {{17, 17}, {21, 17}, {25, 17}}, {{25, 17}, {29, 17}, { 1, 17}}, {{ 1, 17}, { 9, 17}, {17, 17}}, {{31, 18}, {33, 18}, {34, 18}}, {{36, 19}, {37, 19}, { 0, 19}}, {{38, 6}, {39, 6}, {37, 6}}, {{40, 5}, {41, 5}, {39, 5}}, {{42, 4}, {43, 4}, {41, 4}}, {{44, 3}, {45, 3}, {43, 3}}, {{46, 2}, {47, 2}, {45, 2}}, {{48, 1}, {49, 1}, {47, 1}}, {{50, 20}, {51, 20}, {49, 20}}, {{52, 21}, {53, 21}, {51, 21}}, {{54, 22}, {55, 22}, {53, 22}}, {{56, 23}, {57, 23}, {55, 23}}, {{58, 24}, {59, 24}, {57, 24}}, {{60, 25}, {61, 25}, {59, 25}}, {{62, 26}, {63, 26}, {61, 26}}, {{64, 27}, {65, 27}, {63, 27}}, {{67, 28}, {66, 28}, {65, 28}}, {{ 0, 16}, {37, 16}, {39, 16}}, {{39, 16}, {41, 16}, {43, 16}}, {{43, 16}, {45, 16}, {47, 16}}, {{47, 16}, {49, 16}, {51, 16}}, {{51, 16}, {53, 16}, {55, 16}}, {{55, 16}, {57, 16}, {59, 16}}, {{59, 16}, {61, 16}, {63, 16}}, {{63, 16}, {65, 16}, {66, 16}}, {{66, 16}, { 0, 16}, {39, 16}}, {{39, 16}, {43, 16}, {47, 16}}, {{47, 16}, {51, 16}, {55, 16}}, {{55, 16}, {59, 16}, {63, 16}}, {{63, 16}, {66, 16}, {39, 16}}, {{39, 16}, {47, 16}, {55, 16}}, {{36, 17}, {32, 17}, {67, 17}}, {{67, 17}, {64, 17}, {62, 17}}, {{62, 17}, {60, 17}, {58, 17}}, {{58, 17}, {56, 17}, {54, 17}}, {{54, 17}, {52, 17}, {50, 17}}, {{50, 17}, {48, 17}, {46, 17}}, {{46, 17}, {44, 17}, {42, 17}}, {{42, 17}, {40, 17}, {38, 17}}, {{38, 17}, {36, 17}, {67, 17}}, {{67, 17}, {62, 17}, {58, 17}}, {{58, 17}, {54, 17}, {50, 17}}, {{50, 17}, {46, 17}, {42, 17}}, {{42, 17}, {38, 17}, {67, 17}}, {{67, 17}, {58, 17}, {50, 17}}, {{34, 29}, {33, 29}, {66, 29}}, }; constexpr uint32_t num_faces = (sizeof (faces)) / (sizeof (face_vn)); }