public void FromSegmentsTest()
        {
            var ret = BoundingBoxComputer.FromSegments(m_segments);

            Assert.IsTrue(CmpRect(expRect, ret));
            ret = BoundingBoxComputer.FromSegments(m_segments, 1f);
            Assert.IsTrue(CmpRect(expRectMargin, ret));

            Assert.AreEqual(BoundingBoxComputer.FromSegments(new List <LineSegment>()), new Rect());
        }
Exemplo n.º 2
0
        public TrapezoidalDecomposition(IEnumerable <CountryLineSegment> a_segments)
        {
            Segments       = new List <CountryLineSegment>(a_segments.ToArray());
            BoundingBox    = RectToTrapezoid(BoundingBoxComputer.FromSegments(a_segments.Select(e => e.Segment).ToList()));
            TrapezoidalMap = new TrapezoidalMap(BoundingBox);
            SearchGraph    = new SearchGraph(BoundingBox);

            Segments.Shuffle();

            foreach (CountryLineSegment seg in Segments)
            {
                List <Node> oldTrapezoids = FollowSegment(seg);

                foreach (Node n in oldTrapezoids)
                {
                    TrapezoidalMap.Trapezoids.Remove((Trapezoid)n.Value);
                }

                List <Trapezoid> newTrapezoids = SearchGraph.Update(ref oldTrapezoids, seg);
                TrapezoidalMap.AddTrapezoids(newTrapezoids);
            }
        }