太さの変わるBezier曲線の生成 - その6 [考え中 - 太さの変わるBezier曲線]
Photoshopで描いたような、タブレットによるブラシの線のようなBezier曲線を生成するソフトを作りたいという話。ここ何日かBezier曲線の数学のディテールをしょぼしょぼと追いかけている。
Bezier pathの分割
図-9のように(これはIllustratorの「パスファインダ」で分割したときのスクリーンショット)、式-5で表される3次のBezier曲線を途中の任意の位置で分割して二つのBezier曲線で表すことを考えてみる。
自明ではないけど3次曲線を分割しても3次曲線なのでBezierで表現できるはずである。逆に任意の二つの3次のBezier曲線を一つの3次のBezier曲線につなぐことは、微係数を結合点で一致させたとしても一般にはできないことは明らかである(次数が足りなくなるような二つの曲線を選ぶことができることから)。ということで、ふたつに分割することを考えてみる。やり方は簡単。
もとのBezier曲線をP(t)として媒介変数tの範囲で[0,α]と[α,1]に分割する。最初の曲線をPs(t)、あとをPe(t)として
とする。これらの曲線はそれぞれ に一致しているとする。上の式を両辺展開して、tnの係数比較をすると および である。うわあ、あってるかなあ。これを解くと
および となる。当然Ps(t)の始点とPe(t)の終点はそれぞれP(t)と一致しているはずだし、Bs3 = Be0になっているのであってそう。対称になってるし。制御点が端点から離れるに従って、端点からの制御点の個数が次数となるBezier曲線の式と同じ形になっている。これって、当たり前?
ということで、これは単に多項式の代数の問題で簡単だった。めんどくさいけど。
今後使うBezier曲線のノーテーション
以上は一般的なBezier曲線の表し方だけど、今後の便利のためにちょっとだけ書き方を変えておく。 多数の3次のBezier曲線を考える。n番目の3次Bezier曲線Pn(t)の始点と終点をBnとBn+1とする。n番目のBezier曲線Pn(t)の終点Bn+1番目のBezier曲線Pn+1(t)の始点になっている。中間の制御点をB-nとB+nとする。
つまり、図-10のように
と書き換えることにする。
コメント 0