public void BuildPolygon(bool reverse) { var n1 = new Node("1", 0, 0); var n2 = new Node("2", 1, 1); var n3 = new Node("3", 0, 2); var n4 = new Node("4", 4, 2); var n5 = new Node("5", 3, 1); var n6 = new Node("6", 4, 0); var way = new Way("5", new[] { n1, n2, n3, n4, n5, n6, n1 }); if (reverse) { way.Nodes.Reverse(); } var ll = new[] { way }; var poly = PolygonFactory.BuildPolygons(ll, new System.Collections.Generic.HashSet <string>()); Assert.Single(poly); Assert.Contains(n1, poly[0].Nodes); Assert.Contains(n2, poly[0].Nodes); Assert.Contains(n3, poly[0].Nodes); Assert.Contains(n4, poly[0].Nodes); Assert.Contains(n5, poly[0].Nodes); Assert.Contains(n6, poly[0].Nodes); }
public void TwoPolygonsFromDiamonds() { var nodes = (new[] { 1, 2, 3, 4, 5, 6, 7 }).Select(x => new Node($"{x}", 0.0, 0.0)).ToArray(); var dummyNodes = (new[] { 1, 2, 3, 4, 5, 6, 7, 8 }).Select(x => new Node($"dummy{x}", 0.0, 0.0)).ToArray(); // sit in middle of wyas var ways = new Way[] { new Way("w1", new[] { nodes[0], dummyNodes[0], nodes[1] }), new Way("w2", new[] { nodes[1], dummyNodes[1], nodes[2] }), new Way("w3", new[] { nodes[2], dummyNodes[2], nodes[3] }), new Way("w4", new[] { nodes[3], dummyNodes[3], nodes[0] }), new Way("w5", new[] { nodes[2], dummyNodes[4], nodes[4] }), new Way("w6", new[] { nodes[4], dummyNodes[5], nodes[5] }), new Way("w6", new[] { nodes[5], dummyNodes[6], nodes[6] }), new Way("w7", new[] { nodes[6], dummyNodes[7], nodes[2] }), }; var polygons = PolygonFactory.BuildPolygons(ways, new System.Collections.Generic.HashSet <string>()); Assert.Equal(2, polygons.Count); ways[1].Nodes.Reverse(); ways[3].Nodes.Reverse(); var secondPolygons = PolygonFactory.BuildPolygons(ways, new System.Collections.Generic.HashSet <string>()); Assert.Equal(2, secondPolygons.Count); }
public void SinglePolygonFromDiamond() { GlobalSettings.RouteCleanerSettings.GetInstance().PolygonsShouldConsolidateStraightEdges = false; // all our nodes are in same spot in this test. var nodes = (new[] { 1, 2, 3, 4 }).Select(x => new Node($"{x}", 0.0, 0.0)).ToArray(); var dummyNodes = (new[] { 1, 2, 3, 4 }).Select(x => new Node($"dummy{x}", 0.0, 0.0)).ToArray(); // sit in middle of wyas var ways = new Way[] { new Way("w1", new[] { nodes[0], dummyNodes[0], nodes[1] }), new Way("w2", new[] { nodes[1], dummyNodes[1], nodes[2] }), new Way("w3", new[] { nodes[2], dummyNodes[2], nodes[3] }), new Way("w4", new[] { nodes[3], dummyNodes[3], nodes[0] }), }; var polygons = PolygonFactory.BuildPolygons(ways, new System.Collections.Generic.HashSet <string>()); var firstPolygon = polygons.Single(); ways[1].Nodes.Reverse(); ways[3].Nodes.Reverse(); var secondPolygons = PolygonFactory.BuildPolygons(ways, new System.Collections.Generic.HashSet <string>()); var secondPolygon = polygons.Single(); Assert.NotEmpty(firstPolygon.Nodes); for (var i = 0; i < firstPolygon.Nodes.Count; i++) { Assert.Equal(firstPolygon.Nodes[i], secondPolygon.Nodes[i]); } }
private Polygon GetSquare(double edgeLength, double center) { var n = new Node("2", center, center); return(PolygonFactory.BuildPolygons(new[] { new Way("1", new[] { n, new Node("3", center, center + edgeLength), new Node("4", center + edgeLength, center + edgeLength), new Node("5", center + edgeLength, center), n }) }, new System.Collections.Generic.HashSet <string>())[0]); }