示例#1
0
        private static bool CutCurveHullBuffer([NotNull] SegmentProxy segment,
                                               [NotNull] SegmentProxy hull,
                                               bool is3D, double r2,
                                               [NotNull] out IList <double[]> limits,
                                               out NearSegment hullStartNear,
                                               out NearSegment hullEndNear,
                                               out bool coincident)
        {
            coincident = GetCoincident(segment, hull, is3D, out hullStartNear, out hullEndNear);
            if (r2 > 0)
            {
                IPolygon buffer = hull.CreateBuffer(Math.Sqrt(r2));
                limits = SegmentUtils.GetLimits(segment, buffer);
            }
            else if (coincident)
            {
                limits = new List <double[]>();
                limits.Add(new double[] { 0, 1 });
            }
            else
            {
                limits = new List <double[]>();
            }

            return(limits.Count > 0);
        }