/// <summary> /// Adds an intersection into the list, if it isn't already there. /// The input segmentIndex and dist are expected to be normalized. /// </summary> /// <param name="intPt"></param> /// <param name="segmentIndex"></param> /// <returns>The SegmentIntersection found or added.</returns> public SegmentNode Add(ICoordinate intPt, int segmentIndex) { SegmentNode eiNew = new SegmentNode(edge, intPt, segmentIndex, edge.GetSegmentOctant(segmentIndex)); SegmentNode ei = (SegmentNode)nodeMap[eiNew]; if (ei != null) { // debugging sanity check Assert.IsTrue(ei.Coordinate.Equals2D(intPt), "Found equal nodes with different coordinates"); return(ei); } // node does not exist, so create it nodeMap.Add(eiNew, eiNew); return(eiNew); }