Пример #1
0
    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);
    }
Пример #2
0
 public SegmentCrossing(int index1, int index2, TrailCrossing trailCrossing)
 {
     Index1        = index1;
     Index2        = index2;
     TrailCrossing = trailCrossing;
 }