public ICurve Convert() { if (P3.LengthSquared() > 0) { return(new CubicCurve(P0, P1, P2, P3)); } if (P2.LengthSquared() > 0) { return(new QuadraticCurve(P0, P1, P2)); } return(new LinearCurve(P0, P1)); }