如何为PostScript curveto运算符生成控制点?

如何为PostScript curveto运算符生成控制点?,postscript,bezier,spline,Postscript,Bezier,Spline,我正在寻找一种方法,在postscript中将一组连接线渲染为一条漂亮的连续曲线。渲染曲线通过我的所有点非常重要 curveto似乎是绘制曲线的唯一可用方法,但该函数需要贝塞尔控制点,而我没有 那么,是否有一种方法可以计算我的点的控制点,以便使用curveto?最好是附言 作为参考,我以前在.NET中使用过,它在渲染立方体Bézier控制点之前在内部进行转换。我在后记中寻找类似的东西 (我可以使用样条函数插值点,然后使用很多条单独的线进行渲染。这看起来不错,但不是一个很好的解决方案)如果使用样条

我正在寻找一种方法,在postscript中将一组连接线渲染为一条漂亮的连续曲线。渲染曲线通过我的所有点非常重要

curveto
似乎是绘制曲线的唯一可用方法,但该函数需要贝塞尔控制点,而我没有

那么,是否有一种方法可以计算我的点的控制点,以便使用
curveto
?最好是附言

作为参考,我以前在.NET中使用过,它在渲染立方体Bézier控制点之前在内部进行转换。我在后记中寻找类似的东西


(我可以使用样条函数插值点,然后使用很多条单独的线进行渲染。这看起来不错,但不是一个很好的解决方案)

如果使用样条函数插值点,那么就有一些曲线分段的三次方程式。并将其转化为Bernstein多项式基,求出相应Bezier曲线的控制点

A*t^3+B*t^2+C*t+D=P0*(1-t)^3+P1*3*t*(1-t)^2+P2*3*t^2*(1-t)+P3*t^3

做一些代数-展开括号,相等于t的等幂系数,通过三次方程系数A,B,C,D来表示p(i)

 p0 = D
 p1 = D + C/3
 p2 = D + C * 2/3 + B/3
 p3 = D + C + B + A

我通过使用代码示例(“使用Bezier原语通过一组2D点绘制平滑曲线”)解决了这个问题