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); }