Denote a point in the plane by z = (x; y) and a polynomial of nth degree in z by f (z) = Pi;j*0;i+j^n aij xi yj. Denote Z(f ) the set of points for which f (z) = 0. It is the 2D curve represented by f (z). In this paper, we present a new approach to fitting 2D curves to data in the plane (or 3D surfaces to range data) which has significant advantages over presently known methods. It requires considerably less computation and the resulting curve can be forced to lie close to the data set at prescribed points provided that there is an nth degree polynomial that can reasonably approximate the data. Linear Programming is used to do the fitting. The approach can incorporate a variety of distance measures and global geometric constraints.