private static PolygonCrossing CreatePolygonCrossing( SegmentIntersectionOperation.PointResult pointResult, Segment2Data segmentDataA, Segment2Data segmentDataB ) { Contract.Ensures(Contract.Result <PolygonCrossing>() != null); Contract.Assume(segmentDataA.RingIndex >= 0); Contract.Assume(segmentDataA.SegmentIndex >= 0); Contract.Assume(segmentDataB.RingIndex >= 0); Contract.Assume(segmentDataB.SegmentIndex >= 0); return(new PolygonCrossing( pointResult.P, new PolygonBoundaryLocation(segmentDataA.RingIndex, segmentDataA.SegmentIndex, pointResult.S), new PolygonBoundaryLocation(segmentDataB.RingIndex, segmentDataB.SegmentIndex, pointResult.T) )); }
private static bool IsNotHead(SegmentIntersectionOperation.PointResult pointResult) { return(0 == ((pointResult.TypeA | pointResult.TypeB) & SegmentIntersectionOperation.SegmentIntersectionType.Head)); }