public void Add(SweepLineInterval sweepInt) { SweepLineEvent insertEvent = new SweepLineEvent(sweepInt.Min, null, sweepInt); events.Add(insertEvent); events.Add(new SweepLineEvent(sweepInt.Max, insertEvent, sweepInt)); }
public SweepLineEvent(double x, SweepLineEvent insertEvent, SweepLineInterval sweepInt) { this.xValue = x; this.insertEvent = insertEvent; this.eventType = SweepLineEventType.INSERT; if (insertEvent != null) { this.eventType = SweepLineEventType.DELETE; } this.sweepInt = sweepInt; }
private void ProcessOverlaps(int start, int end, SweepLineInterval s0, ISweepLineOverlapAction action) { /// <summary> Since we might need to test for self-intersections, /// include current insert event object in list of event objects to test. /// Last index can be skipped, because it must be a Delete event. /// </summary> for (int i = start; i < end; i++) { SweepLineEvent ev = (SweepLineEvent)events[i]; if (ev.IsInsert) { SweepLineInterval s1 = ev.Interval; action.Overlap(s0, s1); nOverlaps++; } } }