using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Azimuth; using Annulus; namespace Blacklight.Core.UnitTests.Drawables { public class PolygonTests : UnitTestSharp.TestFixture { public void FailedOnce_1() { var vertices = new List(new Vector[] { new Vector(32.511, 0), new Vector(0, 32.5495), new Vector(-32.5, 0), new Vector(0, -32.522) }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_2() { var vertices = new List(new Vector[] { new Vector(54.5825,0), new Vector(38.926228304,38.926228304), new Vector(0,36.614), new Vector(-41.9441600464,41.944160046), new Vector(-32.5,0), new Vector(-22.9809703886,-22.9809703886), new Vector(0,-32.5), new Vector(22.980970389,-22.9809703886) }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_3() { var vertices = new List(new Vector[] { new Vector(35.096, 0), new Vector(38.30008525, 38.30008525), new Vector(0, 40.277), new Vector(-35.4960533088, 35.496053309), new Vector(-54.3735, 0), new Vector(-39.4745896131, -39.4745896131), new Vector(0, -35.415), new Vector(39.326804296, -39.3268042959) }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_4() { var vertices = new List(new Vector[] { new Vector(59.384, 0), new Vector(30.821370378, 30.821370378), new Vector(0, 58.3115), new Vector(-26.527818003, 26.527818003), new Vector(-52.1295, 0), new Vector(-31.7236386312, -31.7236386312), new Vector(0, -46.1345), new Vector(24.174920189, -24.1749201886), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_5() { var vertices = new List(new Vector[] { new Vector(59.1805, 0), new Vector(32.054211051, 32.054211051), new Vector(0, 49.3905), new Vector(-23.8249023319, 23.824902332), new Vector(-54.6925, 0), new Vector(-28.5073634369, -28.5073634369), new Vector(0, -44.9135), new Vector(24.023245784, -24.023245784), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_6() { var vertices = new List(new Vector[] { new Vector(34.8155, 0), new Vector(24.050469395, 24.050469395), new Vector(0, 32.6595), new Vector(-24.0271348713, 24.027134871), new Vector(-35.1565, 0), new Vector(-24.797174156, -24.797174156), new Vector(0, -33.6825), new Vector(24.86328864, -24.8632886401), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_7() { var vertices = new List(new Vector[] { new Vector(51.9645, 0), new Vector(26.644490622, 26.644490622), new Vector(0, 56.535), new Vector(-27.4611989542, 27.461198954), new Vector(-52.3, 0), new Vector(-26.9167267326, -26.9167267326), new Vector(0, -53.5155), new Vector(41.014668183, -41.0146681826), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_8() { var vertices = new List(new Vector[] { new Vector(58.465346535, 0), new Vector(43.41902538, 31.545768463), new Vector(15.868991526, 48.839733972), new Vector(-11.3748169767, 35.008086947), new Vector(-28.2755444569, 20.54338555), new Vector(-58.3168316832, 0), new Vector(-43.0096218407, -31.2483193807), new Vector(-13.310847541, -40.9665763427), new Vector(16.790263314, -51.6751169855), new Vector(29.450354614, -21.3969350917), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_9() { var vertices = new List(new Vector[] { new Vector(45.522552255, 0), new Vector(40.424592205, 25.979307928), new Vector(21.591069625, 47.277847767), new Vector(-5.3559852776, 37.251695849), new Vector(-36.031748744, 41.582854743), new Vector(-35.9202925106, 10.547149515), new Vector(-56.9784716344, -16.730388799), new Vector(-35.812020995, -41.3292754028), new Vector(-5.1994232993, -36.1627833717), new Vector(23.780110233, -52.0711780839), new Vector(27.338426138, -17.5693396564), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_10() { var vertices = new List(new Vector[] { new Vector(55.115511551, 0), new Vector(35.056857892, 22.529674549), new Vector(17.850506499, 39.087157028), new Vector(-4.8213261217, 33.533059739), new Vector(-32.4260524036, 37.421659342), new Vector(-42.6494098998, 12.522996655), new Vector(-55.4320940697, -16.2763313779), new Vector(-33.222115232, -38.34036482), new Vector(-7.9470860184, -55.2731973486), new Vector(15.659180881, -34.2888232352), new Vector(27.338426138, -17.5693396564), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_11() { var vertices = new List(new Vector[] { new Vector(9.7552205221, 0), new Vector(6.7128458179, 4.8771679706), new Vector(2.0577472251, 6.3330947584), new Vector(-2.958955932, 9.106729959), new Vector(-4.509450532, 3.2763075894), new Vector(-5.0684428443, 0), new Vector(-7.4710207182, -5.4280142793), new Vector(-2.0000130599, -6.1554072687), new Vector(2.9614258428, -9.1143315629), new Vector(7.580139707, -5.5072938654), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_12() { var vertices = new List(new Vector[] { new Vector(4.6658055806, 0), new Vector(2.7199171021, 2.7199171021), new Vector(0, 9.6792889289), new Vector(-1.1494335776, 1.1494335776), new Vector(-8.1866336634, 0), new Vector(-6.8124996742, -6.8124996742), new Vector(0, -2.3229162916), new Vector(1.9286703421, -1.9286703421), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_13() { var vertices = new List(new Vector[] { new Vector(1.0860306031, 0), new Vector(4.8569898245, 4.8569898245), new Vector(0, 1.1279927993), new Vector(-3.9025484202, 3.9025484202), new Vector(-5.3941494149, 0), new Vector(-3.0886946099, -3.0886946099), new Vector(0, -9.6962736274), new Vector(2.6174789055, -2.6174789055), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_14() { var vertices = new List(new Vector[] { new Vector(8.1436723672, 0), new Vector(2.6436176668, 1.0950222913), new Vector(4.5115258373, 4.5115258373), new Vector(0.991790766, 2.3943947182), new Vector(0, 8.3484878488), new Vector(-1.3676299861, 3.3017508607), new Vector(-2.5765036269, 2.5765036269), new Vector(-6.1290467554, 2.5387342905), new Vector(-3.1211971197, 0), new Vector(-6.5379570007, -2.7081104599), new Vector(-3.1339087105, -3.1339087105), new Vector(-3.2682370697, -7.8902222588), new Vector(0, -8.3374977498), new Vector(2.2527447313, -5.438606883), new Vector(1.9322026937, -1.9322026937), new Vector(5.3675321902, -2.2233046297), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_15() { var vertices = new List(new Vector[] { new Vector(6.5680918092, 0), new Vector(3.9520013427, 3.9520013427), new Vector(0, 5.8177677768), new Vector(-3.932926644, 3.932926644), new Vector(-5.405139514, 0), new Vector(-4.409794111, -4.409794111), new Vector(0, -6.9077857786), new Vector(4.7015663538, -4.7015663538), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_16() { var vertices = new List(new Vector[] { new Vector(2.5, 0.5), new Vector(2.6888772695, 1.159868436), new Vector(0.0089363264, 0.0044879918), new Vector(5.3662628852, 3.0982133213), new Vector(-2.7692749288, 6.4199008937), new Vector(-0.0044879918, 0.0089363264), new Vector(-2.5, 4.5), new Vector(-7.5, -1.75), new Vector(7.571224879, -3.2659076183), new Vector(0.0093969262, -0.0034202014), new Vector(9.0582607798, -2.7118652563), new Vector(0.01, 0), }); var poly = new SimplePolygon(vertices); var draw = new Blacklight.Core.Drawables.Polygon(poly); } public void FailedOnce_17() { var vertices = new PerforatedPolygon(new SimplePolygon(new Vector[] { Vector.Parse("<0x3FF2934E0A283447 : 0x0>"), Vector.Parse("<0x3C947D3B347418AA : 0x3FF2934E0A283447>"), Vector.Parse("<0xC003519437A22286 : 0x3CB54F1BDCDD76D5>"), Vector.Parse("<0xBCBF97DEE361A73C : 0xC00318495DDFD53B>"), }), new[] { new SimplePolygon(new Vector[] { Vector.Parse("<0x3F826E978D4FDF3C : 0x0>"), Vector.Parse("<0x3C2454BC6A7EF9DC : 0x3F826E978D4FDF3C>"), Vector.Parse("<0xBF826E978D4FDF3C : 0x3C3454BC6A7EF9DC>"), Vector.Parse("<0xBC3E7F1A9FBE76CA : 0xBF826E978D4FDF3C>"), })}); var straightSkeleton = Annulus.CSG.StraightSkeleton.BuildStraightSkeleton(vertices); var actualFaces = straightSkeleton.Decompose(); var draw = new Blacklight.Core.Drawables.Polygon(vertices); } public void FailedOnce_18() { var radiiOut = new string[] { "1.3947524752", //0x3FF650E7F8B3402E", "1.3947524752", //0x3FF650E7F8B3402E", "1.775409541", //0x3FFC6813D5B677A7", "2.175049505", //0x400166805AD78C03", "3.4748784878", //0x400BCC8D17B71362", "3.7026732673", //0x400D9F13297788C4", "4.3450945095", //0x4011616074807BE0", "4.9145814581", //0x4013A8880AB10E9C", "5.2712601260", //0x401515C536E7BB5A", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.009)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce_19() { var radiiOut = new string[] { "0x401EF0AE75388702", "0x40230AF905D5956F", "0x3FC7C9A833193EC2", "0x4021593002CD4C37", "0x3FB01DA441380C50", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.009)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce_20() { var radiiOut = new string[] { "0x40230AF905D5956F", "0x3FC7C9A833193EC2", "0x4021593002CD4C37", "0x3FB01DA441380C50", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.009)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce_21() { var radiiOut = new string[] { "0x3F847AE147AE147B",//--0.01", "0x3F847AE147AE147B",//--0.01", "0x3F847AE147AE147B",//--0.01", "0x3F847AE147AE147B",//--0.01", "0x3F847AE147AE147B",//--0.01", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.009)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce_22() { var radiiOut = new string[] { "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "0x3FC3F380798411BC", "0x3FC3F380798411BC", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < 120; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, (i < radiiOut.Length) ? radiiOut[i] : new Scalar(1.0))); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.009)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce23() { var radiiOut = new string[] { "0x40073A26497EE865", "0x400F4AB8B9BD49B5", "0x400264398CEAE250", "0x400266455DD66513", "0x3FF2FDB479FEC3D3", "0x3FF2FDB479FEC3D3", "0x4019F7F8D900D1FF", "0x401832BF953B2E8E", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.0090000000000000011)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce24() { var radiiOut = new string[] { "0x3F926CB451E214F6", "0x3F9FB9824CB40660", "0x3F9060E3665F5248", "0x3F9166CBDC20B39E", "0x3FB5BE22C8DFA3AF", "0x3FBA9A32F836320C", "0x3FA80C04D4650DE9", "0x3FA80C04D4650DE9", "0x3FA3F462FD5F888C", "0x3F8892831EB399D7", "0x3FB26AEF4A2B2754", "0x3F926CB451E214F6", "0x3FB0A0987C18BCFC", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.0090000000000000011)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce25() { var radiiOut = new string[] { "0x3FB32F5DA27C3055", "0x3FA4FA4B7320E9E4", "0x3F9060E3665F5248", "0x3F9166CBDC20B39E", "0x3FA994E185071FEB", "0x3FB05F1E5EA864A6", "0x3F957E6DB32638FA", "0x3F957E6DB32638FA", "0x3FB4F9B4708E9AAD", "0x3FAA9AC9FAC88142", "0x3FB5BE22C8DFA3AF", "0x3FB229752CBACEFE", "0x3FBA173EBD558160", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.0090000000000000011)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce26() { var radiiOut = new string[] { "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8A9E540A365C85", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8CAA24F5B91F34", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8CAA24F5B91F34", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8A9E540A365C85", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F847AE147AE147B", "0x3F8686B23330D729", "0x3F8686B23330D729", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.0090000000000000011)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce27() { var radiiOut = new string[] { "0x3F926CB451E214F6", "0x3F9478853D64D7A4", "0x3F8892831EB399D7", "0x3F9478853D64D7A4", "0x3F8892831EB399D7", "0x3F8EB5F5E13BE1E1", "0x3F926CB451E214F6", "0x3F8A9E540A365C85", "0x3F926CB451E214F6", "0x3F9166CBDC20B39E", "0x3F926CB451E214F6", "0x3F8EB5F5E13BE1E1", "0x3F93729CC7A3764C", "0x3F9166CBDC20B39E", "0x3F8EB5F5E13BE1E1", "0x3F9166CBDC20B39E", "0x3F8A9E540A365C85", "0x3F8A9E540A365C85", "0x3F9478853D64D7A4", "0x3F9166CBDC20B39E", "0x3F9060E3665F5248", "0x3F8CAA24F5B91F34", "0x3F8892831EB399D7", "0x3F9060E3665F5248", "0x3F8686B23330D729", "0x3F8686B23330D729", "0x3F8CAA24F5B91F34", "0x3F926CB451E214F6", "0x3F8686B23330D729", "0x3F9478853D64D7A4", "0x3F9060E3665F5248", "0x3F8EB5F5E13BE1E1", "0x3F8A9E540A365C85", "0x3F93729CC7A3764C", "0x3F93729CC7A3764C", "0x3F8CAA24F5B91F34", "0x3F9166CBDC20B39E", "0x3F9166CBDC20B39E", "0x3F9478853D64D7A4", "0x3F8EB5F5E13BE1E1", "0x3F8892831EB399D7", "0x3F8CAA24F5B91F34", "0x3F8A9E540A365C85", "0x3F93729CC7A3764C", "0x3F8A9E540A365C85", "0x3F8CAA24F5B91F34", "0x3F8892831EB399D7", "0x3F8EB5F5E13BE1E1", "0x3F9478853D64D7A4", "0x3F8CAA24F5B91F34", "0x3F93729CC7A3764C", "0x3F93729CC7A3764C", "0x3F8A9E540A365C85", "0x3F8EB5F5E13BE1E1", "0x3F9060E3665F5248", "0x3F9478853D64D7A4", "0x3F8686B23330D729", "0x3F9060E3665F5248", "0x3F926CB451E214F6", "0x3F8CAA24F5B91F34", "0x3F9060E3665F5248", "0x3F8892831EB399D7", "0x3F8CAA24F5B91F34", "0x3F9060E3665F5248", "0x3F9166CBDC20B39E", "0x3F9478853D64D7A4", "0x3F8A9E540A365C85", "0x3F8A9E540A365C85", "0x3F9166CBDC20B39E", "0x3F8EB5F5E13BE1E1", "0x3F9166CBDC20B39E", "0x3F93729CC7A3764C", "0x3F8EB5F5E13BE1E1", "0x3F926CB451E214F6", "0x3F9166CBDC20B39E", "0x3F926CB451E214F6", "0x3F8A9E540A365C85", "0x3F926CB451E214F6", "0x3F8EB5F5E13BE1E1", "0x3F8892831EB399D7", "0x3F9478853D64D7A4", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.0090000000000000011)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } public void FailedOnce28() { var radiiOut = new string[] { "0x3FB5FF9CE64FFC05", "0x3FAEB26BD1CE069F", "0x3FAFB854478F67F6", "0x3FB0A0987C18BCFC", "0x3FB229752CBACEFE", "0x3FB57CA8AB6F4B59", "0x3FBBA01B6DF79363", "0x3FBADBAD15A68A62", "0x3FB952D06504785F", "0x3FB5FF9CE64FFC05", "0x3FAEB26BD1CE069F", "0x3FAFB854478F67F6", "0x3FB0A0987C18BCFC", "0x3FB229752CBACEFE", "0x3FB57CA8AB6F4B59", "0x3FBBA01B6DF79363", "0x3FBADBAD15A68A62", "0x3FB952D06504785F", "0x3FB5FF9CE64FFC05", "0x3FAEB26BD1CE069F", "0x3FAFB854478F67F6", "0x3FB0A0987C18BCFC", "0x3FB229752CBACEFE", "0x3FB57CA8AB6F4B59", "0x3FBBA01B6DF79363", "0x3FBADBAD15A68A62", "0x3FB952D06504785F", "0x3FB5FF9CE64FFC05", "0x3FAEB26BD1CE069F", "0x3FAFB854478F67F6", "0x3FB0A0987C18BCFC", "0x3FB229752CBACEFE", "0x3FB57CA8AB6F4B59", "0x3FBBA01B6DF79363", "0x3FBADBAD15A68A62", "0x3FB952D06504785F", "0x3FB5FF9CE64FFC05", "0x3FAEB26BD1CE069F", "0x3FAFB854478F67F6", "0x3FB0A0987C18BCFC", "0x3FB229752CBACEFE", "0x3FB57CA8AB6F4B59", "0x3FBBA01B6DF79363", "0x3FBADBAD15A68A62", "0x3FBBA01B6DF79363", "0x3FB57CA8AB6F4B59", "0x3FB229752CBACEFE", "0x3FB0A0987C18BCFC", "0x3FAFB854478F67F6", "0x3FAEB26BD1CE069F", "0x3FB5FF9CE64FFC05", "0x3FB952D06504785F", "0x3FBADBAD15A68A62", "0x3FBBA01B6DF79363", "0x3FBADBAD15A68A62", "0x3FBBA01B6DF79363", "0x3FB57CA8AB6F4B59", "0x3FB229752CBACEFE", "0x3FB0A0987C18BCFC", "0x3FAFB854478F67F6", "0x3FAEB26BD1CE069F", "0x3FB5FF9CE64FFC05", "0x3FB952D06504785F", "0x3FBADBAD15A68A62", "0x3FBBA01B6DF79363", "0x3FAFB854478F67F6", "0x3FAEB26BD1CE069F", "0x3FB5FF9CE64FFC05", "0x3FB952D06504785F", "0x3FBBA01B6DF79363", "0x3FB57CA8AB6F4B59", "0x3FB229752CBACEFE", "0x3FB0A0987C18BCFC", "0x3FAFB854478F67F6", "0x3FAEB26BD1CE069F", "0x3FB5FF9CE64FFC05", "0x3FB952D06504785F", "0x3FB0A0987C18BCFC", "0x3FAFB854478F67F6", "0x3FAEB26BD1CE069F", "0x3FB5FF9CE64FFC05", "0x3FB952D06504785F", "0x3FBADBAD15A68A62", "0x3FBBA01B6DF79363", "0x3FB57CA8AB6F4B59", "0x3FB229752CBACEFE", "0x3FB0A0987C18BCFC", "0x3FAFB854478F67F6", }.Select(x => Scalar.ParseFromUnknownFormat(x)).ToArray(); Scalar cumulativeAngle = 0; List points = new List(); List holePoints = new List(); for (int i = 0; i < radiiOut.Length; ++i) { points.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, radiiOut[i])); holePoints.Add(Vector.BuildFromAngleMagnitude(cumulativeAngle, 0.0090000000000000011)); cumulativeAngle += Math.PI * 2.0 / radiiOut.Length; } var botBody = new PerforatedPolygon(new SimplePolygon(points), new[] { new SimplePolygon(holePoints) }); var botDrawable = new Blacklight.Core.Drawables.Polygon(botBody); } } }