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()); }
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); } }