de Casteljauの作図 · バーンスタイン重み

ベジェ曲線

多角形の各辺で同じ割合tの位置に点を取り、それらを結んだ短い多角形でも同じことを繰り返すと、最後に1点が残ります。tを0から1まで動かしたとき、この点が描くのがベジェ曲線です。

この可視化で扱うベジェ曲線

n次のベジェ曲線は、n + 1個の制御点P0,…,PnP_0, \dots, P_nで決まります。2点なら線分、3点なら2次曲線、4点なら描画ソフトで使う3次曲線です。曲線上の点B(t)B(t)(図の赤い点)は、制御多角形の各辺を割合tで分ける操作を繰り返して求めます。ここでは点を動かし、tを0から1まで変化させながら、作図の線分が糸のような跡を残して曲線を浮かび上がらせる様子を見られます。

作図は、現在のtにおける各段階の多角形を表示します。段階が進むごとに辺が1本ずつ減ります。走査はtを0から1まで動かし、等間隔のtで作図の糸を残します。色もtによって変わります。曲線そのものは細い線です。

作図を式にすると、重み付き平均を段階的に計算するde Casteljauのアルゴリズムになります。

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

この段階的な計算を展開すると、各制御点の係数は、n個の因子の積をいくつか足したものになります。各因子は1 − tかtです。PiP_iに対する積にはtがちょうどi個含まれ、そのような積が(ni)\binom{n}{i}個あるので、

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

これらの重みはバーンスタイン多項式で、小さなグラフに描かれています。0≤t≤10 \le t \le 1ではどの重みも負にならず、和は1です。そのためB(t)B(t)は制御点の加重平均となり、曲線は制御点の凸包から外へ出ません。1つの点PiP_iをベクトルΔだけ動かすと、曲線上の各点はbi,n(t) Δb_{i,n}(t)\,\Deltaだけ動き、t=i/nt = i/n付近で最も大きく動きます。その部分が、制御点に最も近い部分とは限りません。

t = 0ではどの段階もP0P_0から始まるため、B(0)=P0B(0) = P_0です。同様にB(1)=PnB(1) = P_nも成り立ちます。曲線は両端の点を通り、通常はほかの点を通りません。作図の最後の段階は1本の線分で、それが1点に縮まない限り、曲線の接線上にあります。

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

したがって曲線はP0P_0からP1P_1の方向へ出発し、Pn−1P_{n-1}の方向からPnP_nへ到着します。ただし、その端にある2点が重なる場合は例外です。このため、描画ソフトでは3次曲線の中間の2点を、両端から伸びるハンドルとして表示します。

最後の段階に残る糸は、1点に縮んでいなければ、その上にある曲線の点で曲線に接します。1段階下の糸も、より少ない隣り合う点で作られる曲線に同じように接します。そのため、糸の各グループがそれぞれの曲線を浮かび上がらせ、多角形の内側に低い次数の曲線が見えます。輪郭を描くといっても、一方から包むわけではありません。変曲点では曲線が自分の接線を横切り、糸は両側に広がります。3つの制御点が一直線上にないとき、2次曲線の糸は、2列の直線状に並べた釘の間に糸を掛けるストリングアートに対応し、そこに現れる曲線は放物線です。

t = sでの作図は、曲線を2つに分けることもできます。各段階の最初の点が0からsまでの部分の制御点に、最後の点がsから1までの部分の制御点になります。分割はこの2組を表示します。半分への分割を繰り返すと、各部分の制御多角形は曲線に近づきます。次数を上げるは逆の進め方です。制御点が1つ増え、曲線は変わらず、多角形が曲線に近づきます。一方、図を押して点を追加すると、曲線そのものが変わります。

シトロエンのポール・ド・カステリョは1959年にこの作図法を考案しました。ルノーのピエール・ベジェは独立に同じ曲線にたどり着き、1960年代に発表しました。

注目する点

  • tを等間隔で進めても、曲線に沿って進む距離が等しくなるとは限りません。
  • 最も色が濃いところが曲線なのではありません。そこは糸が最も多く重なる場所で、曲線から少しずれていることがあります。

関連項目