blob: def3f465d45932d31239cca87f08242ac0f921be [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <vector>
#include "impeller/geometry/path_component.h"
#include "impeller/geometry/point.h"
namespace impeller {
namespace testing {
// A heart shape with cubics.
// M140 20 C73 20 20 74 20 140 C20 275 156 310 248 443C336 311 477 270 477
// 140C477 74 423 20 357 20C309 20 267 48 248 89C229 48 188 20 140 20Z
std::vector<CubicPathComponent> golden_heart_cubics = {
{Point(140, 20), Point(73, 20), Point(20, 74), Point(20, 140)},
{Point(20, 140), Point(20, 275), Point(156, 310), Point(248, 443)},
{Point(248, 443), Point(336, 311), Point(477, 270), Point(477, 140)},
{Point(477, 140), Point(477, 74), Point(423, 20), Point(357, 20)},
{Point(357, 20), Point(309, 20), Point(267, 48), Point(248, 89)},
{Point(248, 89), Point(229, 48), Point(188, 20), Point(140, 20)}};
// A heart shape with quads, created from the cubics here:
// M140 20C73 20 20 74 20 140C20 275 156 310 248 443C336 311 477 270 477
// 140C477 74 423 20 357 20C309 20 267 48 248 89C229 48 188 20 140 20Z
// The values here are slightly less precise than what the polyline code
// actually generates for easier storage and reading, but still precise enough
// to work visually.
std::vector<QuadraticPathComponent> golden_heart_quads = {
{{140, 20}, {114.723, 20.1641}, {92.9844, 29.4688}},
{{92.9844, 29.4688}, {71.2461, 38.7734}, {54.875, 55.25}},
{{54.875, 55.25}, {38.5039, 71.7266}, {29.3281, 93.4062}},
{{29.3281, 93.4062}, {20.1523, 115.086}, {20, 140}},
{{20, 140}, {20.2083, 173.521}, {30.5, 200.083}},
{{30.5, 200.083}, {40.7917, 226.646}, {58.6667, 249}},
{{58.6667, 249}, {76.5417, 271.354}, {99.5, 292.25}},
{{99.5, 292.25}, {122.458, 313.146}, {148, 335.333}},
{{148, 335.333}, {173.542, 357.521}, {199.167, 383.75}},
{{199.167, 383.75}, {224.792, 409.979}, {248, 443}},
{{248, 443}, {270.225, 410.208}, {295.519, 383.75}},
{{295.519, 383.75}, {320.812, 357.292}, {346.481, 334.667}},
{{346.481, 334.667}, {372.15, 312.042}, {395.5, 290.75}},
{{395.5, 290.75}, {418.85, 269.458}, {437.185, 247}},
{{437.185, 247}, {455.521, 224.542}, {466.148, 198.417}},
{{466.148, 198.417}, {476.775, 172.292}, {477, 140}},
{{477, 140}, {476.836, 115.086}, {467.531, 93.4062}},
{{467.531, 93.4062}, {458.227, 71.7266}, {441.75, 55.25}},
{{441.75, 55.25}, {425.273, 38.7734}, {403.594, 29.4688}},
{{403.594, 29.4688}, {381.914, 20.1641}, {357, 20}},
{{357, 20}, {332.843, 20.1389}, {311.63, 28.7778}},
{{311.63, 28.7778}, {290.417, 37.4167}, {274.037, 52.8889}},
{{274.037, 52.8889}, {257.657, 68.3611}, {248, 89}},
{{248, 89}, {238.361, 68.3611}, {222.222, 52.8889}},
{{222.222, 52.8889}, {206.083, 37.4167}, {185.111, 28.7778}},
{{185.111, 28.7778}, {164.139, 20.1389}, {140, 20}}};
// In local testing, CPU and GPU versions of the polyline algorithm
// disagree on number of points, but both produce visually acceptable
// results.
//
// These points can be verified in an SVG like the following:
//
// <svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
// <polygon points="..." fill="none" stroke="red" />
// </svg>
//
// Where points looks like 140, 20 130.231, 20.415 etc. The values here are
// slightly less precise than what the polyline code actually generates for
// easier storage and reading, but still precise enough to work visually.
std::vector<Point> golden_heart_points = {
{140, 20}, {131.765, 20.3023}, {123.672, 21.1078},
{115.734, 22.4239}, {107.965, 24.2554}, {100.378, 26.6041},
{92.9844, 29.4688}, {85.9188, 32.7537}, {79.1253, 36.4472},
{72.615, 40.5481}, {66.3979, 45.0528}, {60.4823, 49.956},
{54.875, 55.25}, {49.6196, 60.8847}, {44.7551, 66.8194},
{40.2891, 73.0478}, {36.2272, 79.5616}, {32.5731, 86.3513},
{29.3281, 93.4062}, {26.5067, 100.762}, {24.1924, 108.297},
{22.387, 116.001}, {21.0895, 123.861}, {20.296, 131.865},
{20, 140}, {20.2534, 149.197}, {20.906, 158.214},
{21.9689, 167.034}, {23.4519, 175.646}, {25.3637, 184.033},
{27.7113, 192.183}, {30.5, 200.083}, {34.1384, 208.814},
{38.2033, 217.323}, {42.6928, 225.603}, {47.6033, 233.646},
{52.9299, 241.447}, {58.6667, 249}, {66.101, 257.978},
{73.9106, 266.793}, {82.0865, 275.443}, {90.6194, 283.929},
{99.5, 292.25}, {115.262, 306.476}, {131.433, 320.838},
{148, 335.333}, {160.921, 346.811}, {173.757, 358.715},
{186.506, 371.032}, {199.167, 383.75}, {207.755, 392.805},
{216.163, 402.198}, {224.391, 411.923}, {232.439, 421.971},
{240.309, 432.333}, {248, 443}, {255.407, 432.366},
{263.018, 422.027}, {270.835, 411.988}, {278.857, 402.258},
{287.085, 392.843}, {295.519, 383.75}, {308.072, 370.878},
{320.75, 358.4}, {333.554, 346.326}, {346.481, 334.667},
{363.181, 319.87}, {379.524, 305.229}, {395.5, 290.75},
{404.531, 282.291}, {413.224, 273.686}, {421.57, 264.936},
{429.56, 256.04}, {437.185, 247}, {443.055, 239.45},
{448.516, 231.675}, {453.562, 223.678}, {458.186, 215.466},
{462.382, 207.043}, {466.148, 198.417}, {469.016, 190.697},
{471.436, 182.748}, {473.412, 174.582}, {474.949, 166.212},
{476.053, 157.649}, {476.734, 148.908}, {477, 140},
{476.697, 131.863}, {475.889, 123.857}, {474.571, 115.997},
{472.739, 108.293}, {470.392, 100.759}, {467.531, 93.4062},
{464.244, 86.3502}, {460.548, 79.5599}, {456.446, 73.0461},
{451.942, 66.8181}, {447.041, 60.884}, {441.75, 55.25},
{436.116, 49.9595}, {430.182, 45.0581}, {423.954, 40.5537},
{417.44, 36.452}, {410.65, 32.7565}, {403.594, 29.4688},
{396.241, 26.6084}, {388.707, 24.2609}, {381.004, 22.4286},
{373.143, 21.1106}, {365.137, 20.3032}, {357, 20},
{349.102, 20.2777}, {341.323, 21.0241}, {333.676, 22.2452},
{326.171, 23.9443}, {318.819, 26.1224}, {311.63, 28.7778},
{304.722, 31.8337}, {298.058, 35.2778}, {291.65, 39.1093},
{285.505, 43.3251}, {279.632, 47.9205}, {274.037, 52.8889},
{268.767, 58.1866}, {263.861, 63.7819}, {259.326, 69.6689},
{255.169, 75.8403}, {251.393, 82.2873}, {248, 89},
{244.622, 82.2933}, {240.874, 75.8498}, {236.755, 69.6796},
{232.27, 63.7913}, {227.423, 58.1924}, {222.222, 52.8889},
{216.709, 47.922}, {210.917, 43.3271}, {204.854, 39.1112},
{198.525, 35.2793}, {191.941, 31.8344}, {185.111, 28.7778},
{177.988, 26.1195}, {170.693, 23.9406}, {163.234, 22.242},
{155.625, 21.0222}, {147.876, 20.277}, {140, 20}};
std::vector<Point> golden_heart_vertices = {
{139.95, 19.5025}, {140.05, 20.4975}, {131.715, 19.8048},
{131.815, 20.7998}, {131.683, 19.809}, {131.847, 20.7956},
{123.59, 20.6145}, {123.753, 21.601}, {123.557, 20.6211},
{123.786, 21.5944}, {115.619, 21.9372}, {115.848, 22.9105},
{115.586, 21.9462}, {115.882, 22.9015}, {107.817, 23.7777},
{108.113, 24.733}, {107.784, 23.7891}, {108.146, 24.7215},
{100.197, 26.1378}, {100.558, 27.0703}, {100.167, 26.1506},
{100.589, 27.0574}, {92.7736, 29.0154}, {93.1952, 29.9221},
{92.7456, 29.0295}, {93.2232, 29.908}, {85.68, 32.3144},
{86.1576, 33.193}, {85.6523, 32.3306}, {86.1853, 33.1768},
{78.8588, 36.0242}, {79.3918, 36.8703}, {78.8319, 36.0423},
{79.4187, 36.8521}, {72.3216, 40.1432}, {72.9084, 40.9529},
{72.2959, 40.1631}, {72.9341, 40.933}, {66.0788, 44.6679},
{66.717, 45.4378}, {66.0546, 44.6893}, {66.7411, 45.4164},
{60.139, 49.5924}, {60.8255, 50.3196}, {60.1166, 49.615},
{60.8479, 50.297}, {54.5094, 54.909}, {55.2406, 55.591},
{54.4883, 54.933}, {55.2617, 55.567}, {49.2329, 60.5677},
{50.0063, 61.2016}, {49.2133, 60.5933}, {50.026, 61.176},
{44.3488, 66.5281}, {45.1614, 67.1108}, {44.3308, 66.5549},
{45.1794, 67.084}, {39.8648, 72.7832}, {40.7133, 73.3123},
{39.8488, 72.8108}, {40.7293, 73.2847}, {35.7869, 79.3246},
{36.6675, 79.7985}, {35.7729, 79.3526}, {36.6815, 79.7705},
{32.1188, 86.1424}, {33.0273, 86.5603}, {32.1062, 86.1723},
{33.0399, 86.5304}, {28.8613, 93.2272}, {29.795, 93.5853},
{28.8502, 93.2595}, {29.8061, 93.553}, {26.0288, 100.615},
{26.9847, 100.908}, {26.0199, 100.648}, {26.9935, 100.876},
{23.7056, 108.183}, {24.6792, 108.411}, {23.6991, 108.215},
{24.6857, 108.378}, {21.8937, 115.919}, {22.8804, 116.082},
{21.8895, 115.951}, {22.8846, 116.05}, {20.592, 123.812},
{21.5871, 123.91}, {20.5899, 123.843}, {21.5892, 123.879},
{19.7964, 131.847}, {20.7957, 131.883}, {19.7962, 131.879},
{20.7958, 131.851}, {19.5002, 140.014}, {20.4998, 139.986},
{19.5013, 140.036}, {20.4987, 139.964}, {19.7547, 149.234},
{20.7521, 149.161}, {19.757, 149.257}, {20.7498, 149.138},
{20.4096, 158.273}, {21.4024, 158.154}, {20.4133, 158.299},
{21.3987, 158.129}, {21.4761, 167.119}, {22.4616, 166.95},
{21.4814, 167.146}, {22.4564, 166.923}, {22.9644, 175.757},
{23.9394, 175.535}, {22.9715, 175.784}, {23.9324, 175.507},
{24.8833, 184.172}, {25.8442, 183.895}, {24.8923, 184.2},
{25.8352, 183.867}, {27.2398, 192.35}, {28.1828, 192.017},
{27.2498, 192.376}, {28.1728, 191.991}, {30.0385, 200.276},
{30.9615, 199.891}, {30.0488, 200.299}, {30.9512, 199.868},
{33.6872, 209.03}, {34.5896, 208.599}, {33.6989, 209.053},
{34.5779, 208.576}, {37.7638, 217.562}, {38.6429, 217.085},
{37.7766, 217.584}, {38.6301, 217.063}, {42.266, 225.863},
{43.1195, 225.342}, {42.2799, 225.885}, {43.1057, 225.321},
{47.1903, 233.928}, {48.0162, 233.364}, {47.2051, 233.949},
{48.0014, 233.344}, {52.5317, 241.749}, {53.3281, 241.144},
{52.5448, 241.766}, {53.315, 241.128}, {58.2816, 249.319},
{59.0518, 248.681}, {58.2924, 249.332}, {59.0409, 248.668},
{65.7267, 258.309}, {66.4752, 257.646}, {65.7376, 258.321},
{66.4644, 257.634}, {73.5471, 267.136}, {74.2739, 266.449},
{73.558, 267.147}, {74.2631, 266.438}, {81.7338, 275.798},
{82.439, 275.089}, {81.7445, 275.808}, {82.4283, 275.078},
{90.2775, 284.294}, {90.9613, 283.564}, {90.2844, 284.3},
{90.9544, 283.558}, {99.165, 292.621}, {99.835, 291.879},
{99.168, 292.624}, {99.832, 291.876}, {114.93, 306.849},
{115.594, 306.102}, {114.933, 306.852}, {115.591, 306.099},
{131.104, 321.215}, {131.762, 320.462}, {131.101, 321.212},
{131.765, 320.464}, {147.668, 335.707}, {148.332, 334.96},
{147.66, 335.7}, {148.34, 334.967}, {160.581, 347.178},
{161.261, 346.445}, {160.573, 347.171}, {161.268, 346.452},
{173.409, 359.074}, {174.104, 358.355}, {173.402, 359.068},
{174.111, 358.362}, {186.151, 371.385}, {186.86, 370.679},
{186.143, 371.376}, {186.868, 370.688}, {198.804, 384.094},
{199.529, 383.406}, {198.794, 384.084}, {199.539, 383.417},
{207.382, 393.138}, {208.127, 392.471}, {207.373, 393.128},
{208.136, 392.482}, {215.781, 402.522}, {216.544, 401.876},
{215.772, 402.511}, {216.553, 401.886}, {224, 412.236},
{224.781, 411.611}, {223.992, 412.226}, {224.789, 411.621},
{232.041, 422.273}, {232.837, 421.668}, {232.033, 422.263},
{232.844, 421.678}, {239.903, 432.625}, {240.714, 432.04},
{240.719, 432.618}, {239.898, 432.047}, {248.41, 443.286},
{247.59, 442.714}, {248.403, 443.296}, {247.597, 442.704},
{255.809, 432.663}, {255.004, 432.07}, {255.801, 432.674},
{255.012, 432.059}, {263.412, 422.334}, {262.623, 421.72},
{263.404, 422.345}, {262.632, 421.709}, {271.22, 412.306},
{270.448, 411.67}, {271.211, 412.317}, {270.458, 411.659},
{279.233, 402.587}, {278.48, 401.929}, {279.223, 402.598},
{278.49, 401.918}, {287.451, 393.183}, {286.718, 392.503},
{287.442, 393.192}, {286.727, 392.494}, {295.876, 384.099},
{295.161, 383.401}, {295.869, 384.106}, {295.168, 383.394},
{308.423, 371.234}, {307.721, 370.522}, {308.415, 371.242},
{307.729, 370.514}, {321.094, 358.764}, {320.408, 358.036},
{321.086, 358.771}, {320.416, 358.029}, {333.889, 346.697},
{333.219, 345.955}, {333.886, 346.7}, {333.222, 345.952},
{346.813, 335.041}, {346.15, 334.292}, {346.815, 335.039},
{346.148, 334.294}, {363.515, 320.242}, {362.848, 319.497},
{363.517, 320.24}, {362.846, 319.499}, {379.86, 305.6},
{379.189, 304.859}, {379.866, 305.594}, {379.183, 304.864},
{395.842, 291.115}, {395.158, 290.385}, {395.852, 291.105},
{395.148, 290.395}, {404.882, 282.647}, {404.179, 281.936},
{404.892, 282.636}, {404.169, 281.946}, {413.586, 274.032},
{412.862, 273.341}, {413.596, 274.021}, {412.852, 273.352},
{421.942, 265.27}, {421.198, 264.602}, {421.952, 265.258},
{421.188, 264.613}, {429.943, 256.362}, {429.178, 255.718},
{429.955, 256.347}, {429.166, 255.733}, {437.58, 247.307},
{436.79, 246.693}, {437.594, 247.287}, {436.776, 246.713},
{443.464, 239.737}, {442.646, 239.163}, {443.478, 239.717},
{442.632, 239.183}, {448.939, 231.941}, {448.094, 231.408},
{448.952, 231.92}, {448.081, 231.429}, {453.998, 223.923},
{453.126, 223.433}, {454.01, 223.901}, {453.115, 223.455},
{458.633, 215.689}, {457.738, 215.243}, {458.644, 215.666},
{457.727, 215.266}, {462.841, 207.243}, {461.924, 206.843},
{462.851, 207.217}, {461.914, 206.869}, {466.617, 198.591},
{465.679, 198.243}, {466.626, 198.562}, {465.67, 198.271},
{469.494, 190.842}, {468.538, 190.551}, {469.502, 190.814},
{468.53, 190.579}, {471.922, 182.865}, {470.951, 182.63},
{471.928, 182.838}, {470.945, 182.657}, {473.904, 174.672},
{472.921, 174.492}, {473.908, 174.646}, {472.917, 174.518},
{475.445, 166.275}, {474.453, 166.147}, {475.448, 166.25},
{474.451, 166.173}, {476.552, 157.688}, {475.555, 157.61},
{476.553, 157.664}, {475.554, 157.634}, {477.234, 148.922},
{476.234, 148.893}, {477.234, 148.889}, {476.234, 148.926},
{477.5, 139.981}, {476.5, 140.019}, {477.497, 139.95},
{476.503, 140.05}, {477.194, 131.813}, {476.199, 131.913},
{477.19, 131.78}, {476.204, 131.946}, {476.383, 123.775},
{475.396, 123.94}, {476.376, 123.742}, {475.403, 123.973},
{475.058, 115.881}, {474.085, 116.112}, {475.049, 115.848},
{474.094, 116.145}, {473.216, 108.144}, {472.262, 108.442},
{473.205, 108.112}, {472.273, 108.474}, {470.858, 100.578},
{469.926, 100.94}, {470.845, 100.548}, {469.938, 100.97},
{467.984, 93.1951}, {467.078, 93.6174}, {467.97, 93.1672},
{467.092, 93.6453}, {464.683, 86.1112}, {463.804, 86.5892},
{464.667, 86.0838}, {463.821, 86.6167}, {460.971, 79.2935},
{460.125, 79.8264}, {460.953, 79.267}, {460.143, 79.853},
{456.851, 72.7531}, {456.041, 73.3392}, {456.832, 72.7278},
{456.061, 73.3646}, {452.327, 66.4998}, {451.556, 67.1366},
{452.306, 66.4759}, {451.577, 67.1604}, {447.405, 60.5417},
{446.676, 61.2262}, {447.383, 60.5195}, {446.698, 61.2485},
{442.092, 54.8855}, {441.408, 55.6145}, {442.068, 54.8645},
{441.432, 55.6355}, {436.434, 49.5739}, {435.798, 50.345},
{436.409, 49.5543}, {435.823, 50.3646}, {430.475, 44.653},
{429.889, 45.4633}, {430.448, 44.635}, {429.915, 45.4812},
{424.22, 40.1306}, {423.687, 40.9768}, {424.193, 40.1145},
{423.715, 40.9929}, {417.679, 36.0127}, {417.201, 36.8911},
{417.651, 35.9987}, {417.229, 36.9051}, {410.861, 32.3032},
{410.439, 33.2096}, {410.831, 32.2904}, {410.469, 33.2224},
{403.775, 29.0028}, {403.412, 29.9347}, {403.742, 28.9914},
{403.445, 29.9461}, {396.39, 26.131}, {396.092, 27.0857},
{396.357, 26.1219}, {396.125, 27.0948}, {388.823, 23.7744},
{388.591, 24.7473}, {388.79, 23.7677}, {388.624, 24.754},
{381.086, 21.9354}, {380.921, 22.9217}, {381.054, 21.9311},
{380.953, 22.926}, {373.193, 20.6131}, {373.092, 21.608},
{373.161, 20.6109}, {373.124, 21.6102}, {365.156, 19.8036},
{365.118, 20.8029}, {365.119, 19.8035}, {365.154, 20.8029},
{356.982, 19.5003}, {357.018, 20.4997}, {356.952, 19.5023},
{357.048, 20.4977}, {349.054, 19.7799}, {349.15, 20.7754},
{349.023, 19.7839}, {349.181, 20.7714}, {341.244, 20.5304},
{341.402, 21.5179}, {341.213, 20.5365}, {341.434, 21.5118},
{333.565, 21.7575}, {333.786, 22.7329}, {333.534, 21.7658},
{333.818, 22.7246}, {326.028, 23.4649}, {326.312, 24.4237},
{325.997, 23.4753}, {326.343, 24.4133}, {318.645, 25.6533},
{318.991, 26.5914}, {318.616, 25.6651}, {319.02, 26.5796},
{311.427, 28.3205}, {311.832, 29.235}, {311.4, 28.3336},
{311.859, 29.2219}, {304.492, 31.3895}, {304.951, 32.2778},
{304.465, 31.4045}, {304.978, 32.2628}, {297.801, 34.8487},
{298.314, 35.707}, {297.775, 34.8655}, {298.341, 35.6901},
{291.367, 38.697}, {291.932, 39.5216}, {291.341, 38.7155},
{291.958, 39.5031}, {285.197, 42.9313}, {285.813, 43.7189},
{285.173, 42.9512}, {285.837, 43.699}, {279.3, 47.5467},
{279.964, 48.2944}, {279.278, 47.5679}, {279.987, 48.2732},
{273.683, 52.5363}, {274.392, 53.2415}, {273.661, 52.5592},
{274.413, 53.2185}, {268.391, 57.857}, {269.143, 58.5163},
{268.371, 57.8815}, {269.163, 58.4917}, {263.465, 63.4768},
{264.257, 64.087}, {263.446, 63.5026}, {264.276, 64.0613},
{258.912, 69.3896}, {259.741, 69.9483}, {258.895, 69.4162},
{259.758, 69.9216}, {254.738, 75.5876}, {255.601, 76.093},
{254.723, 75.6147}, {255.615, 76.0659}, {250.947, 82.0618},
{251.839, 82.5129}, {251.84, 82.0624}, {250.947, 82.5122},
{248.447, 88.7751}, {247.553, 89.2249}, {248.432, 88.7486},
{247.568, 89.2514}, {245.055, 82.0419}, {244.19, 82.5447},
{245.038, 82.0157}, {244.207, 82.5709}, {241.29, 75.5723},
{240.458, 76.1274}, {241.271, 75.5469}, {240.476, 76.1528},
{237.153, 69.3766}, {236.357, 69.9825}, {237.133, 69.3523},
{236.377, 70.0068}, {232.648, 63.464}, {231.892, 64.1185},
{232.627, 63.4412}, {231.913, 64.1414}, {227.781, 57.8422},
{227.067, 58.5424}, {227.758, 57.8209}, {227.089, 58.5638},
{222.557, 52.5174}, {221.888, 53.2604}, {222.533, 52.4972},
{221.911, 53.2806}, {217.02, 47.5303}, {216.398, 48.3137},
{216.995, 47.5114}, {216.424, 48.3325}, {211.203, 42.9166},
{210.632, 43.7376}, {211.176, 42.8994}, {210.659, 43.7548},
{205.113, 38.6835}, {204.595, 39.5389}, {205.086, 38.6682},
{204.622, 39.5542}, {198.757, 34.8362}, {198.294, 35.7223},
{198.73, 34.8229}, {198.321, 35.7356}, {192.145, 31.378},
{191.737, 32.2908}, {192.116, 31.3659}, {191.766, 32.3028},
{185.286, 28.3093}, {184.936, 29.2462}, {185.254, 28.2987},
{184.968, 29.2569}, {178.132, 25.6404}, {177.845, 26.5986},
{178.1, 25.632}, {177.877, 26.607}, {170.804, 23.4531},
{170.582, 24.4281}, {170.772, 23.4469}, {170.614, 24.4343},
{163.313, 21.7483}, {163.155, 22.7357}, {163.282, 21.7443},
{163.186, 22.7397}, {155.673, 20.5245}, {155.577, 21.5199},
{155.642, 20.5225}, {155.607, 21.5219}, {147.893, 19.7773},
{147.858, 20.7767}, {147.947, 19.782}, {147.805, 20.772},
{140.071, 19.505}, {139.929, 20.495},
};
} // namespace testing
} // namespace impeller