Exemple #1
0
        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]);
            }
        }
Exemple #4
0
        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]);
        }