Set <CdtEdge> GetCdtEdgesCrossedByPath(Polyline polyline)
        {
            if (cdt == null)
            {
                return(null);
            }
            var ret = new CdtGeneralPolylineTracer(polyline.PolylinePoints, siteHierarchy, triangleHierarchy).GetCrossedEdges();

            return(ret);
        }
        Set <CdtEdge> GetChannelEdgeOfCollapsedA(Polyline a, PolylinePoint aFirstP, PolylinePoint abFirstP,
                                                 PolylinePoint aLastP, PolylinePoint abLastP, bool aFirstBeforeALastOnB)
        {
            if (cdt == null)
            {
                return(null);
            }
            var tracer = new CdtGeneralPolylineTracer(CollapsedPolylinePolylinePoints(a, aFirstP, abFirstP, aLastP,
                                                                                      abLastP,
                                                                                      aFirstBeforeALastOnB),
                                                      siteHierarchy, triangleHierarchy);

            return(tracer.GetCrossedEdges());
        }
 Set<CdtEdge> GetChannelEdgeOfCollapsedA(Polyline a, PolylinePoint aFirstP, PolylinePoint abFirstP,
                                         PolylinePoint aLastP, PolylinePoint abLastP, bool aFirstBeforeALastOnB) {
     if (cdt == null) return null;
     var tracer = new CdtGeneralPolylineTracer(CollapsedPolylinePolylinePoints(a, aFirstP, abFirstP, aLastP,
                                                                               abLastP,
                                                                               aFirstBeforeALastOnB),
                                               siteHierarchy, triangleHierarchy);
     return tracer.GetCrossedEdges();
 }
 Set<CdtEdge> GetCdtEdgesCrossedByPath(Polyline polyline) {
     if (cdt == null) return null;
     var ret = new CdtGeneralPolylineTracer(polyline.PolylinePoints, siteHierarchy, triangleHierarchy).GetCrossedEdges();
     return ret;
 }