public static Curve InterpolatePointsToCurve
            (this IModeler modeler
            , List <Vector3> points
            , double chordTolerance
            , bool simplify    = true
            , bool closedCurve = false)
        {
            points = CurveExtensions.FilterOutShortLines(points, 1e-5).ToList();

            if (closedCurve)
            {
                points.Add(points.First());
            }

            var lines = points
                        .Buffer(2, 1)
                        .Where(b => b.Count == 2)
                        .Select(ps => modeler.CreateTrimmedLine(ps[0], ps[1]))
                        .Cast <ICurve>()
                        .ToArray();

            var curve = modeler.MergeCurves(lines);

            if (simplify)
            {
                curve = curve.SimplifyBCurve(chordTolerance);
            }
            return(curve);
        }