Files
manifold/test/polygon_test.cpp
2022-08-07 21:48:04 -07:00

3010 lines
119 KiB
C++

// Copyright 2021 The Manifold Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "polygon.h"
#include <algorithm>
#include <limits>
#include <random>
#include "test.h"
namespace {
using namespace manifold;
void StandardizePoly(SimplePolygon &p) {
auto start = std::min_element(
p.begin(), p.end(),
[](const PolyVert &v1, const PolyVert &v2) { return v1.idx < v2.idx; });
std::rotate(p.begin(), start, p.end());
}
void StandardizePolys(Polygons &polys) {
for (auto &p : polys) StandardizePoly(p);
std::sort(polys.begin(), polys.end(),
[](SimplePolygon &p1, SimplePolygon &p2) {
return p1[0].idx < p2[0].idx;
});
}
void Identical(Polygons p1, Polygons p2) {
ASSERT_EQ(p1.size(), p2.size());
StandardizePolys(p1);
StandardizePolys(p2);
for (int i = 0; i < p1.size(); ++i) {
ASSERT_EQ(p1[i].size(), p2[i].size());
for (int j = 0; j < p1[i].size(); ++j) {
ASSERT_EQ(p1[i][j].idx, p2[i][j].idx);
}
}
}
Polygons Turn180(Polygons polys) {
for (SimplePolygon &poly : polys) {
for (PolyVert &vert : poly) {
vert.pos *= -1;
}
}
return polys;
}
Polygons Duplicate(Polygons polys) {
float xMin = std::numeric_limits<float>::infinity();
float xMax = -std::numeric_limits<float>::infinity();
int indexMax = 0;
for (SimplePolygon &poly : polys) {
for (PolyVert &vert : poly) {
xMin = std::min(xMin, vert.pos.x);
xMax = std::max(xMax, vert.pos.x);
indexMax = std::max(indexMax, vert.idx);
}
}
++indexMax;
const float shift = xMax - xMin;
const int nPolys = polys.size();
for (int i = 0; i < nPolys; ++i) {
SimplePolygon poly = polys[i];
for (PolyVert &vert : poly) {
vert.pos.x += shift;
vert.idx += indexMax;
}
polys.push_back(poly);
}
return polys;
}
void TestPoly(const Polygons &polys, int expectedNumTri,
float precision = -1.0f) {
PolygonParams().verbose = options.params.verbose;
std::vector<glm::ivec3> triangles;
EXPECT_NO_THROW(triangles = Triangulate(polys, precision));
EXPECT_EQ(triangles.size(), expectedNumTri) << "Basic";
// EXPECT_NO_THROW(triangles = Triangulate(Turn180(polys), precision));
// EXPECT_EQ(triangles.size(), expectedNumTri) << "Turn 180";
// EXPECT_NO_THROW(triangles = Triangulate(Duplicate(polys), precision));
// EXPECT_EQ(triangles.size(), 2 * expectedNumTri) << "Duplicate";
PolygonParams().verbose = false;
}
} // namespace
/**
* These polygons are all valid geometry. Some are clearly valid, while many are
* marginal, but all should produce correct topology and geometry, within
* tolerance.
*/
TEST(Polygon, SimpleHole) {
Polygons polys;
polys.push_back({
{glm::vec2(0, -2), 0}, //
{glm::vec2(2, 2), 1}, //
{glm::vec2(0, 4), 2}, //
{glm::vec2(-3, 3), 3}, //
});
polys.push_back({
{glm::vec2(0, -1), 4}, //
{glm::vec2(-1, 1), 5}, //
{glm::vec2(1, 1), 6}, //
});
TestPoly(polys, 7);
}
TEST(Polygon, SimpleHole2) {
Polygons polys;
polys.push_back({
{glm::vec2(0, 1.63299), 0}, //
{glm::vec2(-1.41421, -0.816496), 1}, //
{glm::vec2(1.41421, -0.816496), 2}, //
});
polys.push_back({
{glm::vec2(0, 1.02062), 3}, //
{glm::vec2(0.883883, -0.51031), 4}, //
{glm::vec2(-0.883883, -0.51031), 5}, //
});
TestPoly(polys, 6);
}
TEST(Polygon, MultiMerge) {
Polygons polys;
polys.push_back({
{glm::vec2(-7, 0), 0}, //
{glm::vec2(-6, 3), 1}, //
{glm::vec2(-5, 1), 2}, //
{glm::vec2(-4, 6), 3}, //
{glm::vec2(-3, 2), 4}, //
{glm::vec2(-2, 5), 5}, //
{glm::vec2(-1, 4), 6}, //
{glm::vec2(0, 12), 7}, //
{glm::vec2(-6, 10), 8}, //
{glm::vec2(-8, 11), 9}, //
});
polys.push_back({
{glm::vec2(-5, 7), 10}, //
{glm::vec2(-6, 8), 11}, //
{glm::vec2(-5, 9), 12}, //
});
TestPoly(polys, 13);
}
TEST(Polygon, Colinear) {
Polygons polys;
polys.push_back({
{glm::vec2(-5.48368, -3.73905), 0}, //
{glm::vec2(-4.9881, -4.51552), 1}, //
{glm::vec2(-4.78988, -4.13186), 2}, //
{glm::vec2(-4.82012, -4.13999), 3}, //
{glm::vec2(-4.84314, -4.14617), 4}, //
{glm::vec2(-4.85738, -4.13581), 5}, //
{glm::vec2(-4.86772, -4.12831), 6}, //
{glm::vec2(-4.87337, -4.12422), 7}, //
{glm::vec2(-4.88097, -4.1187), 8}, //
{glm::vec2(-4.89799, -4.10634), 9}, //
{glm::vec2(-4.90219, -4.10329), 10}, //
{glm::vec2(-4.90826, -4.09887), 11}, //
{glm::vec2(-4.90846, -4.09873), 12}, //
{glm::vec2(-4.91227, -4.09597), 13}, //
{glm::vec2(-4.92199, -4.0889), 14}, //
{glm::vec2(-5.0245, -4.01443), 15}, //
{glm::vec2(-5.02494, -4.01412), 16}, //
{glm::vec2(-5.02536, -4.01381), 17}, //
{glm::vec2(-5.0316, -4.00927), 18}, //
{glm::vec2(-5.03211, -4.00891), 19}, //
{glm::vec2(-5.05197, -3.99448), 20}, //
{glm::vec2(-5.14757, -3.92504), 21}, //
{glm::vec2(-5.21287, -3.8776), 22}, //
{glm::vec2(-5.29419, -3.81853), 23}, //
{glm::vec2(-5.29907, -3.81499), 24}, //
{glm::vec2(-5.36732, -3.76541), 25}, //
});
TestPoly(polys, 24);
}
TEST(Polygon, Merges) {
Polygons polys;
polys.push_back({
{glm::vec2(-3.22039, 10.2769), 0}, //
{glm::vec2(-3.12437, 10.4147), 1}, //
{glm::vec2(-3.99093, 10.1781), 2}, //
{glm::vec2(-3.8154, 10.0716), 3}, //
{glm::vec2(-3.78982, 10.0893), 4}, //
{glm::vec2(-3.55033, 10.2558), 5}, //
{glm::vec2(-3.50073, 10.2549), 6}, //
{glm::vec2(-3.47018, 10.2572), 7}, //
{glm::vec2(-3.42633, 10.2605), 8}, //
{glm::vec2(-3.34311, 10.2604), 9}, //
{glm::vec2(-3.32096, 10.2633), 10}, //
});
TestPoly(polys, 9);
}
TEST(Polygon, ExtraTriangle) {
Polygons polys;
polys.push_back({
{glm::vec2(1.23141634, -0.493547261), 0}, //
{glm::vec2(1.23142254, -0.493540883), 1}, //
{glm::vec2(1.23088336, -0.457464248), 2}, //
});
polys.push_back({
{glm::vec2(1.23146737, -0.493494928), 3}, //
{glm::vec2(1.47253549, -0.24623163), 4}, //
{glm::vec2(1.47253144, -0.246230021), 5}, //
{glm::vec2(1.47166216, -0.246238187), 6}, //
{glm::vec2(1.46963537, -0.24623026), 7}, //
{glm::vec2(1.46811843, -0.246224999), 8}, //
{glm::vec2(1.46594918, -0.246223733), 9}, //
{glm::vec2(1.46594965, -0.246232167), 10}, //
{glm::vec2(1.46594965, -0.246232241), 11}, //
{glm::vec2(1.46594083, -0.246223733), 12}, //
{glm::vec2(1.46591508, -0.246223718), 13}, //
{glm::vec2(1.46594179, -0.246231437), 14}, //
{glm::vec2(1.46585774, -0.246223688), 15}, //
{glm::vec2(1.46577716, -0.246223629), 16}, //
{glm::vec2(1.46590662, -0.246231213), 17}, //
{glm::vec2(1.46550393, -0.246223465), 18}, //
{glm::vec2(1.46081161, -0.246220738), 19}, //
{glm::vec2(1.46407437, -0.246228904), 20}, //
{glm::vec2(1.45568836, -0.246227756), 21}, //
{glm::vec2(1.42199826, -0.260253757), 22}, //
{glm::vec2(1.40801644, -0.246204734), 23}, //
{glm::vec2(1.40688479, -0.24620308), 24}, //
{glm::vec2(1.38571239, -0.246184081), 25}, //
{glm::vec2(1.30817795, -0.246158242), 26}, //
{glm::vec2(1.28997684, -0.328056872), 27}, //
{glm::vec2(1.30974603, -0.315009534), 28}, //
{glm::vec2(1.31756043, -0.364917517), 29}, //
});
TestPoly(polys, 26);
}
TEST(Polygon, SpongeThin) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.5, -0.475308657), 11}, //
{glm::vec2(-0.487654328, -0.475461066), 12}, //
{glm::vec2(-0.487654328, -0.475308657), 13}, //
{glm::vec2(-0.487654328, -0.475308657), 14}, //
{glm::vec2(-0.487654328, -0.475308657), 15}, //
{glm::vec2(-0.475308657, -0.475308657), 16}, //
{glm::vec2(-0.475308657, -0.475613475), 17}, //
{glm::vec2(-0.462962985, -0.475765914), 18}, //
{glm::vec2(-0.462962985, -0.475308657), 19}, //
});
polys.push_back({
{glm::vec2(0.42592591, -0.475308657), 20}, //
{glm::vec2(0.351851851, -0.475308657), 21}, //
{glm::vec2(0.351851851, -0.475308657), 22}, //
{glm::vec2(0.351851851, -0.48582533), 23}, //
{glm::vec2(0.364197552, -0.485977769), 24}, //
{glm::vec2(0.364197552, -0.475308657), 25}, //
{glm::vec2(0.364197552, -0.475308657), 26}, //
{glm::vec2(0.364197552, -0.475308657), 27}, //
{glm::vec2(0.376543224, -0.475308657), 28}, //
{glm::vec2(0.376543224, -0.486130178), 29}, //
{glm::vec2(0.401234567, -0.486434996), 30}, //
{glm::vec2(0.401234567, -0.475308657), 31}, //
{glm::vec2(0.401234567, -0.475308657), 32}, //
{glm::vec2(0.401234567, -0.475308657), 33}, //
{glm::vec2(0.413580239, -0.475308657), 34}, //
{glm::vec2(0.413580239, -0.486587405), 35}, //
{glm::vec2(0.42592591, -0.486739844), 36}, //
});
polys.push_back({
{glm::vec2(0.314814806, -0.475308657), 37}, //
{glm::vec2(0.240740761, -0.475308657), 38}, //
{glm::vec2(0.240740761, -0.475308657), 39}, //
{glm::vec2(0.240740761, -0.484453589), 40}, //
{glm::vec2(0.253086448, -0.484606028), 41}, //
{glm::vec2(0.253086448, -0.475308657), 42}, //
{glm::vec2(0.253086448, -0.475308657), 43}, //
{glm::vec2(0.253086448, -0.475308657), 44}, //
{glm::vec2(0.265432119, -0.475308657), 45}, //
{glm::vec2(0.265432119, -0.484758437), 46}, //
{glm::vec2(0.290123463, -0.485063255), 47}, //
{glm::vec2(0.290123463, -0.475308657), 48}, //
{glm::vec2(0.290123463, -0.475308657), 49}, //
{glm::vec2(0.290123463, -0.475308657), 50}, //
{glm::vec2(0.302469134, -0.475308657), 51}, //
{glm::vec2(0.302469134, -0.485215664), 52}, //
{glm::vec2(0.314814806, -0.485368103), 53}, //
{glm::vec2(0.314814806, -0.475308657), 54}, //
});
TestPoly(polys, 38);
}
TEST(Polygon, ColinearY) {
Polygons polys;
polys.push_back({
{glm::vec2(0, 0), 0}, //
{glm::vec2(1, 1), 1}, //
{glm::vec2(2, 1), 2}, //
{glm::vec2(3, 1), 3}, //
{glm::vec2(4, 1), 4}, //
{glm::vec2(4, 2), 5}, //
{glm::vec2(3, 2), 6}, //
{glm::vec2(2, 2), 7}, //
{glm::vec2(1, 2), 8}, //
{glm::vec2(0, 3), 9}, //
{glm::vec2(-1, 2), 10}, //
{glm::vec2(-2, 2), 11}, //
{glm::vec2(-3, 2), 12}, //
{glm::vec2(-4, 2), 13}, //
{glm::vec2(-4, 1), 14}, //
{glm::vec2(-3, 1), 15}, //
{glm::vec2(-2, 1), 16}, //
{glm::vec2(-1, 1), 17}, //
});
TestPoly(polys, 16);
}
TEST(Polygon, Concave) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.707107008, -0.707107008), 0}, //
{glm::vec2(1, 0), 1}, //
{glm::vec2(0.683013022, 0), 2}, //
{glm::vec2(0.379409999, -0.232962996), 3}, //
{glm::vec2(0.379409999, -0.232962996), 4}, //
{glm::vec2(1.49012003e-08, -0.183013007), 5}, //
{glm::vec2(1.49012003e-08, -0.183013007), 6}, //
{glm::vec2(-0.140431002, 0), 7}, //
{glm::vec2(-1, 0), 8}, //
});
TestPoly(polys, 7);
}
TEST(Polygon, Concave2) {
Polygons polys;
polys.push_back({
{glm::vec2(4, 0), 1}, //
{glm::vec2(3, 2), 3}, //
{glm::vec2(3, 3), 4}, //
{glm::vec2(6, 5), 6}, //
{glm::vec2(6, 14), 13}, //
{glm::vec2(0, 13), 12}, //
{glm::vec2(0, 12), 11}, //
{glm::vec2(3, 11), 10}, //
{glm::vec2(4, 10), 9}, //
{glm::vec2(5, 8), 8}, //
{glm::vec2(1, 7), 7}, //
{glm::vec2(2, 1), 2}, //
});
TestPoly(polys, 10);
}
TEST(Polygon, Sliver) {
Polygons polys;
polys.push_back({
{glm::vec2(2.82002997, 0), 0}, //
{glm::vec2(2.82002997, 0), 1}, //
{glm::vec2(2.06105995, 0), 2}, //
{glm::vec2(2.05792999, 0.0680378973), 3}, //
{glm::vec2(2.06410003, 0.206908002), 4}, //
{glm::vec2(2.28446007, 1.04696), 5}, //
{glm::vec2(2.35005999, 1.24989998), 6}, //
{glm::vec2(-2.82002997, 15), 7}, //
{glm::vec2(-2.82002997, 0), 8}, //
});
TestPoly(polys, 7);
}
TEST(Polygon, Duplicate) {
Polygons polys;
polys.push_back({
{glm::vec2(-32.0774002, -10.4309998), 0}, //
{glm::vec2(-31.7346992, -6.10348988), 1}, //
{glm::vec2(-31.8645992, -5.61858988), 2}, //
{glm::vec2(-31.8645992, -5.61858988), 3}, //
{glm::vec2(-31.8645992, -5.61858988), 4}, //
{glm::vec2(-31.8645992, -5.61858988), 5}, //
{glm::vec2(-31.8645992, -5.61858988), 6}, //
{glm::vec2(-31.8645992, -5.61858988), 7}, //
{glm::vec2(-31.8645992, -5.61858988), 8}, //
{glm::vec2(-31.8645992, -5.61858988), 9}, //
{glm::vec2(-31.8645992, -5.61858988), 10}, //
{glm::vec2(-31.8645992, -5.61858988), 11}, //
{glm::vec2(-31.8645992, -5.61858988), 12}, //
{glm::vec2(-31.8645992, -5.61858988), 13}, //
{glm::vec2(-31.8645992, -5.61858988), 14}, //
{glm::vec2(-31.8645992, -5.61858988), 15}, //
{glm::vec2(-31.8645992, -5.61858988), 16}, //
{glm::vec2(-31.8645992, -5.61858988), 17}, //
{glm::vec2(-31.8645992, -5.61858988), 18}, //
{glm::vec2(-31.8645992, -5.61858988), 19}, //
{glm::vec2(-31.8645992, -5.61858988), 20}, //
{glm::vec2(-32.0774002, -3.1865499), 21}, //
});
TestPoly(polys, 20);
}
TEST(Polygon, Folded) {
Polygons polys;
polys.push_back({
{glm::vec2(2.82002997, 0), 0}, //
{glm::vec2(1.23706996, 4.20994997), 1}, //
{glm::vec2(1.14140999, 4.09090996), 2}, //
{glm::vec2(1.05895996, 3.94496012), 3}, //
{glm::vec2(0.00757742021, 2.72726989), 4}, //
{glm::vec2(-0.468091995, 1.94363999), 5}, //
{glm::vec2(-1.06106997, 1.36363995), 6}, //
{glm::vec2(-1.79214001, 0.346489996), 7}, //
{glm::vec2(-2.27416992, 0), 8}, //
{glm::vec2(-2.82002997, 0), 9}, //
{glm::vec2(-2.82002997, 0), 10}, //
});
TestPoly(polys, 9);
}
TEST(Polygon, NearlyLinear) {
Polygons polys;
polys.push_back({
{glm::vec2(2.82002997, -8.22814036e-05), 0}, //
{glm::vec2(2.82002997, -8.22814036e-05), 1}, //
{glm::vec2(2.31802011, -8.22814036e-05), 2}, //
{glm::vec2(-0.164566994, -8.22813017e-05), 3}, //
{glm::vec2(-0.85738802, -8.22814036e-05), 4}, //
{glm::vec2(-1.01091003, -8.22814036e-05), 5}, //
{glm::vec2(-1.01091003, -8.22814036e-05), 6}, //
});
TestPoly(polys, 5);
}
TEST(Polygon, Sliver2) {
Polygons polys;
polys.push_back({
{glm::vec2(27.4996014, 8.6873703), 74}, //
{glm::vec2(28.27701, 9.52887344), 76}, //
{glm::vec2(27.6687469, 10.8811588), 104}, //
{glm::vec2(27.5080414, 8.79682922), 242}, //
{glm::vec2(27.5594807, 8.75218964), 207}, //
{glm::vec2(27.4996014, 8.6873703), 268}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Sliver3) {
Polygons polys;
polys.push_back({
{glm::vec2(0, -2.65168381), 369}, //
{glm::vec2(0, -0.792692184), 1889}, //
{glm::vec2(0, -0.792692184), 2330}, //
{glm::vec2(0, -1.04356134), 2430}, //
{glm::vec2(-0.953957975, -0.768045247), 2331}, //
{glm::vec2(-1.36363637, -0.757460594), 1892}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Sliver4) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.375669807, 8.90489388), 7474}, //
{glm::vec2(0, 8.39722729), 7459}, //
{glm::vec2(0, 8.9723053), 7468}, //
{glm::vec2(0, 8.9723053), 7469}, //
{glm::vec2(0, 8.96719646), 7467}, //
{glm::vec2(0, 8.89326191), 7466}, //
{glm::vec2(0, 8.78047276), 7465}, //
{glm::vec2(-0.330551624, 8.8897438), 7473}, //
});
TestPoly(polys, 6);
}
TEST(Polygon, Sliver5) {
Polygons polys;
polys.push_back({
{glm::vec2(-60, 0), 19}, //
{glm::vec2(-50, 0), 21}, //
{glm::vec2(-50, 0), 38}, //
{glm::vec2(-60, 4.37113897e-07), 24}, //
{glm::vec2(-60, 4.37113897e-07), 37}, //
});
polys.push_back({
{glm::vec2(-60, 100), 20}, //
{glm::vec2(-60, 4.37113897e-07), 44}, //
{glm::vec2(-60, 4.37113897e-07), 28}, //
{glm::vec2(-50, 0), 45}, //
});
TestPoly(polys, 5);
}
TEST(Polygon, Sliver6) {
Polygons polys;
polys.push_back({
{glm::vec2(10, 0), 5}, //
{glm::vec2(0, 10), 9}, //
{glm::vec2(-10, 0), 10}, //
{glm::vec2(-10, 0), 18}, //
{glm::vec2(4.37113897e-07, 10), 15}, //
{glm::vec2(10, 0), 17}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Sliver7) {
Polygons polys;
polys.push_back({
{glm::vec2(50, -10), 0}, //
{glm::vec2(60, 0), 25}, //
{glm::vec2(50, 0), 31}, //
{glm::vec2(60, 4.37113897e-07), 32}, //
{glm::vec2(60, 4.37113897e-07), 33}, //
{glm::vec2(60, 4.37113897e-07), 24}, //
{glm::vec2(60, 4.37113897e-07), 2}, //
{glm::vec2(50, 0), 1}, //
});
TestPoly(polys, 6);
}
TEST(Polygon, Colinear2) {
Polygons polys;
polys.push_back({
{glm::vec2(11.7864399, -7.4572401), 4176}, //
{glm::vec2(11.6818037, -7.30982304), 24873}, //
{glm::vec2(11.6777582, -7.30626202), 28498}, //
{glm::vec2(11.6789398, -7.30578804), 24872}, //
{glm::vec2(11.3459997, -6.83671999), 4889}, //
{glm::vec2(11.25597, -6.9267602), 4888}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Split) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.707106769, -0.707106769), 1}, //
{glm::vec2(1, 0), 14}, //
{glm::vec2(0.683012664, 0), 25}, //
{glm::vec2(0.379409522, -0.232962906), 33}, //
{glm::vec2(0.379409522, -0.232962906), 32}, //
{glm::vec2(1.49011612e-08, -0.183012664), 31}, //
{glm::vec2(1.49011612e-08, -0.183012664), 30}, //
{glm::vec2(-0.14043057, 0), 24}, //
{glm::vec2(-1, 0), 4}, //
});
TestPoly(polys, 7);
}
TEST(Polygon, Duplicates) {
Polygons polys;
polys.push_back({
{glm::vec2(-15, -8.10255623), 1648}, //
{glm::vec2(-15, -9.02439785), 1650}, //
{glm::vec2(-13.636364, -9.4640789), 1678}, //
{glm::vec2(-14.996314, -8.10623646), 1916}, //
{glm::vec2(-15, -8.10639), 1845}, //
{glm::vec2(-15, -8.10255623), 1922}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Simple1) {
Polygons polys;
polys.push_back({
{glm::vec2(4.04059982, -4.01843977), 2872}, //
{glm::vec2(3.95867562, -4.25263977), 24604}, //
{glm::vec2(4.23459578, -4.30138493), 28274}, //
{glm::vec2(4.235569, -4.30127287), 28273}, //
{glm::vec2(4.23782539, -4.30141878), 24602}, //
});
TestPoly(polys, 3);
}
TEST(Polygon, Simple2) {
Polygons polys;
polys.push_back({
{glm::vec2(-1, -1), 1}, //
{glm::vec2(-0.5, -0.5), 9}, //
{glm::vec2(-1, 0), 11}, //
{glm::vec2(0, 1), 12}, //
{glm::vec2(0.5, 0.5), 10}, //
{glm::vec2(1, 1), 7}, //
{glm::vec2(-1, 1), 3}, //
});
TestPoly(polys, 5);
}
TEST(Polygon, Simple3) {
Polygons polys;
polys.push_back({
{glm::vec2(19.7193489, 6.15445995), 19798}, //
{glm::vec2(20.2308197, 5.64299059), 31187}, //
{glm::vec2(20.3464642, 5.65459776), 27273}, //
{glm::vec2(20.3733711, 5.65404081), 27274}, //
{glm::vec2(20.373394, 5.65404034), 31188}, //
{glm::vec2(20.8738098, 6.15445995), 19801}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Simple4) {
Polygons polys;
polys.push_back({
{glm::vec2(15, -12.7135563), 287}, //
{glm::vec2(15, -10.6843739), 288}, //
{glm::vec2(15, -10.6843739), 492}, //
{glm::vec2(15, -11.0041418), 413}, //
{glm::vec2(15, -11.4550743), 409}, //
{glm::vec2(15, -11.4550743), 411}, //
{glm::vec2(14.9958763, -11.4545326), 408}, //
{glm::vec2(14.4307623, -11.3802214), 412}, //
{glm::vec2(13.9298496, -11.2768612), 480}, //
});
TestPoly(polys, 7);
}
TEST(Polygon, Simple5) {
Polygons polys;
polys.push_back({
{glm::vec2(-27.3845081, 0.375669748), 364}, //
{glm::vec2(-27.6389656, 0), 365}, //
{glm::vec2(-27.1156006, 0), 355}, //
{glm::vec2(-27.1156006, 0), 356}, //
{glm::vec2(-27.1202412, 0), 359}, //
{glm::vec2(-27.1875362, 0), 360}, //
{glm::vec2(-27.290184, 0), 362}, //
{glm::vec2(-27.3733444, 0.330451876), 363}, //
});
TestPoly(polys, 6);
}
TEST(Polygon, Simple6) {
Polygons polys;
polys.push_back({
{glm::vec2(-7.99813318, 12.8888826), 25009}, //
{glm::vec2(-7.85714436, 12.9125195), 25006}, //
{glm::vec2(-7.85714436, 12.9807196), 25005}, //
{glm::vec2(-7.88929749, 12.9593039), 25007}, //
{glm::vec2(-7.99812126, 12.8888912), 25008}, //
});
TestPoly(polys, 3);
}
TEST(Polygon, TouchingHole) {
Polygons polys;
polys.push_back({
{glm::vec2(-2, -1), 0}, //
{glm::vec2(2, -1), 1}, //
{glm::vec2(2, 1), 2}, //
{glm::vec2(-2, 1), 3}, //
});
polys.push_back({
{glm::vec2(-1, -1), 4}, //
{glm::vec2(-1, 1), 5}, //
{glm::vec2(1, 1), 6}, //
{glm::vec2(1, -1), 7}, //
});
TestPoly(polys, 8);
}
TEST(Polygon, Degenerate) {
Polygons polys;
polys.push_back({
{glm::vec2(1, -1), 0}, //
{glm::vec2(1, 1), 1}, //
{glm::vec2(1, 1), 2}, //
{glm::vec2(1, -1), 3}, //
{glm::vec2(1, -1), 4}, //
{glm::vec2(-1, -1), 5}, //
{glm::vec2(-1, -1), 6}, //
});
TestPoly(polys, 5);
}
TEST(Polygon, Degenerate2) {
Polygons polys;
polys.push_back({
{glm::vec2(0.0740740597, -0.314814836), 4829}, //
{glm::vec2(0.0925925896, -0.314814806), 4828}, //
{glm::vec2(0.0925925896, -0.314814806), 4826}, //
{glm::vec2(0.0740740597, -0.314814836), 4830}, //
});
TestPoly(polys, 2);
}
TEST(Polygon, Degenerate3) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.413580239, -0.216049403), 49696}, //
{glm::vec2(-0.42592591, -0.216049403), 49690}, //
{glm::vec2(-0.413580239, -0.216049403), 49694}, //
{glm::vec2(-0.401234567, -0.216049403), 49713}, //
{glm::vec2(-0.401234567, -0.216049403), 49715}, //
{glm::vec2(-0.401234567, -0.216049403), 49716}, //
{glm::vec2(-0.413580239, -0.216049403), 49697}, //
});
TestPoly(polys, 5);
}
TEST(Polygon, Degenerate4) {
Polygons polys;
polys.push_back({
{glm::vec2(0, 10), 213}, //
{glm::vec2(-0.0696326792, 9.99390793), 360}, //
{glm::vec2(4.37113897e-07, 10), 276}, //
{glm::vec2(0.636729717, 9.94429302), 340}, //
});
TestPoly(polys, 2);
}
TEST(Polygon, Degenerate5) {
Polygons polys;
polys.push_back({
{glm::vec2(1, 0), 3}, //
{glm::vec2(1, 1), 7}, //
{glm::vec2(1, 1), 15}, //
{glm::vec2(1, 1), 23}, //
{glm::vec2(1, 1), 21}, //
{glm::vec2(0, 1), 22}, //
{glm::vec2(0, 1), 14}, //
{glm::vec2(0, 1), 6}, //
});
TestPoly(polys, 6);
}
TEST(Polygon, Degenerate6) {
Polygons polys;
polys.push_back({
{glm::vec2(4.37113897e-07, -4.37113897e-07), 0}, //
{glm::vec2(4.37113897e-07, 0), 18}, //
{glm::vec2(0, 0), 23}, //
{glm::vec2(-1.19421679e-06, 0), 25}, //
{glm::vec2(-8.66025352, 0), 24}, //
{glm::vec2(-8.66025352, 1.339746), 19}, //
{glm::vec2(-10, -4.37113897e-07), 3}, //
});
TestPoly(polys, 5);
}
TEST(Polygon, Tricky) {
Polygons polys;
polys.push_back({
{glm::vec2(1, 0), 0}, //
{glm::vec2(2, 1), 1}, //
{glm::vec2(3, 0), 2}, //
{glm::vec2(3, 5), 3}, //
{glm::vec2(2, 5), 4}, //
{glm::vec2(3, 4), 5}, //
{glm::vec2(3, 2), 6}, //
{glm::vec2(3, 3), 7}, //
{glm::vec2(0, 6), 8}, //
});
TestPoly(polys, 7);
}
TEST(Polygon, Tricky2) {
Polygons polys;
polys.push_back({
{glm::vec2(1, 0), 0}, //
{glm::vec2(3, 1), 1}, //
{glm::vec2(3, 3.5), 9}, //
{glm::vec2(3, 0), 2}, //
{glm::vec2(3, 5), 3}, //
{glm::vec2(2, 5), 4}, //
{glm::vec2(3, 4), 5}, //
{glm::vec2(3, 2), 6}, //
{glm::vec2(3, 3), 7}, //
{glm::vec2(0, 6), 8}, //
});
TestPoly(polys, 8);
}
TEST(Polygon, Slit) {
Polygons polys;
polys.push_back({
{glm::vec2(27.7069321, 13.5144091), 286}, //
{glm::vec2(28.664566, 10.8102894), 267}, //
{glm::vec2(28.7565536, 10.8183374), 266}, //
{glm::vec2(25.9535275, 19.4451675), 870}, //
{glm::vec2(26.0820198, 18.9281673), 865}, //
{glm::vec2(26.0820198, 18.9281673), 864}, //
{glm::vec2(26.0820198, 18.9281673), 866}, //
{glm::vec2(25.8192234, 18.8448315), 867}, //
{glm::vec2(27.7069321, 13.5144091), 285}, //
{glm::vec2(27.9789181, 13.2116556), 284}, //
});
polys.push_back({
{glm::vec2(25.6960907, 20.2374783), 891}, //
{glm::vec2(25.6563644, 20.3597412), 892}, //
{glm::vec2(25.6467285, 20.3614731), 893}, //
});
TestPoly(polys, 9);
}
TEST(Polygon, SharedEdge) {
Polygons polys;
polys.push_back({
{glm::vec2(0.265432119, 0.0061728349), 61185}, //
{glm::vec2(0.277777791, -3.7252903e-09), 61180}, //
{glm::vec2(0.277777791, 0.0185185187), 61184}, //
{glm::vec2(0.240740761, 0.0185185187), 76345}, //
{glm::vec2(0.265432119, 0.00617283955), 61186}, //
{glm::vec2(0.265432119, 0.00617283955), 61187}, //
});
TestPoly(polys, 4);
}
TEST(Polygon, Precision) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.98486793, -0.492948532), 0}, //
{glm::vec2(-0.984859049, -0.492013603), 1}, //
{glm::vec2(-0.984966695, -0.489926398), 2}, //
{glm::vec2(-0.984955609, -0.490281343), 3}, //
{glm::vec2(-0.985008538, -0.489676297), 4}, //
{glm::vec2(-0.98491329, -0.491925418), 5}, //
{glm::vec2(-0.984878719, -0.492937535), 6}, //
});
TestPoly(polys, 5, 0.0001);
};
TEST(Polygon, Precision2) {
PolygonParams().processOverlaps = true;
const bool intermediateChecks = PolygonParams().intermediateChecks;
PolygonParams().intermediateChecks = false;
Polygons polys;
polys.push_back({
{glm::vec2(4.98093176, -0.247938812), 11113}, //
{glm::vec2(4.94630527, -0.0826399028), 22736}, //
{glm::vec2(4.98092985, -0.247938812), 22735}, //
});
polys.push_back({
{glm::vec2(4.76215458, -0.247848436), 17566}, //
{glm::vec2(4.76215267, -0.247860417), 22640}, //
{glm::vec2(4.76215553, -0.247860417), 22639}, //
});
polys.push_back({
{glm::vec2(4.95041943, -0.241741896), 17815}, //
{glm::vec2(4.85906506, -0.223121181), 17816}, //
{glm::vec2(4.90268326, -0.152885556), 17824}, //
{glm::vec2(4.82208872, -0.18590945), 17823}, //
{glm::vec2(4.79133606, -0.247870877), 22638}, //
{glm::vec2(4.98092985, -0.247938812), 22733}, //
{glm::vec2(4.90268326, -0.152885556), 17822}, //
{glm::vec2(4.95041943, -0.241741896), 17819}, //
});
TestPoly(polys, 8);
PolygonParams().processOverlaps = false;
PolygonParams().intermediateChecks = intermediateChecks;
};
TEST(Polygon, Comb) {
Polygons polys;
polys.push_back({
{glm::vec2(0.462962955, -0.427297652), 18}, //
{glm::vec2(0.5, -0.42592591), 17}, //
{glm::vec2(-0.5, -0.42592591), 1283}, //
{glm::vec2(-0.5, -0.462962955), 1269}, //
{glm::vec2(-0.462962985, -0.461591214), 1268}, //
{glm::vec2(-0.462962985, -0.42592591), 1282}, //
{glm::vec2(-0.42592594, -0.42592591), 1280}, //
{glm::vec2(-0.42592594, -0.460219473), 1266}, //
{glm::vec2(-0.351851881, -0.45747599), 1247}, //
{glm::vec2(-0.351851881, -0.42592591), 1257}, //
{glm::vec2(-0.314814836, -0.42592591), 1256}, //
{glm::vec2(-0.314814836, -0.456104249), 1245}, //
{glm::vec2(-0.240740746, -0.453360766), 1132}, //
{glm::vec2(-0.240740746, -0.42592591), 1143}, //
{glm::vec2(-0.203703716, -0.42592591), 1142}, //
{glm::vec2(-0.203703716, -0.451989025), 1130}, //
{glm::vec2(-0.129629642, -0.449245542), 1128}, //
{glm::vec2(-0.129629642, -0.42592591), 1141}, //
{glm::vec2(-0.092592597, -0.42592591), 1119}, //
{glm::vec2(-0.092592597, -0.447873801), 1111}, //
{glm::vec2(-0.0185185187, -0.445130289), 1109}, //
{glm::vec2(-0.0185185187, -0.42592591), 1117}, //
{glm::vec2(0.0185185187, -0.42592591), 169}, //
{glm::vec2(0.0185185187, -0.443758547), 162}, //
{glm::vec2(0.0925925896, -0.441015065), 160}, //
{glm::vec2(0.0925925896, -0.42592591), 168}, //
{glm::vec2(0.129629627, -0.42592591), 152}, //
{glm::vec2(0.129629627, -0.439643323), 141}, //
{glm::vec2(0.203703731, -0.436899841), 150}, //
{glm::vec2(0.203703731, -0.42592591), 151}, //
{glm::vec2(0.240740761, -0.42592591), 149}, //
{glm::vec2(0.240740761, -0.4355281), 148}, //
{glm::vec2(0.314814806, -0.432784617), 40}, //
{glm::vec2(0.314814806, -0.42592591), 41}, //
{glm::vec2(0.351851851, -0.42592591), 39}, //
{glm::vec2(0.351851851, -0.431412876), 38}, //
{glm::vec2(0.42592591, -0.428669393), 21}, //
{glm::vec2(0.42592591, -0.42592591), 22}, //
{glm::vec2(0.462962955, -0.42592591), 19}, //
});
TestPoly(polys, 37);
}
TEST(Polygon, Comb2) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.5, -0.462962955), 2}, //
{glm::vec2(-0.462962955, -0.461591214), 4}, //
{glm::vec2(-0.462962955, -0.42592591), 13}, //
{glm::vec2(-0.42592591, -0.42592591), 15}, //
{glm::vec2(-0.42592591, -0.460219473), 7}, //
{glm::vec2(-0.351851851, -0.45747599), 28}, //
{glm::vec2(-0.351851851, -0.42592591), 35}, //
{glm::vec2(-0.314814806, -0.42592591), 36}, //
{glm::vec2(-0.314814806, -0.456104249), 30}, //
{glm::vec2(-0.240740761, -0.453360766), 132}, //
{glm::vec2(-0.240740761, -0.42592591), 144}, //
{glm::vec2(-0.203703731, -0.42592591), 145}, //
{glm::vec2(-0.203703731, -0.451989025), 134}, //
{glm::vec2(-0.129629627, -0.449245542), 137}, //
{glm::vec2(-0.129629627, -0.42592591), 147}, //
{glm::vec2(-0.0925925896, -0.42592591), 164}, //
{glm::vec2(-0.0925925896, -0.447873801), 155}, //
{glm::vec2(-0.0185185187, -0.445130289), 158}, //
{glm::vec2(-0.0185185187, -0.42592591), 166}, //
{glm::vec2(0.0185185187, -0.42592591), 1113}, //
{glm::vec2(0.0185185187, -0.443758547), 1104}, //
{glm::vec2(0.092592597, -0.441015065), 1107}, //
{glm::vec2(0.092592597, -0.42592591), 1116}, //
{glm::vec2(0.129629642, -0.42592591), 1134}, //
{glm::vec2(0.129629642, -0.439643323), 1122}, //
{glm::vec2(0.203703716, -0.436899841), 1137}, //
{glm::vec2(0.203703716, -0.42592591), 1138}, //
{glm::vec2(0.240740746, -0.42592591), 1140}, //
{glm::vec2(0.240740746, -0.4355281), 1139}, //
{glm::vec2(0.314814836, -0.432784617), 1251}, //
{glm::vec2(0.314814836, -0.42592591), 1252}, //
{glm::vec2(0.351851881, -0.42592591), 1254}, //
{glm::vec2(0.351851881, -0.431412876), 1253}, //
{glm::vec2(0.42592594, -0.428669393), 1272}, //
{glm::vec2(0.42592594, -0.42592591), 1273}, //
{glm::vec2(0.462962985, -0.42592591), 1278}, //
{glm::vec2(0.462962985, -0.427297652), 1277}, //
{glm::vec2(0.5, -0.42592591), 1279}, //
{glm::vec2(-0.5, -0.42592591), 12}, //
});
TestPoly(polys, 37);
}
TEST(Polygon, PointPoly) {
Polygons polys;
polys.push_back({
{glm::vec2(0, -15.9780979), 32}, //
{glm::vec2(5.08144999, -14.2678728), 244}, //
{glm::vec2(4.83870935, -14.0789623), 243}, //
{glm::vec2(4.38336992, -13.7492008), 237}, //
{glm::vec2(4.35483837, -13.7284746), 238}, //
{glm::vec2(4.33122683, -13.712779), 235}, //
{glm::vec2(3.87096763, -13.3689337), 230}, //
{glm::vec2(3.52637458, -13.1333551), 81}, //
{glm::vec2(3.38709664, -13.0251188), 79}, //
{glm::vec2(3.10755324, -12.8263216), 75}, //
{glm::vec2(2.90322566, -12.6806841), 73}, //
{glm::vec2(2.80962205, -12.6208401), 71}, //
{glm::vec2(2.41935468, -12.3280048), 69}, //
{glm::vec2(2.16151524, -12.1544657), 68}, //
{glm::vec2(1.93548381, -11.9734631), 86}, //
{glm::vec2(1.56781006, -11.7093639), 47}, //
{glm::vec2(1.45161283, -11.6084995), 46}, //
{glm::vec2(1.02412188, -11.2756453), 43}, //
{glm::vec2(0.967741907, -11.2216129), 44}, //
{glm::vec2(0.628127813, -10.9296618), 40}, //
{glm::vec2(0, -10.9296618), 33}, //
});
polys.push_back({
{glm::vec2(15, -10.9296618), 1052}, //
{glm::vec2(15, -10.9296618), 1051}, //
{glm::vec2(15, -10.9296618), 1053}, //
});
TestPoly(polys, 20);
};
TEST(Polygon, KissingZigzag) {
Polygons polys;
polys.push_back({
{glm::vec2(37.4667358, 0), 0}, //
{glm::vec2(27.8904877, -3.04520559), 1}, //
{glm::vec2(27.8904877, 3.04520559), 2}, //
{glm::vec2(37.4667358, 0), 3}, //
{glm::vec2(36.4568138, 8.64042377), 4}, //
{glm::vec2(27.8409691, 3.46886754), 5}, //
{glm::vec2(26.4364243, 9.39511108), 6}, //
{glm::vec2(36.4568138, 8.64042377), 7}, //
{glm::vec2(33.4814987, 16.8150406), 8}, //
{glm::vec2(26.2905369, 9.79593277), 9}, //
{glm::vec2(23.5571651, 15.2385235), 10}, //
{glm::vec2(33.4814987, 16.8150406), 11}, //
{glm::vec2(28.7011852, 24.0831528), 12}, //
{glm::vec2(23.322773, 15.5948954), 13}, //
{glm::vec2(19.4079323, 20.2604218), 14}, //
{glm::vec2(28.7011852, 24.0831528), 15}, //
{glm::vec2(22.3735847, 30.0529385), 16}, //
{glm::vec2(19.0976753, 20.5531368), 17}, //
{glm::vec2(14.2124147, 24.1900768), 18}, //
{glm::vec2(22.3735847, 30.0529385), 19}, //
{glm::vec2(14.8398142, 34.4025612), 20}, //
{glm::vec2(13.8430138, 24.4033508), 21}, //
{glm::vec2(8.2507, 26.8156395), 22}, //
{glm::vec2(14.8398142, 34.4025612), 23}, //
{glm::vec2(6.50603199, 36.8975296), 24}, //
{glm::vec2(7.84207535, 26.937973), 25}, //
{glm::vec2(1.84419155, 27.9955635), 26}, //
{glm::vec2(6.50603199, 36.8975296), 27}, //
{glm::vec2(-2.1784966, 37.4033508), 28}, //
{glm::vec2(1.41836619, 28.0203648), 29}, //
{glm::vec2(-4.66174126, 27.6662388), 30}, //
{glm::vec2(-2.1784966, 37.4033508), 31}, //
{glm::vec2(-10.7455816, 35.8927383), 32}, //
{glm::vec2(-5.08180761, 27.5921688), 33}, //
{glm::vec2(-10.916357, 25.8454189), 34}, //
{glm::vec2(-10.7455816, 35.8927383), 35}, //
{glm::vec2(-18.7333698, 32.4471436), 36}, //
{glm::vec2(-11.3080206, 25.6764717), 37}, //
{glm::vec2(-16.5824718, 22.6312675), 38}, //
{glm::vec2(-18.7333698, 32.4471436), 39}, //
{glm::vec2(-25.711235, 27.2523136), 40}, //
{glm::vec2(-16.924614, 22.3765507), 41}, //
{glm::vec2(-21.3546181, 18.1970577), 42}, //
{glm::vec2(-25.711235, 27.2523136), 43}, //
{glm::vec2(-31.3030052, 20.5883045), 44}, //
{glm::vec2(-21.6287994, 17.8703041), 45}, //
{glm::vec2(-24.9755325, 12.7818384), 46}, //
{glm::vec2(-31.3030052, 20.5883045), 47}, //
{glm::vec2(-35.2072144, 12.8143806), 48}, //
{glm::vec2(-25.1669636, 12.4006672), 49}, //
{glm::vec2(-27.2500057, 6.67755318), 50}, //
{glm::vec2(-35.2072144, 12.8143806), 51}, //
{glm::vec2(-37.213398, 4.34962463), 52}, //
{glm::vec2(-27.3483734, 6.26250458), 53}, //
{glm::vec2(-28.0554276, 0.213274717), 54}, //
{glm::vec2(-37.213398, 4.34962463), 55}, //
{glm::vec2(-37.213398, -4.34962177), 56}, //
{glm::vec2(-28.0554276, -0.21327281), 57}, //
{glm::vec2(-27.3483734, -6.26250267), 58}, //
{glm::vec2(-37.213398, -4.34962177), 59}, //
{glm::vec2(-35.2072144, -12.8143787), 60}, //
{glm::vec2(-27.2500057, -6.67755222), 61}, //
{glm::vec2(-25.1669636, -12.4006662), 62}, //
{glm::vec2(-35.2072144, -12.8143787), 63}, //
{glm::vec2(-31.3029995, -20.5883102), 64}, //
{glm::vec2(-24.9755306, -12.7818432), 65}, //
{glm::vec2(-21.6287937, -17.8703079), 66}, //
{glm::vec2(-31.3029995, -20.5883102), 67}, //
{glm::vec2(-25.7112312, -27.2523193), 68}, //
{glm::vec2(-21.3546143, -18.1970615), 69}, //
{glm::vec2(-16.9246101, -22.3765545), 70}, //
{glm::vec2(-25.7112312, -27.2523193), 71}, //
{glm::vec2(-18.7333641, -32.4471474), 72}, //
{glm::vec2(-16.5824661, -22.6312695), 73}, //
{glm::vec2(-11.3080158, -25.6764736), 74}, //
{glm::vec2(-18.7333641, -32.4471474), 75}, //
{glm::vec2(-10.7455835, -35.8927383), 76}, //
{glm::vec2(-10.9163589, -25.8454189), 77}, //
{glm::vec2(-5.08180904, -27.5921688), 78}, //
{glm::vec2(-10.7455835, -35.8927383), 79}, //
{glm::vec2(-2.17849016, -37.4033508), 80}, //
{glm::vec2(-4.66173601, -27.6662388), 81}, //
{glm::vec2(1.41837108, -28.0203648), 82}, //
{glm::vec2(-2.17849016, -37.4033508), 83}, //
{glm::vec2(6.50602913, -36.8975296), 84}, //
{glm::vec2(1.84418964, -27.9955635), 85}, //
{glm::vec2(7.84207344, -26.937973), 86}, //
{glm::vec2(6.50602913, -36.8975296), 87}, //
{glm::vec2(14.8398247, -34.4025574), 88}, //
{glm::vec2(8.25070763, -26.8156357), 89}, //
{glm::vec2(13.8430195, -24.403347), 90}, //
{glm::vec2(14.8398247, -34.4025574), 91}, //
{glm::vec2(22.3735847, -30.0529385), 92}, //
{glm::vec2(14.2124147, -24.1900768), 93}, //
{glm::vec2(19.0976753, -20.5531368), 94}, //
{glm::vec2(22.3735847, -30.0529385), 95}, //
{glm::vec2(28.7011795, -24.0831585), 96}, //
{glm::vec2(19.4079285, -20.2604256), 97}, //
{glm::vec2(23.3227692, -15.5949011), 98}, //
{glm::vec2(28.7011795, -24.0831585), 99}, //
{glm::vec2(33.4815025, -16.8150368), 100}, //
{glm::vec2(23.5571671, -15.2385206), 101}, //
{glm::vec2(26.2905388, -9.79592991), 102}, //
{glm::vec2(33.4815025, -16.8150368), 103}, //
{glm::vec2(36.4568138, -8.64042759), 104}, //
{glm::vec2(26.4364243, -9.39511299), 105}, //
{glm::vec2(27.8409691, -3.46886992), 106}, //
{glm::vec2(36.4568138, -8.64042759), 107}, //
});
TestPoly(polys, 106);
}
TEST(Polygon, Sponge) {
Polygons polys;
polys.push_back({
{glm::vec2(-0.5, -0.5), 22}, //
{glm::vec2(-0.388888896, -0.388888896), 23}, //
{glm::vec2(-0.388888896, -0.388888896), 24}, //
{glm::vec2(-0.388888896, -0.277777791), 26}, //
{glm::vec2(-0.388888896, -0.277777791), 27}, //
{glm::vec2(-0.277777791, -0.277777791), 30}, //
{glm::vec2(-0.166666657, -0.166666672), 41}, //
{glm::vec2(-0.166666672, -0.166666672), 42}, //
{glm::vec2(-0.166666672, -0.166666672), 43}, //
{glm::vec2(-0.166666672, 0.166666672), 76}, //
{glm::vec2(-0.166666672, 0.166666672), 77}, //
{glm::vec2(0.166666657, 0.166666672), 142}, //
{glm::vec2(0.277777791, 0.277777791), 153}, //
{glm::vec2(0.277777791, 0.277777791), 154}, //
{glm::vec2(0.277777791, 0.277777791), 155}, //
{glm::vec2(0.277777791, 0.388888896), 156}, //
{glm::vec2(0.277777791, 0.388888896), 157}, //
{glm::vec2(0.388888896, 0.388888896), 161}, //
{glm::vec2(0.388888896, 0.388888896), 160}, //
{glm::vec2(0.5, 0.5), 163}, //
{glm::vec2(-0.5, 0.5), 69}, //
});
polys.push_back({
{glm::vec2(-0.388888896, -0.055555556), 33}, //
{glm::vec2(-0.388888896, -0.055555556), 34}, //
{glm::vec2(-0.388888896, 0.055555556), 63}, //
{glm::vec2(-0.388888896, 0.055555556), 64}, //
{glm::vec2(-0.277777791, 0.055555556), 66}, //
{glm::vec2(-0.277777791, 0.055555556), 65}, //
{glm::vec2(-0.277777791, -0.055555556), 35}, //
{glm::vec2(-0.277777791, -0.055555556), 36}, //
});
polys.push_back({
{glm::vec2(-0.277777791, 0.277777791), 72}, //
{glm::vec2(-0.277777791, 0.277777791), 73}, //
{glm::vec2(-0.388888896, 0.277777791), 67}, //
{glm::vec2(-0.388888896, 0.277777791), 68}, //
{glm::vec2(-0.388888896, 0.388888896), 70}, //
{glm::vec2(-0.388888896, 0.388888896), 71}, //
{glm::vec2(-0.277777791, 0.388888896), 74}, //
{glm::vec2(-0.277777791, 0.388888896), 75}, //
});
polys.push_back({
{glm::vec2(-0.055555556, 0.277777791), 78}, //
{glm::vec2(-0.055555556, 0.277777791), 79}, //
{glm::vec2(-0.055555556, 0.388888896), 80}, //
{glm::vec2(-0.055555556, 0.388888896), 81}, //
{glm::vec2(0.055555556, 0.388888896), 147}, //
{glm::vec2(0.055555556, 0.388888896), 148}, //
{glm::vec2(0.055555556, 0.277777791), 146}, //
{glm::vec2(0.055555556, 0.277777791), 145}, //
});
TestPoly(polys, 49);
}
TEST(Polygon, SquareHoles) {
Polygons polys;
polys.push_back({
{glm::vec2(0.388888896, -0.277777791), 10}, //
{glm::vec2(0.388888896, -0.388888896), 8}, //
{glm::vec2(0.277777791, -0.388888896), 9}, //
{glm::vec2(0.277777791, -0.277777791), 11}, //
});
polys.push_back({
{glm::vec2(0.388888896, -0.055555556), 14}, //
{glm::vec2(0.277777791, -0.055555556), 12}, //
{glm::vec2(0.277777791, 0.055555556), 16}, //
{glm::vec2(0.388888896, 0.055555556), 15}, //
});
polys.push_back({
{glm::vec2(0.055555556, -0.277777791), 25}, //
{glm::vec2(0.055555556, -0.388888896), 13}, //
{glm::vec2(-0.055555556, -0.388888896), 23}, //
{glm::vec2(-0.055555556, -0.277777791), 24}, //
});
polys.push_back({
{glm::vec2(0.388888896, 0.277777791), 18}, //
{glm::vec2(0.277777791, 0.277777791), 17}, //
{glm::vec2(0.277777791, 0.388888896), 20}, //
{glm::vec2(0.388888896, 0.388888896), 19}, //
});
polys.push_back({
{glm::vec2(0.166666672, 0.166666672), 32}, //
{glm::vec2(0.166666672, -0.166666672), 21}, //
{glm::vec2(-0.166666672, -0.166666672), 26}, //
{glm::vec2(-0.166666672, 0.166666672), 33}, //
});
polys.push_back({
{glm::vec2(0.055555556, 0.388888896), 35}, //
{glm::vec2(0.055555556, 0.277777791), 22}, //
{glm::vec2(-0.055555556, 0.277777791), 34}, //
{glm::vec2(-0.055555556, 0.388888896), 36}, //
});
polys.push_back({
{glm::vec2(-0.277777791, -0.277777791), 30}, //
{glm::vec2(-0.277777791, -0.388888896), 27}, //
{glm::vec2(-0.388888896, -0.388888896), 28}, //
{glm::vec2(-0.388888896, -0.277777791), 29}, //
});
polys.push_back({
{glm::vec2(-0.277777791, -0.055555556), 37}, //
{glm::vec2(-0.388888896, -0.055555556), 31}, //
{glm::vec2(-0.388888896, 0.055555556), 39}, //
{glm::vec2(-0.277777791, 0.055555556), 38}, //
});
polys.push_back({
{glm::vec2(-0.277777791, 0.388888896), 42}, //
{glm::vec2(-0.277777791, 0.277777791), 40}, //
{glm::vec2(-0.388888896, 0.277777791), 41}, //
{glm::vec2(-0.388888896, 0.388888896), 43}, //
});
polys.push_back({
{glm::vec2(-0.5, -0.5), 1}, //
{glm::vec2(0.5, -0.5), 0}, //
{glm::vec2(0.5, 0.5), 3}, //
{glm::vec2(-0.5, 0.5), 2}, //
});
TestPoly(polys, 56);
}
TEST(Polygon, BigSponge) {
Polygons polys;
polys.push_back({
{glm::vec2(0.5, 0.5), 1}, //
{glm::vec2(0.487654328, 0.487654328), 13834}, //
{glm::vec2(0.487654328, 0.487654328), 83869}, //
{glm::vec2(0.487654328, 0.475308657), 83868}, //
{glm::vec2(0.475308657, 0.475308657), 83870}, //
{glm::vec2(0.475308657, 0.475308657), 13835}, //
{glm::vec2(0.462962955, 0.462962955), 13833}, //
{glm::vec2(0.462962955, 0.42592594), 83857}, //
{glm::vec2(0.42592594, 0.42592594), 13830}, //
{glm::vec2(0.413580239, 0.413580239), 13832}, //
{glm::vec2(0.413580239, 0.413580239), 83861}, //
{glm::vec2(0.413580239, 0.401234567), 83862}, //
{glm::vec2(0.401234567, 0.401234567), 83863}, //
{glm::vec2(0.401234567, 0.401234567), 13831}, //
{glm::vec2(0.388888896, 0.388888896), 13836}, //
{glm::vec2(0.388888896, 0.388888896), 83826}, //
{glm::vec2(0.388888896, 0.277777791), 83834}, //
{glm::vec2(0.277777791, 0.277777791), 83842}, //
{glm::vec2(0.277777791, 0.277777791), 13829}, //
{glm::vec2(0.265432119, 0.265432119), 13827}, //
{glm::vec2(0.265432119, 0.265432119), 83840}, //
{glm::vec2(0.265432119, 0.253086448), 83839}, //
{glm::vec2(0.253086448, 0.253086448), 83841}, //
{glm::vec2(0.253086448, 0.253086448), 13828}, //
{glm::vec2(0.240740746, 0.240740746), 13824}, //
{glm::vec2(0.240740761, 0.240740746), 83783}, //
{glm::vec2(0.240740761, 0.203703716), 83781}, //
{glm::vec2(0.203703731, 0.203703716), 83784}, //
{glm::vec2(0.203703731, 0.203703746), 13825}, //
{glm::vec2(0.19135803, 0.19135803), 13823}, //
{glm::vec2(0.19135803, 0.19135803), 83782}, //
{glm::vec2(0.19135803, 0.179012358), 83776}, //
{glm::vec2(0.179012358, 0.179012358), 83785}, //
{glm::vec2(0.179012358, 0.179012358), 13826}, //
{glm::vec2(0.166666672, 0.166666657), 13822}, //
{glm::vec2(0.166666672, -0.166666672), 83546}, //
{glm::vec2(-0.166666672, -0.166666672), 83871}, //
{glm::vec2(-0.166666672, -0.166666657), 13837}, //
{glm::vec2(-0.179012358, -0.179012358), 13818}, //
{glm::vec2(-0.179012358, -0.19135803), 83565}, //
{glm::vec2(-0.19135803, -0.19135803), 13820}, //
{glm::vec2(-0.203703731, -0.203703731), 13821}, //
{glm::vec2(-0.203703716, -0.203703731), 83562}, //
{glm::vec2(-0.203703716, -0.240740761), 83563}, //
{glm::vec2(-0.240740746, -0.240740761), 83564}, //
{glm::vec2(-0.240740746, -0.240740731), 13819}, //
{glm::vec2(-0.253086448, -0.253086448), 13816}, //
{glm::vec2(-0.253086448, -0.265432119), 83519}, //
{glm::vec2(-0.265432119, -0.265432119), 13817}, //
{glm::vec2(-0.277777791, -0.277777791), 13815}, //
{glm::vec2(-0.277777791, -0.388888896), 83485}, //
{glm::vec2(-0.388888896, -0.388888896), 13808}, //
{glm::vec2(-0.401234567, -0.401234567), 13814}, //
{glm::vec2(-0.401234567, -0.413580239), 83509}, //
{glm::vec2(-0.413580239, -0.413580239), 13813}, //
{glm::vec2(-0.42592594, -0.42592594), 13809}, //
{glm::vec2(-0.42592594, -0.462962955), 83504}, //
{glm::vec2(-0.462962955, -0.462962955), 13810}, //
{glm::vec2(-0.475308657, -0.475308657), 13811}, //
{glm::vec2(-0.475308657, -0.487654328), 83505}, //
{glm::vec2(-0.487654328, -0.487654328), 13812}, //
{glm::vec2(-0.5, -0.5), 4}, //
{glm::vec2(0.5, -0.5), 0}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.487654328), 82702}, //
{glm::vec2(0.475308657, -0.487654328), 82704}, //
{glm::vec2(0.475308657, -0.475308657), 82705}, //
{glm::vec2(0.487654328, -0.475308657), 82703}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.475308657), 82706}, //
{glm::vec2(0.450617284, -0.487654328), 82707}, //
{glm::vec2(0.438271612, -0.487654328), 82709}, //
{glm::vec2(0.438271612, -0.475308657), 82708}, //
});
polys.push_back({
{glm::vec2(0.462962955, -0.462962955), 82710}, //
{glm::vec2(0.42592591, -0.462962955), 82723}, //
{glm::vec2(0.42592591, -0.42592591), 82735}, //
{glm::vec2(0.462962955, -0.42592591), 82714}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.450617284), 82711}, //
{glm::vec2(0.475308657, -0.450617284), 82713}, //
{glm::vec2(0.475308657, -0.438271612), 82715}, //
{glm::vec2(0.487654328, -0.438271612), 82712}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.475308657), 82716}, //
{glm::vec2(0.413580239, -0.487654328), 82717}, //
{glm::vec2(0.401234567, -0.487654328), 82718}, //
{glm::vec2(0.401234567, -0.475308657), 82719}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.475308657), 82720}, //
{glm::vec2(0.376543224, -0.487654328), 82721}, //
{glm::vec2(0.364197552, -0.487654328), 82756}, //
{glm::vec2(0.364197552, -0.475308657), 82722}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.438271612), 82724}, //
{glm::vec2(0.413580239, -0.450617284), 82725}, //
{glm::vec2(0.401234567, -0.450617284), 82726}, //
{glm::vec2(0.401234567, -0.438271612), 82727}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.450617284), 82728}, //
{glm::vec2(0.364197552, -0.450617284), 82762}, //
{glm::vec2(0.364197552, -0.438271612), 82730}, //
{glm::vec2(0.376543224, -0.438271612), 82729}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.413580239), 82731}, //
{glm::vec2(0.475308657, -0.413580239), 82733}, //
{glm::vec2(0.475308657, -0.401234567), 82734}, //
{glm::vec2(0.487654328, -0.401234567), 82732}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.413580239), 82736}, //
{glm::vec2(0.438271612, -0.413580239), 82739}, //
{glm::vec2(0.438271612, -0.401234567), 82738}, //
{glm::vec2(0.450617284, -0.401234567), 82737}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.376543224), 82740}, //
{glm::vec2(0.475308657, -0.376543224), 82742}, //
{glm::vec2(0.475308657, -0.364197552), 82799}, //
{glm::vec2(0.487654328, -0.364197552), 82741}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.376543224), 82743}, //
{glm::vec2(0.438271612, -0.376543224), 82745}, //
{glm::vec2(0.438271612, -0.364197552), 82801}, //
{glm::vec2(0.450617284, -0.364197552), 82744}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.413580239), 82746}, //
{glm::vec2(0.401234567, -0.413580239), 82748}, //
{glm::vec2(0.401234567, -0.401234567), 82749}, //
{glm::vec2(0.413580239, -0.401234567), 82747}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.413580239), 82750}, //
{glm::vec2(0.364197552, -0.413580239), 82781}, //
{glm::vec2(0.364197552, -0.401234567), 82752}, //
{glm::vec2(0.376543224, -0.401234567), 82751}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.364197552), 82753}, //
{glm::vec2(0.413580239, -0.376543224), 82754}, //
{glm::vec2(0.401234567, -0.376543224), 82755}, //
{glm::vec2(0.401234567, -0.364197552), 82808}, //
});
polys.push_back({
{glm::vec2(0.339506179, -0.475308657), 82757}, //
{glm::vec2(0.339506179, -0.487654328), 82758}, //
{glm::vec2(0.327160507, -0.487654328), 82759}, //
{glm::vec2(0.327160507, -0.475308657), 82760}, //
});
polys.push_back({
{glm::vec2(0.351851851, -0.462962955), 82761}, //
{glm::vec2(0.314814806, -0.462962955), 82764}, //
{glm::vec2(0.314814806, -0.42592591), 82783}, //
{glm::vec2(0.351851851, -0.42592591), 82763}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.475308657), 82765}, //
{glm::vec2(0.302469134, -0.487654328), 82766}, //
{glm::vec2(0.290123463, -0.487654328), 82767}, //
{glm::vec2(0.290123463, -0.475308657), 82768}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.487654328), 82769}, //
{glm::vec2(0.253086448, -0.487654328), 82772}, //
{glm::vec2(0.253086448, -0.475308657), 82771}, //
{glm::vec2(0.265432119, -0.475308657), 82770}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.450617284), 82773}, //
{glm::vec2(0.290123463, -0.450617284), 82775}, //
{glm::vec2(0.290123463, -0.438271612), 82776}, //
{glm::vec2(0.302469134, -0.438271612), 82774}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.450617284), 82777}, //
{glm::vec2(0.253086448, -0.450617284), 82779}, //
{glm::vec2(0.253086448, -0.438271612), 82780}, //
{glm::vec2(0.265432119, -0.438271612), 82778}, //
});
polys.push_back({
{glm::vec2(0.339506179, -0.401234567), 82782}, //
{glm::vec2(0.339506179, -0.413580239), 82784}, //
{glm::vec2(0.327160507, -0.413580239), 82785}, //
{glm::vec2(0.327160507, -0.401234567), 82786}, //
});
polys.push_back({
{glm::vec2(0.388888896, -0.388888896), 82787}, //
{glm::vec2(0.277777791, -0.388888896), 82844}, //
{glm::vec2(0.277777791, -0.277777791), 82848}, //
{glm::vec2(0.388888896, -0.277777791), 82814}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.413580239), 82788}, //
{glm::vec2(0.290123463, -0.413580239), 82790}, //
{glm::vec2(0.290123463, -0.401234567), 82791}, //
{glm::vec2(0.302469134, -0.401234567), 82789}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.413580239), 82792}, //
{glm::vec2(0.253086448, -0.413580239), 82795}, //
{glm::vec2(0.253086448, -0.401234567), 82794}, //
{glm::vec2(0.265432119, -0.401234567), 82793}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.376543224), 82796}, //
{glm::vec2(0.253086448, -0.376543224), 82798}, //
{glm::vec2(0.253086448, -0.364197552), 82842}, //
{glm::vec2(0.265432119, -0.364197552), 82797}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.339506179), 82800}, //
{glm::vec2(0.475308657, -0.339506179), 82804}, //
{glm::vec2(0.475308657, -0.327160507), 82805}, //
{glm::vec2(0.487654328, -0.327160507), 82803}, //
});
polys.push_back({
{glm::vec2(0.462962955, -0.351851851), 82802}, //
{glm::vec2(0.42592591, -0.351851851), 82810}, //
{glm::vec2(0.42592591, -0.314814806), 82807}, //
{glm::vec2(0.462962955, -0.314814806), 82806}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.339506179), 82809}, //
{glm::vec2(0.401234567, -0.339506179), 82812}, //
{glm::vec2(0.401234567, -0.327160507), 82813}, //
{glm::vec2(0.413580239, -0.327160507), 82811}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.302469134), 82815}, //
{glm::vec2(0.475308657, -0.302469134), 82818}, //
{glm::vec2(0.475308657, -0.290123463), 82817}, //
{glm::vec2(0.487654328, -0.290123463), 82816}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.302469134), 82819}, //
{glm::vec2(0.438271612, -0.302469134), 82822}, //
{glm::vec2(0.438271612, -0.290123463), 82821}, //
{glm::vec2(0.450617284, -0.290123463), 82820}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.265432119), 82823}, //
{glm::vec2(0.475308657, -0.265432119), 82825}, //
{glm::vec2(0.475308657, -0.253086448), 82826}, //
{glm::vec2(0.487654328, -0.253086448), 82824}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.253086448), 82827}, //
{glm::vec2(0.450617284, -0.265432119), 82828}, //
{glm::vec2(0.438271612, -0.265432119), 82829}, //
{glm::vec2(0.438271612, -0.253086448), 82830}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.290123463), 82831}, //
{glm::vec2(0.413580239, -0.302469134), 82832}, //
{glm::vec2(0.401234567, -0.302469134), 82834}, //
{glm::vec2(0.401234567, -0.290123463), 82833}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.253086448), 82835}, //
{glm::vec2(0.413580239, -0.265432119), 82836}, //
{glm::vec2(0.401234567, -0.265432119), 82837}, //
{glm::vec2(0.401234567, -0.253086448), 82838}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.253086448), 82839}, //
{glm::vec2(0.376543224, -0.265432119), 82840}, //
{glm::vec2(0.364197552, -0.265432119), 82849}, //
{glm::vec2(0.364197552, -0.253086448), 82841}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.339506179), 82843}, //
{glm::vec2(0.253086448, -0.339506179), 82847}, //
{glm::vec2(0.253086448, -0.327160507), 82846}, //
{glm::vec2(0.265432119, -0.327160507), 82845}, //
});
polys.push_back({
{glm::vec2(0.339506179, -0.253086448), 82850}, //
{glm::vec2(0.339506179, -0.265432119), 82851}, //
{glm::vec2(0.327160507, -0.265432119), 82852}, //
{glm::vec2(0.327160507, -0.253086448), 82853}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.302469134), 82854}, //
{glm::vec2(0.253086448, -0.302469134), 82857}, //
{glm::vec2(0.253086448, -0.290123463), 82856}, //
{glm::vec2(0.265432119, -0.290123463), 82855}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.253086448), 82858}, //
{glm::vec2(0.302469134, -0.265432119), 82859}, //
{glm::vec2(0.290123463, -0.265432119), 82860}, //
{glm::vec2(0.290123463, -0.253086448), 82861}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.265432119), 82862}, //
{glm::vec2(0.253086448, -0.265432119), 82864}, //
{glm::vec2(0.253086448, -0.253086448), 82865}, //
{glm::vec2(0.265432119, -0.253086448), 82863}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.487654328), 82866}, //
{glm::vec2(0.216049403, -0.487654328), 82868}, //
{glm::vec2(0.216049403, -0.475308657), 82869}, //
{glm::vec2(0.228395075, -0.475308657), 82867}, //
});
polys.push_back({
{glm::vec2(0.240740761, -0.462962955), 82870}, //
{glm::vec2(0.203703731, -0.462962955), 82875}, //
{glm::vec2(0.203703731, -0.42592591), 82890}, //
{glm::vec2(0.240740761, -0.42592591), 82874}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.475308657), 82871}, //
{glm::vec2(0.19135803, -0.487654328), 82872}, //
{glm::vec2(0.179012358, -0.487654328), 82879}, //
{glm::vec2(0.179012358, -0.475308657), 82873}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.450617284), 82876}, //
{glm::vec2(0.179012358, -0.450617284), 82884}, //
{glm::vec2(0.179012358, -0.438271612), 82878}, //
{glm::vec2(0.19135803, -0.438271612), 82877}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.475308657), 82880}, //
{glm::vec2(0.154320985, -0.487654328), 82881}, //
{glm::vec2(0.141975313, -0.487654328), 82882}, //
{glm::vec2(0.141975313, -0.475308657), 82883}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.438271612), 82885}, //
{glm::vec2(0.154320985, -0.450617284), 82886}, //
{glm::vec2(0.141975313, -0.450617284), 82887}, //
{glm::vec2(0.141975313, -0.438271612), 82889}, //
});
polys.push_back({
{glm::vec2(0.129629627, -0.42592591), 82888}, //
{glm::vec2(0.129629627, -0.462962955), 82916}, //
{glm::vec2(0.0925925896, -0.462962955), 82921}, //
{glm::vec2(0.0925925896, -0.42592591), 82936}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.413580239), 82891}, //
{glm::vec2(0.216049403, -0.413580239), 82893}, //
{glm::vec2(0.216049403, -0.401234567), 82894}, //
{glm::vec2(0.228395075, -0.401234567), 82892}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.413580239), 82895}, //
{glm::vec2(0.179012358, -0.413580239), 82903}, //
{glm::vec2(0.179012358, -0.401234567), 82897}, //
{glm::vec2(0.19135803, -0.401234567), 82896}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.376543224), 82898}, //
{glm::vec2(0.216049403, -0.376543224), 82900}, //
{glm::vec2(0.216049403, -0.364197552), 82956}, //
{glm::vec2(0.228395075, -0.364197552), 82899}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.376543224), 82901}, //
{glm::vec2(0.179012358, -0.376543224), 82908}, //
{glm::vec2(0.179012358, -0.364197552), 82958}, //
{glm::vec2(0.19135803, -0.364197552), 82902}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.401234567), 82904}, //
{glm::vec2(0.154320985, -0.413580239), 82905}, //
{glm::vec2(0.141975313, -0.413580239), 82906}, //
{glm::vec2(0.141975313, -0.401234567), 82907}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.364197552), 82909}, //
{glm::vec2(0.154320985, -0.376543224), 82910}, //
{glm::vec2(0.141975313, -0.376543224), 82911}, //
{glm::vec2(0.141975313, -0.364197552), 82965}, //
});
polys.push_back({
{glm::vec2(0.117283955, -0.475308657), 82912}, //
{glm::vec2(0.117283955, -0.487654328), 82913}, //
{glm::vec2(0.104938276, -0.487654328), 82915}, //
{glm::vec2(0.104938276, -0.475308657), 82914}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.475308657), 82917}, //
{glm::vec2(0.0802469105, -0.487654328), 82918}, //
{glm::vec2(0.0679012313, -0.487654328), 82919}, //
{glm::vec2(0.0679012313, -0.475308657), 82920}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.438271612), 82922}, //
{glm::vec2(0.0802469105, -0.450617284), 82923}, //
{glm::vec2(0.0679012313, -0.450617284), 82924}, //
{glm::vec2(0.0679012313, -0.438271612), 82925}, //
});
polys.push_back({
{glm::vec2(0.0432098769, -0.475308657), 82926}, //
{glm::vec2(0.0432098769, -0.487654328), 82927}, //
{glm::vec2(0.0308641978, -0.487654328), 82928}, //
{glm::vec2(0.0308641978, -0.475308657), 82929}, //
});
polys.push_back({
{glm::vec2(0.00617283955, -0.475308657), 82930}, //
{glm::vec2(0.00617283955, -0.487654328), 83272}, //
{glm::vec2(-0.00617283955, -0.487654328), 83273}, //
{glm::vec2(-0.00617283955, -0.475308657), 83274}, //
});
polys.push_back({
{glm::vec2(0.0432098769, -0.450617284), 82931}, //
{glm::vec2(0.0308641978, -0.450617284), 82933}, //
{glm::vec2(0.0308641978, -0.438271612), 82934}, //
{glm::vec2(0.0432098769, -0.438271612), 82932}, //
});
polys.push_back({
{glm::vec2(0.0185185187, -0.42592591), 82935}, //
{glm::vec2(0.0185185187, -0.462962955), 83275}, //
{glm::vec2(-0.0185185187, -0.462962955), 83280}, //
{glm::vec2(-0.0185185187, -0.42592591), 83299}, //
});
polys.push_back({
{glm::vec2(0.117283955, -0.413580239), 82937}, //
{glm::vec2(0.104938276, -0.413580239), 82940}, //
{glm::vec2(0.104938276, -0.401234567), 82939}, //
{glm::vec2(0.117283955, -0.401234567), 82938}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.413580239), 82941}, //
{glm::vec2(0.0679012313, -0.413580239), 82943}, //
{glm::vec2(0.0679012313, -0.401234567), 82944}, //
{glm::vec2(0.0802469105, -0.401234567), 82942}, //
});
polys.push_back({
{glm::vec2(0.117283955, -0.376543224), 82945}, //
{glm::vec2(0.104938276, -0.376543224), 82947}, //
{glm::vec2(0.104938276, -0.364197552), 82996}, //
{glm::vec2(0.117283955, -0.364197552), 82946}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.364197552), 82948}, //
{glm::vec2(0.0802469105, -0.376543224), 82949}, //
{glm::vec2(0.0679012313, -0.376543224), 82950}, //
{glm::vec2(0.0679012313, -0.364197552), 82998}, //
});
polys.push_back({
{glm::vec2(0.0432098769, -0.413580239), 82951}, //
{glm::vec2(0.0308641978, -0.413580239), 82953}, //
{glm::vec2(0.0308641978, -0.401234567), 82954}, //
{glm::vec2(0.0432098769, -0.401234567), 82952}, //
});
polys.push_back({
{glm::vec2(0.00617283955, -0.401234567), 82955}, //
{glm::vec2(0.00617283955, -0.413580239), 83300}, //
{glm::vec2(-0.00617283955, -0.413580239), 83301}, //
{glm::vec2(-0.00617283955, -0.401234567), 83302}, //
});
polys.push_back({
{glm::vec2(0.240740761, -0.351851851), 82957}, //
{glm::vec2(0.203703731, -0.351851851), 82962}, //
{glm::vec2(0.203703731, -0.314814806), 82961}, //
{glm::vec2(0.240740761, -0.314814806), 82960}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.339506179), 82959}, //
{glm::vec2(0.179012358, -0.339506179), 82967}, //
{glm::vec2(0.179012358, -0.327160507), 82964}, //
{glm::vec2(0.19135803, -0.327160507), 82963}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.339506179), 82966}, //
{glm::vec2(0.141975313, -0.339506179), 82969}, //
{glm::vec2(0.141975313, -0.327160507), 82970}, //
{glm::vec2(0.154320985, -0.327160507), 82968}, //
});
polys.push_back({
{glm::vec2(0.129629627, -0.314814806), 82971}, //
{glm::vec2(0.129629627, -0.351851851), 82997}, //
{glm::vec2(0.0925925896, -0.351851851), 83000}, //
{glm::vec2(0.0925925896, -0.314814806), 83001}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.302469134), 82972}, //
{glm::vec2(0.216049403, -0.302469134), 82975}, //
{glm::vec2(0.216049403, -0.290123463), 82974}, //
{glm::vec2(0.228395075, -0.290123463), 82973}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.302469134), 82976}, //
{glm::vec2(0.179012358, -0.302469134), 82986}, //
{glm::vec2(0.179012358, -0.290123463), 82978}, //
{glm::vec2(0.19135803, -0.290123463), 82977}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.265432119), 82979}, //
{glm::vec2(0.216049403, -0.265432119), 82981}, //
{glm::vec2(0.216049403, -0.253086448), 82982}, //
{glm::vec2(0.228395075, -0.253086448), 82980}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.253086448), 82983}, //
{glm::vec2(0.19135803, -0.265432119), 82984}, //
{glm::vec2(0.179012358, -0.265432119), 82991}, //
{glm::vec2(0.179012358, -0.253086448), 82985}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.290123463), 82987}, //
{glm::vec2(0.154320985, -0.302469134), 82988}, //
{glm::vec2(0.141975313, -0.302469134), 82990}, //
{glm::vec2(0.141975313, -0.290123463), 82989}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.253086448), 82992}, //
{glm::vec2(0.154320985, -0.265432119), 82993}, //
{glm::vec2(0.141975313, -0.265432119), 82994}, //
{glm::vec2(0.141975313, -0.253086448), 82995}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.339506179), 82999}, //
{glm::vec2(0.0679012313, -0.339506179), 83003}, //
{glm::vec2(0.0679012313, -0.327160507), 83004}, //
{glm::vec2(0.0802469105, -0.327160507), 83002}, //
});
polys.push_back({
{glm::vec2(0.055555556, -0.277777791), 83005}, //
{glm::vec2(0.055555556, -0.388888896), 83307}, //
{glm::vec2(-0.055555556, -0.388888896), 83369}, //
{glm::vec2(-0.055555556, -0.277777791), 83379}, //
});
polys.push_back({
{glm::vec2(0.117283955, -0.302469134), 83006}, //
{glm::vec2(0.104938276, -0.302469134), 83009}, //
{glm::vec2(0.104938276, -0.290123463), 83008}, //
{glm::vec2(0.117283955, -0.290123463), 83007}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.290123463), 83010}, //
{glm::vec2(0.0802469105, -0.302469134), 83011}, //
{glm::vec2(0.0679012313, -0.302469134), 83013}, //
{glm::vec2(0.0679012313, -0.290123463), 83012}, //
});
polys.push_back({
{glm::vec2(0.117283955, -0.253086448), 83014}, //
{glm::vec2(0.117283955, -0.265432119), 83015}, //
{glm::vec2(0.104938276, -0.265432119), 83016}, //
{glm::vec2(0.104938276, -0.253086448), 83017}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.253086448), 83018}, //
{glm::vec2(0.0802469105, -0.265432119), 83019}, //
{glm::vec2(0.0679012313, -0.265432119), 83020}, //
{glm::vec2(0.0679012313, -0.253086448), 83021}, //
});
polys.push_back({
{glm::vec2(0.0432098769, -0.253086448), 83022}, //
{glm::vec2(0.0432098769, -0.265432119), 83023}, //
{glm::vec2(0.0308641978, -0.265432119), 83024}, //
{glm::vec2(0.0308641978, -0.253086448), 83025}, //
});
polys.push_back({
{glm::vec2(0.00617283955, -0.253086448), 83026}, //
{glm::vec2(0.00617283955, -0.265432119), 83380}, //
{glm::vec2(-0.00617283955, -0.265432119), 83381}, //
{glm::vec2(-0.00617283955, -0.253086448), 83382}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.228395075), 83027}, //
{glm::vec2(0.475308657, -0.228395075), 83029}, //
{glm::vec2(0.475308657, -0.216049403), 83030}, //
{glm::vec2(0.487654328, -0.216049403), 83028}, //
});
polys.push_back({
{glm::vec2(0.462962955, -0.203703731), 83031}, //
{glm::vec2(0.462962955, -0.240740761), 83032}, //
{glm::vec2(0.42592591, -0.240740761), 83040}, //
{glm::vec2(0.42592591, -0.203703731), 83036}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.19135803), 83033}, //
{glm::vec2(0.475308657, -0.19135803), 83035}, //
{glm::vec2(0.475308657, -0.179012358), 83053}, //
{glm::vec2(0.487654328, -0.179012358), 83034}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.19135803), 83037}, //
{glm::vec2(0.438271612, -0.19135803), 83039}, //
{glm::vec2(0.438271612, -0.179012358), 83055}, //
{glm::vec2(0.450617284, -0.179012358), 83038}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.216049403), 83041}, //
{glm::vec2(0.413580239, -0.228395075), 83042}, //
{glm::vec2(0.401234567, -0.228395075), 83043}, //
{glm::vec2(0.401234567, -0.216049403), 83044}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.216049403), 83045}, //
{glm::vec2(0.376543224, -0.228395075), 83046}, //
{glm::vec2(0.364197552, -0.228395075), 83073}, //
{glm::vec2(0.364197552, -0.216049403), 83047}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.179012358), 83048}, //
{glm::vec2(0.413580239, -0.19135803), 83049}, //
{glm::vec2(0.401234567, -0.19135803), 83050}, //
{glm::vec2(0.401234567, -0.179012358), 83064}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.19135803), 83051}, //
{glm::vec2(0.364197552, -0.19135803), 83077}, //
{glm::vec2(0.364197552, -0.179012358), 83066}, //
{glm::vec2(0.376543224, -0.179012358), 83052}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.154320985), 83054}, //
{glm::vec2(0.475308657, -0.154320985), 83058}, //
{glm::vec2(0.475308657, -0.141975313), 83059}, //
{glm::vec2(0.487654328, -0.141975313), 83057}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.154320985), 83056}, //
{glm::vec2(0.438271612, -0.154320985), 83062}, //
{glm::vec2(0.438271612, -0.141975313), 83061}, //
{glm::vec2(0.450617284, -0.141975313), 83060}, //
});
polys.push_back({
{glm::vec2(0.462962955, -0.129629627), 83063}, //
{glm::vec2(0.42592591, -0.129629627), 83127}, //
{glm::vec2(0.42592591, -0.0925925896), 83118}, //
{glm::vec2(0.462962955, -0.0925925896), 83116}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.154320985), 83065}, //
{glm::vec2(0.401234567, -0.154320985), 83069}, //
{glm::vec2(0.401234567, -0.141975313), 83070}, //
{glm::vec2(0.413580239, -0.141975313), 83068}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.154320985), 83067}, //
{glm::vec2(0.364197552, -0.154320985), 83098}, //
{glm::vec2(0.364197552, -0.141975313), 83072}, //
{glm::vec2(0.376543224, -0.141975313), 83071}, //
});
polys.push_back({
{glm::vec2(0.351851851, -0.203703731), 83074}, //
{glm::vec2(0.351851851, -0.240740761), 83075}, //
{glm::vec2(0.314814806, -0.240740761), 83076}, //
{glm::vec2(0.314814806, -0.203703731), 83079}, //
});
polys.push_back({
{glm::vec2(0.339506179, -0.179012358), 83078}, //
{glm::vec2(0.339506179, -0.19135803), 83080}, //
{glm::vec2(0.327160507, -0.19135803), 83081}, //
{glm::vec2(0.327160507, -0.179012358), 83096}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.216049403), 83082}, //
{glm::vec2(0.302469134, -0.228395075), 83083}, //
{glm::vec2(0.290123463, -0.228395075), 83084}, //
{glm::vec2(0.290123463, -0.216049403), 83085}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.228395075), 83086}, //
{glm::vec2(0.253086448, -0.228395075), 83089}, //
{glm::vec2(0.253086448, -0.216049403), 83088}, //
{glm::vec2(0.265432119, -0.216049403), 83087}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.19135803), 83090}, //
{glm::vec2(0.290123463, -0.19135803), 83092}, //
{glm::vec2(0.290123463, -0.179012358), 83103}, //
{glm::vec2(0.302469134, -0.179012358), 83091}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.19135803), 83093}, //
{glm::vec2(0.253086448, -0.19135803), 83095}, //
{glm::vec2(0.253086448, -0.179012358), 83105}, //
{glm::vec2(0.265432119, -0.179012358), 83094}, //
});
polys.push_back({
{glm::vec2(0.339506179, -0.154320985), 83097}, //
{glm::vec2(0.327160507, -0.154320985), 83100}, //
{glm::vec2(0.327160507, -0.141975313), 83101}, //
{glm::vec2(0.339506179, -0.141975313), 83099}, //
});
polys.push_back({
{glm::vec2(0.351851851, -0.129629627), 83102}, //
{glm::vec2(0.314814806, -0.129629627), 83159}, //
{glm::vec2(0.314814806, -0.0925925896), 83160}, //
{glm::vec2(0.351851851, -0.0925925896), 83158}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.154320985), 83104}, //
{glm::vec2(0.290123463, -0.154320985), 83108}, //
{glm::vec2(0.290123463, -0.141975313), 83109}, //
{glm::vec2(0.302469134, -0.141975313), 83107}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.154320985), 83106}, //
{glm::vec2(0.253086448, -0.154320985), 83112}, //
{glm::vec2(0.253086448, -0.141975313), 83111}, //
{glm::vec2(0.265432119, -0.141975313), 83110}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.117283955), 83113}, //
{glm::vec2(0.475308657, -0.117283955), 83115}, //
{glm::vec2(0.475308657, -0.104938276), 83117}, //
{glm::vec2(0.487654328, -0.104938276), 83114}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.0802469105), 83119}, //
{glm::vec2(0.475308657, -0.0802469105), 83121}, //
{glm::vec2(0.475308657, -0.0679012313), 83122}, //
{glm::vec2(0.487654328, -0.0679012313), 83120}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.0802469105), 83123}, //
{glm::vec2(0.438271612, -0.0802469105), 83126}, //
{glm::vec2(0.438271612, -0.0679012313), 83125}, //
{glm::vec2(0.450617284, -0.0679012313), 83124}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.104938276), 83128}, //
{glm::vec2(0.413580239, -0.117283955), 83129}, //
{glm::vec2(0.401234567, -0.117283955), 83130}, //
{glm::vec2(0.401234567, -0.104938276), 83131}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.117283955), 83132}, //
{glm::vec2(0.364197552, -0.117283955), 83157}, //
{glm::vec2(0.364197552, -0.104938276), 83134}, //
{glm::vec2(0.376543224, -0.104938276), 83133}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.0802469105), 83135}, //
{glm::vec2(0.401234567, -0.0802469105), 83137}, //
{glm::vec2(0.401234567, -0.0679012313), 83138}, //
{glm::vec2(0.413580239, -0.0679012313), 83136}, //
});
polys.push_back({
{glm::vec2(0.376543224, -0.0802469105), 83139}, //
{glm::vec2(0.364197552, -0.0802469105), 83161}, //
{glm::vec2(0.364197552, -0.0679012313), 83141}, //
{glm::vec2(0.376543224, -0.0679012313), 83140}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.0432098769), 83142}, //
{glm::vec2(0.475308657, -0.0432098769), 83145}, //
{glm::vec2(0.475308657, -0.0308641978), 83144}, //
{glm::vec2(0.487654328, -0.0308641978), 83143}, //
});
polys.push_back({
{glm::vec2(0.450617284, -0.0432098769), 83146}, //
{glm::vec2(0.438271612, -0.0432098769), 83149}, //
{glm::vec2(0.438271612, -0.0308641978), 83148}, //
{glm::vec2(0.450617284, -0.0308641978), 83147}, //
});
polys.push_back({
{glm::vec2(0.487654328, -0.00617283955), 83150}, //
{glm::vec2(0.475308657, -0.00617283955), 83569}, //
{glm::vec2(0.475308657, 0.00617283955), 83568}, //
{glm::vec2(0.487654328, 0.00617283955), 83567}, //
});
polys.push_back({
{glm::vec2(0.462962955, -0.0185185187), 83151}, //
{glm::vec2(0.42592591, -0.0185185187), 83580}, //
{glm::vec2(0.42592591, 0.0185185187), 83571}, //
{glm::vec2(0.462962955, 0.0185185187), 83570}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.0308641978), 83152}, //
{glm::vec2(0.413580239, -0.0432098769), 83153}, //
{glm::vec2(0.401234567, -0.0432098769), 83155}, //
{glm::vec2(0.401234567, -0.0308641978), 83154}, //
});
polys.push_back({
{glm::vec2(0.413580239, -0.00617283955), 83156}, //
{glm::vec2(0.401234567, -0.00617283955), 83583}, //
{glm::vec2(0.401234567, 0.00617283955), 83582}, //
{glm::vec2(0.413580239, 0.00617283955), 83581}, //
});
polys.push_back({
{glm::vec2(0.339506179, -0.0679012313), 83162}, //
{glm::vec2(0.339506179, -0.0802469105), 83163}, //
{glm::vec2(0.327160507, -0.0802469105), 83164}, //
{glm::vec2(0.327160507, -0.0679012313), 83165}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.117283955), 83166}, //
{glm::vec2(0.290123463, -0.117283955), 83168}, //
{glm::vec2(0.290123463, -0.104938276), 83169}, //
{glm::vec2(0.302469134, -0.104938276), 83167}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.117283955), 83170}, //
{glm::vec2(0.253086448, -0.117283955), 83172}, //
{glm::vec2(0.253086448, -0.104938276), 83173}, //
{glm::vec2(0.265432119, -0.104938276), 83171}, //
});
polys.push_back({
{glm::vec2(0.302469134, -0.0802469105), 83174}, //
{glm::vec2(0.290123463, -0.0802469105), 83176}, //
{glm::vec2(0.290123463, -0.0679012313), 83177}, //
{glm::vec2(0.302469134, -0.0679012313), 83175}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.0802469105), 83178}, //
{glm::vec2(0.253086448, -0.0802469105), 83181}, //
{glm::vec2(0.253086448, -0.0679012313), 83180}, //
{glm::vec2(0.265432119, -0.0679012313), 83179}, //
});
polys.push_back({
{glm::vec2(0.388888896, -0.055555556), 83182}, //
{glm::vec2(0.277777791, -0.055555556), 83619}, //
{glm::vec2(0.277777791, 0.055555556), 83618}, //
{glm::vec2(0.388888896, 0.055555556), 83584}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.0432098769), 83183}, //
{glm::vec2(0.253086448, -0.0432098769), 83186}, //
{glm::vec2(0.253086448, -0.0308641978), 83185}, //
{glm::vec2(0.265432119, -0.0308641978), 83184}, //
});
polys.push_back({
{glm::vec2(0.265432119, -0.00617283955), 83187}, //
{glm::vec2(0.253086448, -0.00617283955), 83622}, //
{glm::vec2(0.253086448, 0.00617283955), 83621}, //
{glm::vec2(0.265432119, 0.00617283955), 83620}, //
});
polys.push_back({
{glm::vec2(0.240740761, -0.240740761), 83188}, //
{glm::vec2(0.203703731, -0.240740761), 83190}, //
{glm::vec2(0.203703731, -0.203703731), 83194}, //
{glm::vec2(0.240740761, -0.203703731), 83189}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.216049403), 83191}, //
{glm::vec2(0.19135803, -0.228395075), 83192}, //
{glm::vec2(0.179012358, -0.228395075), 83200}, //
{glm::vec2(0.179012358, -0.216049403), 83193}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.19135803), 83195}, //
{glm::vec2(0.216049403, -0.19135803), 83197}, //
{glm::vec2(0.216049403, -0.179012358), 83210}, //
{glm::vec2(0.228395075, -0.179012358), 83196}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.19135803), 83198}, //
{glm::vec2(0.179012358, -0.19135803), 83206}, //
{glm::vec2(0.179012358, -0.179012358), 83212}, //
{glm::vec2(0.19135803, -0.179012358), 83199}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.216049403), 83201}, //
{glm::vec2(0.154320985, -0.228395075), 83202}, //
{glm::vec2(0.141975313, -0.228395075), 83203}, //
{glm::vec2(0.141975313, -0.216049403), 83204}, //
});
polys.push_back({
{glm::vec2(0.129629627, -0.203703731), 83205}, //
{glm::vec2(0.129629627, -0.240740761), 83222}, //
{glm::vec2(0.0925925896, -0.240740761), 83223}, //
{glm::vec2(0.0925925896, -0.203703731), 83228}, //
});
polys.push_back({
{glm::vec2(0.154320985, -0.179012358), 83207}, //
{glm::vec2(0.154320985, -0.19135803), 83208}, //
{glm::vec2(0.141975313, -0.19135803), 83209}, //
{glm::vec2(0.141975313, -0.179012358), 83220}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.154320985), 83211}, //
{glm::vec2(0.216049403, -0.154320985), 83215}, //
{glm::vec2(0.216049403, -0.141975313), 83216}, //
{glm::vec2(0.228395075, -0.141975313), 83214}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.154320985), 83213}, //
{glm::vec2(0.179012358, -0.154320985), 83221}, //
{glm::vec2(0.179012358, -0.141975313), 83219}, //
{glm::vec2(0.19135803, -0.141975313), 83218}, //
});
polys.push_back({
{glm::vec2(0.240740761, -0.129629627), 83217}, //
{glm::vec2(0.203703731, -0.129629627), 83249}, //
{glm::vec2(0.203703731, -0.0925925896), 83248}, //
{glm::vec2(0.240740761, -0.0925925896), 83247}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.216049403), 83224}, //
{glm::vec2(0.0802469105, -0.228395075), 83225}, //
{glm::vec2(0.0679012313, -0.228395075), 83226}, //
{glm::vec2(0.0679012313, -0.216049403), 83227}, //
});
polys.push_back({
{glm::vec2(0.117283955, -0.19135803), 83229}, //
{glm::vec2(0.104938276, -0.19135803), 83231}, //
{glm::vec2(0.104938276, -0.179012358), 83244}, //
{glm::vec2(0.117283955, -0.179012358), 83230}, //
});
polys.push_back({
{glm::vec2(0.0802469105, -0.179012358), 83232}, //
{glm::vec2(0.0802469105, -0.19135803), 83233}, //
{glm::vec2(0.0679012313, -0.19135803), 83234}, //
{glm::vec2(0.0679012313, -0.179012358), 83245}, //
});
polys.push_back({
{glm::vec2(0.0432098769, -0.216049403), 83235}, //
{glm::vec2(0.0432098769, -0.228395075), 83236}, //
{glm::vec2(0.0308641978, -0.228395075), 83237}, //
{glm::vec2(0.0308641978, -0.216049403), 83238}, //
});
polys.push_back({
{glm::vec2(0.0185185187, -0.203703731), 83239}, //
{glm::vec2(0.0185185187, -0.240740761), 83520}, //
{glm::vec2(-0.0185185187, -0.240740761), 83521}, //
{glm::vec2(-0.0185185187, -0.203703731), 83526}, //
});
polys.push_back({
{glm::vec2(0.0432098769, -0.19135803), 83240}, //
{glm::vec2(0.0308641978, -0.19135803), 83242}, //
{glm::vec2(0.0308641978, -0.179012358), 83246}, //
{glm::vec2(0.0432098769, -0.179012358), 83241}, //
});
polys.push_back({
{glm::vec2(0.00617283955, -0.179012358), 83243}, //
{glm::vec2(0.00617283955, -0.19135803), 83527}, //
{glm::vec2(-0.00617283955, -0.19135803), 83528}, //
{glm::vec2(-0.00617283955, -0.179012358), 83545}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.117283955), 83250}, //
{glm::vec2(0.179012358, -0.117283955), 83260}, //
{glm::vec2(0.179012358, -0.104938276), 83252}, //
{glm::vec2(0.19135803, -0.104938276), 83251}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.0802469105), 83253}, //
{glm::vec2(0.216049403, -0.0802469105), 83255}, //
{glm::vec2(0.216049403, -0.0679012313), 83256}, //
{glm::vec2(0.228395075, -0.0679012313), 83254}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.0802469105), 83257}, //
{glm::vec2(0.179012358, -0.0802469105), 83261}, //
{glm::vec2(0.179012358, -0.0679012313), 83259}, //
{glm::vec2(0.19135803, -0.0679012313), 83258}, //
});
polys.push_back({
{glm::vec2(0.228395075, -0.0432098769), 83262}, //
{glm::vec2(0.216049403, -0.0432098769), 83265}, //
{glm::vec2(0.216049403, -0.0308641978), 83264}, //
{glm::vec2(0.228395075, -0.0308641978), 83263}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.0432098769), 83266}, //
{glm::vec2(0.179012358, -0.0432098769), 83271}, //
{glm::vec2(0.179012358, -0.0308641978), 83268}, //
{glm::vec2(0.19135803, -0.0308641978), 83267}, //
});
polys.push_back({
{glm::vec2(0.240740761, -0.0185185187), 83269}, //
{glm::vec2(0.203703731, -0.0185185187), 83740}, //
{glm::vec2(0.203703731, 0.0185185187), 83739}, //
{glm::vec2(0.240740761, 0.0185185187), 83738}, //
});
polys.push_back({
{glm::vec2(0.19135803, -0.00617283955), 83270}, //
{glm::vec2(0.179012358, -0.00617283955), 83750}, //
{glm::vec2(0.179012358, 0.00617283955), 83742}, //
{glm::vec2(0.19135803, 0.00617283955), 83741}, //
});
polys.push_back({
{glm::vec2(-0.0308641978, -0.487654328), 83276}, //
{glm::vec2(-0.0432098769, -0.487654328), 83278}, //
{glm::vec2(-0.0432098769, -0.475308657), 83279}, //
{glm::vec2(-0.0308641978, -0.475308657), 83277}, //
});
polys.push_back({
{glm::vec2(-0.0308641978, -0.450617284), 83281}, //
{glm::vec2(-0.0432098769, -0.450617284), 83283}, //
{glm::vec2(-0.0432098769, -0.438271612), 83284}, //
{glm::vec2(-0.0308641978, -0.438271612), 83282}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.475308657), 83285}, //
{glm::vec2(-0.0679012388, -0.487654328), 83286}, //
{glm::vec2(-0.0802469179, -0.487654328), 83288}, //
{glm::vec2(-0.0802469179, -0.475308657), 83287}, //
});
polys.push_back({
{glm::vec2(-0.104938269, -0.475308657), 83289}, //
{glm::vec2(-0.104938269, -0.487654328), 83290}, //
{glm::vec2(-0.117283948, -0.487654328), 83291}, //
{glm::vec2(-0.117283948, -0.475308657), 83292}, //
});
polys.push_back({
{glm::vec2(-0.092592597, -0.462962955), 83293}, //
{glm::vec2(-0.129629642, -0.462962955), 83328}, //
{glm::vec2(-0.129629642, -0.42592591), 83312}, //
{glm::vec2(-0.092592597, -0.42592591), 83298}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.450617284), 83294}, //
{glm::vec2(-0.0802469179, -0.450617284), 83296}, //
{glm::vec2(-0.0802469179, -0.438271612), 83297}, //
{glm::vec2(-0.0679012388, -0.438271612), 83295}, //
});
polys.push_back({
{glm::vec2(-0.0308641978, -0.413580239), 83303}, //
{glm::vec2(-0.0432098769, -0.413580239), 83305}, //
{glm::vec2(-0.0432098769, -0.401234567), 83306}, //
{glm::vec2(-0.0308641978, -0.401234567), 83304}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.413580239), 83308}, //
{glm::vec2(-0.0802469179, -0.413580239), 83311}, //
{glm::vec2(-0.0802469179, -0.401234567), 83310}, //
{glm::vec2(-0.0679012388, -0.401234567), 83309}, //
});
polys.push_back({
{glm::vec2(-0.104938269, -0.413580239), 83313}, //
{glm::vec2(-0.117283948, -0.413580239), 83315}, //
{glm::vec2(-0.117283948, -0.401234567), 83316}, //
{glm::vec2(-0.104938269, -0.401234567), 83314}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.376543224), 83317}, //
{glm::vec2(-0.0802469179, -0.376543224), 83319}, //
{glm::vec2(-0.0802469179, -0.364197552), 83370}, //
{glm::vec2(-0.0679012388, -0.364197552), 83318}, //
});
polys.push_back({
{glm::vec2(-0.104938269, -0.364197552), 83320}, //
{glm::vec2(-0.104938269, -0.376543224), 83321}, //
{glm::vec2(-0.117283948, -0.376543224), 83322}, //
{glm::vec2(-0.117283948, -0.364197552), 83372}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.475308657), 83323}, //
{glm::vec2(-0.141975313, -0.487654328), 83324}, //
{glm::vec2(-0.154320985, -0.487654328), 83326}, //
{glm::vec2(-0.154320985, -0.475308657), 83325}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.475308657), 83327}, //
{glm::vec2(-0.179012358, -0.487654328), 83334}, //
{glm::vec2(-0.19135803, -0.487654328), 83335}, //
{glm::vec2(-0.19135803, -0.475308657), 83336}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.450617284), 83329}, //
{glm::vec2(-0.154320985, -0.450617284), 83332}, //
{glm::vec2(-0.154320985, -0.438271612), 83331}, //
{glm::vec2(-0.141975313, -0.438271612), 83330}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.438271612), 83333}, //
{glm::vec2(-0.179012358, -0.450617284), 83342}, //
{glm::vec2(-0.19135803, -0.450617284), 83343}, //
{glm::vec2(-0.19135803, -0.438271612), 83345}, //
});
polys.push_back({
{glm::vec2(-0.216049403, -0.475308657), 83337}, //
{glm::vec2(-0.216049403, -0.487654328), 83338}, //
{glm::vec2(-0.228395075, -0.487654328), 83339}, //
{glm::vec2(-0.228395075, -0.475308657), 83340}, //
});
polys.push_back({
{glm::vec2(-0.203703716, -0.462962955), 83341}, //
{glm::vec2(-0.240740746, -0.462962955), 83346}, //
{glm::vec2(-0.240740746, -0.42592591), 83359}, //
{glm::vec2(-0.203703716, -0.42592591), 83344}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.413580239), 83347}, //
{glm::vec2(-0.154320985, -0.413580239), 83350}, //
{glm::vec2(-0.154320985, -0.401234567), 83349}, //
{glm::vec2(-0.141975313, -0.401234567), 83348}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.401234567), 83351}, //
{glm::vec2(-0.179012358, -0.413580239), 83356}, //
{glm::vec2(-0.19135803, -0.413580239), 83357}, //
{glm::vec2(-0.19135803, -0.401234567), 83358}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.376543224), 83352}, //
{glm::vec2(-0.154320985, -0.376543224), 83354}, //
{glm::vec2(-0.154320985, -0.364197552), 83403}, //
{glm::vec2(-0.141975313, -0.364197552), 83353}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.364197552), 83355}, //
{glm::vec2(-0.179012358, -0.376543224), 83364}, //
{glm::vec2(-0.19135803, -0.376543224), 83365}, //
{glm::vec2(-0.19135803, -0.364197552), 83410}, //
});
polys.push_back({
{glm::vec2(-0.216049403, -0.413580239), 83360}, //
{glm::vec2(-0.228395075, -0.413580239), 83362}, //
{glm::vec2(-0.228395075, -0.401234567), 83363}, //
{glm::vec2(-0.216049403, -0.401234567), 83361}, //
});
polys.push_back({
{glm::vec2(-0.216049403, -0.376543224), 83366}, //
{glm::vec2(-0.228395075, -0.376543224), 83368}, //
{glm::vec2(-0.228395075, -0.364197552), 83412}, //
{glm::vec2(-0.216049403, -0.364197552), 83367}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.339506179), 83371}, //
{glm::vec2(-0.0802469179, -0.339506179), 83376}, //
{glm::vec2(-0.0802469179, -0.327160507), 83375}, //
{glm::vec2(-0.0679012388, -0.327160507), 83374}, //
});
polys.push_back({
{glm::vec2(-0.092592597, -0.351851851), 83373}, //
{glm::vec2(-0.129629642, -0.351851851), 83405}, //
{glm::vec2(-0.129629642, -0.314814806), 83378}, //
{glm::vec2(-0.092592597, -0.314814806), 83377}, //
});
polys.push_back({
{glm::vec2(-0.0308641978, -0.265432119), 83383}, //
{glm::vec2(-0.0432098769, -0.265432119), 83385}, //
{glm::vec2(-0.0432098769, -0.253086448), 83386}, //
{glm::vec2(-0.0308641978, -0.253086448), 83384}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.302469134), 83387}, //
{glm::vec2(-0.0802469179, -0.302469134), 83390}, //
{glm::vec2(-0.0802469179, -0.290123463), 83389}, //
{glm::vec2(-0.0679012388, -0.290123463), 83388}, //
});
polys.push_back({
{glm::vec2(-0.104938269, -0.290123463), 83391}, //
{glm::vec2(-0.104938269, -0.302469134), 83392}, //
{glm::vec2(-0.117283948, -0.302469134), 83394}, //
{glm::vec2(-0.117283948, -0.290123463), 83393}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.253086448), 83395}, //
{glm::vec2(-0.0679012388, -0.265432119), 83396}, //
{glm::vec2(-0.0802469179, -0.265432119), 83397}, //
{glm::vec2(-0.0802469179, -0.253086448), 83398}, //
});
polys.push_back({
{glm::vec2(-0.104938269, -0.253086448), 83399}, //
{glm::vec2(-0.104938269, -0.265432119), 83400}, //
{glm::vec2(-0.117283948, -0.265432119), 83401}, //
{glm::vec2(-0.117283948, -0.253086448), 83402}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.339506179), 83404}, //
{glm::vec2(-0.154320985, -0.339506179), 83408}, //
{glm::vec2(-0.154320985, -0.327160507), 83407}, //
{glm::vec2(-0.141975313, -0.327160507), 83406}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.327160507), 83409}, //
{glm::vec2(-0.179012358, -0.339506179), 83411}, //
{glm::vec2(-0.19135803, -0.339506179), 83414}, //
{glm::vec2(-0.19135803, -0.327160507), 83415}, //
});
polys.push_back({
{glm::vec2(-0.203703716, -0.351851851), 83413}, //
{glm::vec2(-0.240740746, -0.351851851), 83417}, //
{glm::vec2(-0.240740746, -0.314814806), 83418}, //
{glm::vec2(-0.203703716, -0.314814806), 83416}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.302469134), 83419}, //
{glm::vec2(-0.154320985, -0.302469134), 83422}, //
{glm::vec2(-0.154320985, -0.290123463), 83421}, //
{glm::vec2(-0.141975313, -0.290123463), 83420}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.290123463), 83423}, //
{glm::vec2(-0.179012358, -0.302469134), 83429}, //
{glm::vec2(-0.19135803, -0.302469134), 83431}, //
{glm::vec2(-0.19135803, -0.290123463), 83430}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.253086448), 83424}, //
{glm::vec2(-0.141975313, -0.265432119), 83425}, //
{glm::vec2(-0.154320985, -0.265432119), 83427}, //
{glm::vec2(-0.154320985, -0.253086448), 83426}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.253086448), 83428}, //
{glm::vec2(-0.179012358, -0.265432119), 83436}, //
{glm::vec2(-0.19135803, -0.265432119), 83437}, //
{glm::vec2(-0.19135803, -0.253086448), 83438}, //
});
polys.push_back({
{glm::vec2(-0.216049403, -0.302469134), 83432}, //
{glm::vec2(-0.228395075, -0.302469134), 83434}, //
{glm::vec2(-0.228395075, -0.290123463), 83435}, //
{glm::vec2(-0.216049403, -0.290123463), 83433}, //
});
polys.push_back({
{glm::vec2(-0.216049403, -0.253086448), 83439}, //
{glm::vec2(-0.216049403, -0.265432119), 83440}, //
{glm::vec2(-0.228395075, -0.265432119), 83441}, //
{glm::vec2(-0.228395075, -0.253086448), 83442}, //
});
polys.push_back({
{glm::vec2(-0.253086448, -0.475308657), 83443}, //
{glm::vec2(-0.253086448, -0.487654328), 83444}, //
{glm::vec2(-0.265432119, -0.487654328), 83445}, //
{glm::vec2(-0.265432119, -0.475308657), 83446}, //
});
polys.push_back({
{glm::vec2(-0.290123463, -0.487654328), 83447}, //
{glm::vec2(-0.302469134, -0.487654328), 83449}, //
{glm::vec2(-0.302469134, -0.475308657), 83450}, //
{glm::vec2(-0.290123463, -0.475308657), 83448}, //
});
polys.push_back({
{glm::vec2(-0.253086448, -0.438271612), 83451}, //
{glm::vec2(-0.253086448, -0.450617284), 83452}, //
{glm::vec2(-0.265432119, -0.450617284), 83453}, //
{glm::vec2(-0.265432119, -0.438271612), 83454}, //
});
polys.push_back({
{glm::vec2(-0.290123463, -0.450617284), 83455}, //
{glm::vec2(-0.302469134, -0.450617284), 83457}, //
{glm::vec2(-0.302469134, -0.438271612), 83458}, //
{glm::vec2(-0.290123463, -0.438271612), 83456}, //
});
polys.push_back({
{glm::vec2(-0.327160507, -0.475308657), 83459}, //
{glm::vec2(-0.327160507, -0.487654328), 83460}, //
{glm::vec2(-0.339506179, -0.487654328), 83463}, //
{glm::vec2(-0.339506179, -0.475308657), 83461}, //
});
polys.push_back({
{glm::vec2(-0.314814836, -0.462962955), 83462}, //
{glm::vec2(-0.351851881, -0.462962955), 83466}, //
{glm::vec2(-0.351851881, -0.42592591), 83479}, //
{glm::vec2(-0.314814836, -0.42592591), 83465}, //
});
polys.push_back({
{glm::vec2(-0.364197552, -0.475308657), 83464}, //
{glm::vec2(-0.364197552, -0.487654328), 83486}, //
{glm::vec2(-0.376543224, -0.487654328), 83487}, //
{glm::vec2(-0.376543224, -0.475308657), 83488}, //
});
polys.push_back({
{glm::vec2(-0.364197552, -0.438271612), 83467}, //
{glm::vec2(-0.364197552, -0.450617284), 83493}, //
{glm::vec2(-0.376543224, -0.450617284), 83494}, //
{glm::vec2(-0.376543224, -0.438271612), 83495}, //
});
polys.push_back({
{glm::vec2(-0.253086448, -0.413580239), 83468}, //
{glm::vec2(-0.265432119, -0.413580239), 83470}, //
{glm::vec2(-0.265432119, -0.401234567), 83471}, //
{glm::vec2(-0.253086448, -0.401234567), 83469}, //
});
polys.push_back({
{glm::vec2(-0.290123463, -0.413580239), 83472}, //
{glm::vec2(-0.302469134, -0.413580239), 83474}, //
{glm::vec2(-0.302469134, -0.401234567), 83475}, //
{glm::vec2(-0.290123463, -0.401234567), 83473}, //
});
polys.push_back({
{glm::vec2(-0.253086448, -0.364197552), 83476}, //
{glm::vec2(-0.253086448, -0.376543224), 83477}, //
{glm::vec2(-0.265432119, -0.376543224), 83478}, //
{glm::vec2(-0.265432119, -0.364197552), 83510}, //
});
polys.push_back({
{glm::vec2(-0.327160507, -0.413580239), 83480}, //
{glm::vec2(-0.339506179, -0.413580239), 83483}, //
{glm::vec2(-0.339506179, -0.401234567), 83482}, //
{glm::vec2(-0.327160507, -0.401234567), 83481}, //
});
polys.push_back({
{glm::vec2(-0.364197552, -0.401234567), 83484}, //
{glm::vec2(-0.364197552, -0.413580239), 83506}, //
{glm::vec2(-0.376543224, -0.413580239), 83507}, //
{glm::vec2(-0.376543224, -0.401234567), 83508}, //
});
polys.push_back({
{glm::vec2(-0.401234567, -0.475308657), 83489}, //
{glm::vec2(-0.401234567, -0.487654328), 83490}, //
{glm::vec2(-0.413580239, -0.487654328), 83492}, //
{glm::vec2(-0.413580239, -0.475308657), 83491}, //
});
polys.push_back({
{glm::vec2(-0.401234567, -0.450617284), 83496}, //
{glm::vec2(-0.413580239, -0.450617284), 83498}, //
{glm::vec2(-0.413580239, -0.438271612), 83499}, //
{glm::vec2(-0.401234567, -0.438271612), 83497}, //
});
polys.push_back({
{glm::vec2(-0.438271612, -0.475308657), 83500}, //
{glm::vec2(-0.438271612, -0.487654328), 83501}, //
{glm::vec2(-0.450617284, -0.487654328), 83502}, //
{glm::vec2(-0.450617284, -0.475308657), 83503}, //
});
polys.push_back({
{glm::vec2(-0.253086448, -0.339506179), 83511}, //
{glm::vec2(-0.265432119, -0.339506179), 83513}, //
{glm::vec2(-0.265432119, -0.327160507), 83514}, //
{glm::vec2(-0.253086448, -0.327160507), 83512}, //
});
polys.push_back({
{glm::vec2(-0.253086448, -0.290123463), 83515}, //
{glm::vec2(-0.253086448, -0.302469134), 83516}, //
{glm::vec2(-0.265432119, -0.302469134), 83517}, //
{glm::vec2(-0.265432119, -0.290123463), 83518}, //
});
polys.push_back({
{glm::vec2(-0.0308641978, -0.228395075), 83522}, //
{glm::vec2(-0.0432098769, -0.228395075), 83524}, //
{glm::vec2(-0.0432098769, -0.216049403), 83525}, //
{glm::vec2(-0.0308641978, -0.216049403), 83523}, //
});
polys.push_back({
{glm::vec2(-0.0308641978, -0.19135803), 83529}, //
{glm::vec2(-0.0432098769, -0.19135803), 83531}, //
{glm::vec2(-0.0432098769, -0.179012358), 83547}, //
{glm::vec2(-0.0308641978, -0.179012358), 83530}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.216049403), 83532}, //
{glm::vec2(-0.0679012388, -0.228395075), 83533}, //
{glm::vec2(-0.0802469179, -0.228395075), 83535}, //
{glm::vec2(-0.0802469179, -0.216049403), 83534}, //
});
polys.push_back({
{glm::vec2(-0.092592597, -0.240740761), 83536}, //
{glm::vec2(-0.129629642, -0.240740761), 83550}, //
{glm::vec2(-0.129629642, -0.203703731), 83541}, //
{glm::vec2(-0.092592597, -0.203703731), 83537}, //
});
polys.push_back({
{glm::vec2(-0.0679012388, -0.19135803), 83538}, //
{glm::vec2(-0.0802469179, -0.19135803), 83540}, //
{glm::vec2(-0.0802469179, -0.179012358), 83548}, //
{glm::vec2(-0.0679012388, -0.179012358), 83539}, //
});
polys.push_back({
{glm::vec2(-0.104938269, -0.179012358), 83542}, //
{glm::vec2(-0.104938269, -0.19135803), 83543}, //
{glm::vec2(-0.117283948, -0.19135803), 83544}, //
{glm::vec2(-0.117283948, -0.179012358), 83549}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.216049403), 83551}, //
{glm::vec2(-0.141975313, -0.228395075), 83552}, //
{glm::vec2(-0.154320985, -0.228395075), 83554}, //
{glm::vec2(-0.154320985, -0.216049403), 83553}, //
});
polys.push_back({
{glm::vec2(-0.179012358, -0.216049403), 83555}, //
{glm::vec2(-0.179012358, -0.228395075), 83559}, //
{glm::vec2(-0.19135803, -0.228395075), 83560}, //
{glm::vec2(-0.19135803, -0.216049403), 83561}, //
});
polys.push_back({
{glm::vec2(-0.141975313, -0.19135803), 83556}, //
{glm::vec2(-0.154320985, -0.19135803), 83558}, //
{glm::vec2(-0.154320985, -0.179012358), 83566}, //
{glm::vec2(-0.141975313, -0.179012358), 83557}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.0308641978), 83572}, //
{glm::vec2(0.475308657, 0.0308641978), 83574}, //
{glm::vec2(0.475308657, 0.0432098769), 83575}, //
{glm::vec2(0.487654328, 0.0432098769), 83573}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.0432098769), 83576}, //
{glm::vec2(0.450617284, 0.0308641978), 83577}, //
{glm::vec2(0.438271612, 0.0308641978), 83579}, //
{glm::vec2(0.438271612, 0.0432098769), 83578}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.0432098769), 83585}, //
{glm::vec2(0.413580239, 0.0308641978), 83586}, //
{glm::vec2(0.401234567, 0.0308641978), 83587}, //
{glm::vec2(0.401234567, 0.0432098769), 83588}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.0679012388), 83589}, //
{glm::vec2(0.475308657, 0.0679012388), 83591}, //
{glm::vec2(0.475308657, 0.0802469179), 83592}, //
{glm::vec2(0.487654328, 0.0802469179), 83590}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.0679012388), 83593}, //
{glm::vec2(0.438271612, 0.0679012388), 83595}, //
{glm::vec2(0.438271612, 0.0802469179), 83596}, //
{glm::vec2(0.450617284, 0.0802469179), 83594}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.104938269), 83597}, //
{glm::vec2(0.475308657, 0.104938269), 83599}, //
{glm::vec2(0.475308657, 0.117283948), 83600}, //
{glm::vec2(0.487654328, 0.117283948), 83598}, //
});
polys.push_back({
{glm::vec2(0.462962955, 0.129629642), 83601}, //
{glm::vec2(0.462962955, 0.092592597), 83602}, //
{glm::vec2(0.42592591, 0.092592597), 83611}, //
{glm::vec2(0.42592591, 0.129629642), 83655}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.0802469179), 83603}, //
{glm::vec2(0.413580239, 0.0679012388), 83604}, //
{glm::vec2(0.401234567, 0.0679012388), 83605}, //
{glm::vec2(0.401234567, 0.0802469179), 83606}, //
});
polys.push_back({
{glm::vec2(0.376543224, 0.0679012388), 83607}, //
{glm::vec2(0.364197552, 0.0679012388), 83627}, //
{glm::vec2(0.364197552, 0.0802469179), 83609}, //
{glm::vec2(0.376543224, 0.0802469179), 83608}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.104938269), 83610}, //
{glm::vec2(0.401234567, 0.104938269), 83613}, //
{glm::vec2(0.401234567, 0.117283948), 83614}, //
{glm::vec2(0.413580239, 0.117283948), 83612}, //
});
polys.push_back({
{glm::vec2(0.376543224, 0.104938269), 83615}, //
{glm::vec2(0.364197552, 0.104938269), 83632}, //
{glm::vec2(0.364197552, 0.117283948), 83617}, //
{glm::vec2(0.376543224, 0.117283948), 83616}, //
});
polys.push_back({
{glm::vec2(0.265432119, 0.0308641978), 83623}, //
{glm::vec2(0.253086448, 0.0308641978), 83626}, //
{glm::vec2(0.253086448, 0.0432098769), 83625}, //
{glm::vec2(0.265432119, 0.0432098769), 83624}, //
});
polys.push_back({
{glm::vec2(0.339506179, 0.0802469179), 83628}, //
{glm::vec2(0.339506179, 0.0679012388), 83629}, //
{glm::vec2(0.327160507, 0.0679012388), 83630}, //
{glm::vec2(0.327160507, 0.0802469179), 83631}, //
});
polys.push_back({
{glm::vec2(0.351851851, 0.129629642), 83633}, //
{glm::vec2(0.351851851, 0.092592597), 83634}, //
{glm::vec2(0.314814806, 0.092592597), 83635}, //
{glm::vec2(0.314814806, 0.129629642), 83700}, //
});
polys.push_back({
{glm::vec2(0.302469134, 0.0679012388), 83636}, //
{glm::vec2(0.290123463, 0.0679012388), 83638}, //
{glm::vec2(0.290123463, 0.0802469179), 83639}, //
{glm::vec2(0.302469134, 0.0802469179), 83637}, //
});
polys.push_back({
{glm::vec2(0.265432119, 0.0679012388), 83640}, //
{glm::vec2(0.253086448, 0.0679012388), 83642}, //
{glm::vec2(0.253086448, 0.0802469179), 83643}, //
{glm::vec2(0.265432119, 0.0802469179), 83641}, //
});
polys.push_back({
{glm::vec2(0.302469134, 0.104938269), 83644}, //
{glm::vec2(0.290123463, 0.104938269), 83646}, //
{glm::vec2(0.290123463, 0.117283948), 83647}, //
{glm::vec2(0.302469134, 0.117283948), 83645}, //
});
polys.push_back({
{glm::vec2(0.265432119, 0.104938269), 83648}, //
{glm::vec2(0.253086448, 0.104938269), 83651}, //
{glm::vec2(0.253086448, 0.117283948), 83650}, //
{glm::vec2(0.265432119, 0.117283948), 83649}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.141975313), 83652}, //
{glm::vec2(0.475308657, 0.141975313), 83654}, //
{glm::vec2(0.475308657, 0.154320985), 83659}, //
{glm::vec2(0.487654328, 0.154320985), 83653}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.141975313), 83656}, //
{glm::vec2(0.438271612, 0.141975313), 83658}, //
{glm::vec2(0.438271612, 0.154320985), 83661}, //
{glm::vec2(0.450617284, 0.154320985), 83657}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.179012358), 83660}, //
{glm::vec2(0.475308657, 0.179012358), 83673}, //
{glm::vec2(0.475308657, 0.19135803), 83674}, //
{glm::vec2(0.487654328, 0.19135803), 83672}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.179012358), 83662}, //
{glm::vec2(0.438271612, 0.179012358), 83677}, //
{glm::vec2(0.438271612, 0.19135803), 83676}, //
{glm::vec2(0.450617284, 0.19135803), 83675}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.154320985), 83663}, //
{glm::vec2(0.413580239, 0.141975313), 83664}, //
{glm::vec2(0.401234567, 0.141975313), 83665}, //
{glm::vec2(0.401234567, 0.154320985), 83668}, //
});
polys.push_back({
{glm::vec2(0.376543224, 0.141975313), 83666}, //
{glm::vec2(0.364197552, 0.141975313), 83698}, //
{glm::vec2(0.364197552, 0.154320985), 83670}, //
{glm::vec2(0.376543224, 0.154320985), 83667}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.179012358), 83669}, //
{glm::vec2(0.401234567, 0.179012358), 83686}, //
{glm::vec2(0.401234567, 0.19135803), 83687}, //
{glm::vec2(0.413580239, 0.19135803), 83685}, //
});
polys.push_back({
{glm::vec2(0.376543224, 0.179012358), 83671}, //
{glm::vec2(0.364197552, 0.179012358), 83715}, //
{glm::vec2(0.364197552, 0.19135803), 83689}, //
{glm::vec2(0.376543224, 0.19135803), 83688}, //
});
polys.push_back({
{glm::vec2(0.462962955, 0.203703716), 83678}, //
{glm::vec2(0.42592591, 0.203703716), 83690}, //
{glm::vec2(0.42592591, 0.240740746), 83684}, //
{glm::vec2(0.462962955, 0.240740746), 83683}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.216049403), 83679}, //
{glm::vec2(0.475308657, 0.216049403), 83682}, //
{glm::vec2(0.475308657, 0.228395075), 83681}, //
{glm::vec2(0.487654328, 0.228395075), 83680}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.228395075), 83691}, //
{glm::vec2(0.413580239, 0.216049403), 83692}, //
{glm::vec2(0.401234567, 0.216049403), 83694}, //
{glm::vec2(0.401234567, 0.228395075), 83693}, //
});
polys.push_back({
{glm::vec2(0.376543224, 0.216049403), 83695}, //
{glm::vec2(0.364197552, 0.216049403), 83720}, //
{glm::vec2(0.364197552, 0.228395075), 83697}, //
{glm::vec2(0.376543224, 0.228395075), 83696}, //
});
polys.push_back({
{glm::vec2(0.339506179, 0.154320985), 83699}, //
{glm::vec2(0.339506179, 0.141975313), 83701}, //
{glm::vec2(0.327160507, 0.141975313), 83702}, //
{glm::vec2(0.327160507, 0.154320985), 83703}, //
});
polys.push_back({
{glm::vec2(0.339506179, 0.179012358), 83704}, //
{glm::vec2(0.327160507, 0.179012358), 83717}, //
{glm::vec2(0.327160507, 0.19135803), 83718}, //
{glm::vec2(0.339506179, 0.19135803), 83716}, //
});
polys.push_back({
{glm::vec2(0.302469134, 0.141975313), 83705}, //
{glm::vec2(0.290123463, 0.141975313), 83707}, //
{glm::vec2(0.290123463, 0.154320985), 83711}, //
{glm::vec2(0.302469134, 0.154320985), 83706}, //
});
polys.push_back({
{glm::vec2(0.265432119, 0.141975313), 83708}, //
{glm::vec2(0.253086448, 0.141975313), 83710}, //
{glm::vec2(0.253086448, 0.154320985), 83713}, //
{glm::vec2(0.265432119, 0.154320985), 83709}, //
});
polys.push_back({
{glm::vec2(0.302469134, 0.179012358), 83712}, //
{glm::vec2(0.290123463, 0.179012358), 83725}, //
{glm::vec2(0.290123463, 0.19135803), 83726}, //
{glm::vec2(0.302469134, 0.19135803), 83724}, //
});
polys.push_back({
{glm::vec2(0.265432119, 0.179012358), 83714}, //
{glm::vec2(0.253086448, 0.179012358), 83729}, //
{glm::vec2(0.253086448, 0.19135803), 83728}, //
{glm::vec2(0.265432119, 0.19135803), 83727}, //
});
polys.push_back({
{glm::vec2(0.351851851, 0.203703716), 83719}, //
{glm::vec2(0.314814806, 0.203703716), 83722}, //
{glm::vec2(0.314814806, 0.240740746), 83723}, //
{glm::vec2(0.351851851, 0.240740746), 83721}, //
});
polys.push_back({
{glm::vec2(0.302469134, 0.216049403), 83730}, //
{glm::vec2(0.290123463, 0.216049403), 83732}, //
{glm::vec2(0.290123463, 0.228395075), 83733}, //
{glm::vec2(0.302469134, 0.228395075), 83731}, //
});
polys.push_back({
{glm::vec2(0.265432119, 0.216049403), 83734}, //
{glm::vec2(0.253086448, 0.216049403), 83737}, //
{glm::vec2(0.253086448, 0.228395075), 83736}, //
{glm::vec2(0.265432119, 0.228395075), 83735}, //
});
polys.push_back({
{glm::vec2(0.228395075, 0.0308641978), 83743}, //
{glm::vec2(0.216049403, 0.0308641978), 83745}, //
{glm::vec2(0.216049403, 0.0432098769), 83746}, //
{glm::vec2(0.228395075, 0.0432098769), 83744}, //
});
polys.push_back({
{glm::vec2(0.19135803, 0.0432098769), 83747}, //
{glm::vec2(0.19135803, 0.0308641978), 83748}, //
{glm::vec2(0.179012358, 0.0308641978), 83751}, //
{glm::vec2(0.179012358, 0.0432098769), 83749}, //
});
polys.push_back({
{glm::vec2(0.228395075, 0.0679012388), 83752}, //
{glm::vec2(0.216049403, 0.0679012388), 83754}, //
{glm::vec2(0.216049403, 0.0802469179), 83755}, //
{glm::vec2(0.228395075, 0.0802469179), 83753}, //
});
polys.push_back({
{glm::vec2(0.19135803, 0.0679012388), 83756}, //
{glm::vec2(0.179012358, 0.0679012388), 83765}, //
{glm::vec2(0.179012358, 0.0802469179), 83758}, //
{glm::vec2(0.19135803, 0.0802469179), 83757}, //
});
polys.push_back({
{glm::vec2(0.240740761, 0.092592597), 83759}, //
{glm::vec2(0.203703731, 0.092592597), 83762}, //
{glm::vec2(0.203703731, 0.129629642), 83767}, //
{glm::vec2(0.240740761, 0.129629642), 83760}, //
});
polys.push_back({
{glm::vec2(0.19135803, 0.104938269), 83761}, //
{glm::vec2(0.179012358, 0.104938269), 83766}, //
{glm::vec2(0.179012358, 0.117283948), 83764}, //
{glm::vec2(0.19135803, 0.117283948), 83763}, //
});
polys.push_back({
{glm::vec2(0.228395075, 0.141975313), 83768}, //
{glm::vec2(0.216049403, 0.141975313), 83770}, //
{glm::vec2(0.216049403, 0.154320985), 83773}, //
{glm::vec2(0.228395075, 0.154320985), 83769}, //
});
polys.push_back({
{glm::vec2(0.19135803, 0.141975313), 83771}, //
{glm::vec2(0.179012358, 0.141975313), 83777}, //
{glm::vec2(0.179012358, 0.154320985), 83775}, //
{glm::vec2(0.19135803, 0.154320985), 83772}, //
});
polys.push_back({
{glm::vec2(0.228395075, 0.179012358), 83774}, //
{glm::vec2(0.216049403, 0.179012358), 83779}, //
{glm::vec2(0.216049403, 0.19135803), 83780}, //
{glm::vec2(0.228395075, 0.19135803), 83778}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.253086448), 83786}, //
{glm::vec2(0.475308657, 0.253086448), 83789}, //
{glm::vec2(0.475308657, 0.265432119), 83788}, //
{glm::vec2(0.487654328, 0.265432119), 83787}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.253086448), 83790}, //
{glm::vec2(0.438271612, 0.253086448), 83793}, //
{glm::vec2(0.438271612, 0.265432119), 83792}, //
{glm::vec2(0.450617284, 0.265432119), 83791}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.290123463), 83794}, //
{glm::vec2(0.475308657, 0.290123463), 83796}, //
{glm::vec2(0.475308657, 0.302469134), 83797}, //
{glm::vec2(0.487654328, 0.302469134), 83795}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.302469134), 83798}, //
{glm::vec2(0.450617284, 0.290123463), 83799}, //
{glm::vec2(0.438271612, 0.290123463), 83801}, //
{glm::vec2(0.438271612, 0.302469134), 83800}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.253086448), 83802}, //
{glm::vec2(0.401234567, 0.253086448), 83805}, //
{glm::vec2(0.401234567, 0.265432119), 83804}, //
{glm::vec2(0.413580239, 0.265432119), 83803}, //
});
polys.push_back({
{glm::vec2(0.376543224, 0.253086448), 83806}, //
{glm::vec2(0.364197552, 0.253086448), 83829}, //
{glm::vec2(0.364197552, 0.265432119), 83808}, //
{glm::vec2(0.376543224, 0.265432119), 83807}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.302469134), 83809}, //
{glm::vec2(0.413580239, 0.290123463), 83810}, //
{glm::vec2(0.401234567, 0.290123463), 83811}, //
{glm::vec2(0.401234567, 0.302469134), 83812}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.327160507), 83813}, //
{glm::vec2(0.475308657, 0.327160507), 83815}, //
{glm::vec2(0.475308657, 0.339506179), 83818}, //
{glm::vec2(0.487654328, 0.339506179), 83814}, //
});
polys.push_back({
{glm::vec2(0.462962955, 0.351851881), 83816}, //
{glm::vec2(0.462962955, 0.314814836), 83817}, //
{glm::vec2(0.42592591, 0.314814836), 83822}, //
{glm::vec2(0.42592591, 0.351851881), 83820}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.364197552), 83819}, //
{glm::vec2(0.475308657, 0.364197552), 83844}, //
{glm::vec2(0.475308657, 0.376543224), 83845}, //
{glm::vec2(0.487654328, 0.376543224), 83843}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.364197552), 83821}, //
{glm::vec2(0.438271612, 0.364197552), 83848}, //
{glm::vec2(0.438271612, 0.376543224), 83847}, //
{glm::vec2(0.450617284, 0.376543224), 83846}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.339506179), 83823}, //
{glm::vec2(0.413580239, 0.327160507), 83824}, //
{glm::vec2(0.401234567, 0.327160507), 83825}, //
{glm::vec2(0.401234567, 0.339506179), 83827}, //
});
polys.push_back({
{glm::vec2(0.413580239, 0.364197552), 83828}, //
{glm::vec2(0.401234567, 0.364197552), 83859}, //
{glm::vec2(0.401234567, 0.376543224), 83860}, //
{glm::vec2(0.413580239, 0.376543224), 83858}, //
});
polys.push_back({
{glm::vec2(0.339506179, 0.265432119), 83830}, //
{glm::vec2(0.339506179, 0.253086448), 83831}, //
{glm::vec2(0.327160507, 0.253086448), 83833}, //
{glm::vec2(0.327160507, 0.265432119), 83832}, //
});
polys.push_back({
{glm::vec2(0.302469134, 0.253086448), 83835}, //
{glm::vec2(0.290123463, 0.253086448), 83837}, //
{glm::vec2(0.290123463, 0.265432119), 83838}, //
{glm::vec2(0.302469134, 0.265432119), 83836}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.401234567), 83849}, //
{glm::vec2(0.475308657, 0.401234567), 83851}, //
{glm::vec2(0.475308657, 0.413580239), 83852}, //
{glm::vec2(0.487654328, 0.413580239), 83850}, //
});
polys.push_back({
{glm::vec2(0.450617284, 0.401234567), 83853}, //
{glm::vec2(0.438271612, 0.401234567), 83855}, //
{glm::vec2(0.438271612, 0.413580239), 83856}, //
{glm::vec2(0.450617284, 0.413580239), 83854}, //
});
polys.push_back({
{glm::vec2(0.487654328, 0.438271612), 83864}, //
{glm::vec2(0.475308657, 0.438271612), 83866}, //
{glm::vec2(0.475308657, 0.450617284), 83867}, //
{glm::vec2(0.487654328, 0.450617284), 83865}, //
});
TestPoly(polys, 1771);
}