2

PostScript で一連の接続された線を素敵な連続曲線としてレンダリングする方法を探しています。レンダリングされた曲線がすべてのポイントを通過することが重要です。

curveto曲線を描画する唯一の利用可能な方法のようですが、その機能にはベジェ制御点が必要ですが、私は持っていません。

それで、私のポイントのコントロールポイントを計算してcurveto使用できる方法はありますか? できれば追記で。

参考までに、私は以前に .NET でGraphicsPath.addCurve(float[])を使用しました。これは、3 次ベジエ コントロール ポイントをレンダリングする前に内部的に変換します。追記で似たようなものを探しています。

(スプライン関数を使用してポイントを補間し、多数の個々の線を使用してレンダリングすることができます。問題ないように見えますが、実際には優れたソリューションではありません)

4

2 に答える 2

2

スプライン関数を使用して点を内挿すると、曲線部分の 3 次方程式が得られます。そして、それらをバーンスタイン多項式基底に変換して、対応するベジエ曲線の制御点を見つけることができます。

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 の同一の累乗の係数を等しくし、3 次方程式係数 A、B、C、D を通じて P(i) を表現します。

 p0 = D
 p1 = D + C/3
 p2 = D + C * 2/3 + B/3
 p3 = D + C + B + A
于 2012-06-12T16:53:34.990 に答える
1

この問題は、こちらのコード例(「ベジエ プリミティブを使用して 2D ポイントのセットを通る滑らかな曲線を描く」) を使用して解決しました。

于 2012-06-13T13:11:33.957 に答える