public static PointParam ClosestPointOn(this ICurve curve, Vector3 v) => curve.ClosestPointOn(v.X, v.Y, v.Z);
 public static PointDirection3 ClosestPointTangentOn(this ICurve curve, Vector3 v) => curve.PointTangentAt(curve.ClosestPointOn(v.X, v.Y, v.Z).T);
 public static double PointAtDistanceFrom(this ICurve c, Vector3 p0, double distance)
 {
     var ptT0 = c.ClosestPointOn(p0);
     return PointAtDistanceFrom(c, ptT0.T, distance);
 }