TrailCrossing TrailCrossingFor(Puff p1, Puff q1) { TrailCrossing trailCrossing = null; // Check if a trail crossing already exists for this segment crossing if (segmentCrossings.ContainsKey(p1.Index - 1)) { if (Math.Abs(segmentCrossings[p1.Index - 1].Index2 - q1.Index) <= 1) { trailCrossing = segmentCrossings[p1.Index - 1].TrailCrossing; } } if (segmentCrossings.ContainsKey(q1.Index - 1)) { if (Math.Abs(segmentCrossings[q1.Index - 1].Index1 - p1.Index) <= 1) { if (trailCrossing != null) { Debug.Assert(segmentCrossings[q1.Index - 1].TrailCrossing == trailCrossing); } else { trailCrossing = segmentCrossings[q1.Index - 1].TrailCrossing; } } } if (trailCrossing == null) { trailCrossing = new TrailCrossing(++crossingCount); trailCrossings.Add(trailCrossing); } return(trailCrossing); }
public SegmentCrossing(int index1, int index2, TrailCrossing trailCrossing) { Index1 = index1; Index2 = index2; TrailCrossing = trailCrossing; }