ベジェ曲線の定義と4つの性質

ベジェ曲線

平面上における (N+1)(N+1) 個の点 P0,P1,,PNP_0,P_1,\dots,P_{N} から以下の式で定まる曲線をベジェ曲線と呼ぶ。

pundefined(t)=k=0NNCktk(1t)Nkpkundefined\overrightarrow{p}(t)=\displaystyle\sum_{k=0}^{N}{}_N\mathrm{C}_kt^k(1-t)^{N-k}\overrightarrow{p_k}

ただし,tt は実数で 0t10\leq t\leq 1 の範囲を動く。

ベジェ曲線

図は N=3N=3 の例です。式の見た目は少し複雑ですが,ひとつひとつ見ていけば難しくありません。

ベジェ曲線の式の意味

pundefined(t)=k=0NNCktk(1t)Nkpkundefined\overrightarrow{p}(t)=\displaystyle\sum_{k=0}^{N}{}_N\mathrm{C}_kt^k(1-t)^{N-k}\overrightarrow{p_k}

について,

  • pkundefined\overrightarrow{p_k}PkP_k の座標(位置ベクトル)です。
  • pundefined(t)\overrightarrow{p}(t)NN 個の点の座標の重みつき和で定まる点です。tt0t10\leq t\leq 1 の範囲で動かしたときに pundefined(t)\overrightarrow{p}(t) が描く曲線がベジェ曲線です。
  • 重みは NCktk(1t)Nk{}_N\mathrm{C}_kt^k(1-t)^{N-k} です。NCk{}_N\mathrm{C}_k は二項係数です。
  • (N+1)(N+1) 個の点 P0,P1,,PNP_0,P_1,\dots,P_{N} のことを制御点と呼びます。

N=1N=1 の場合の式を書き下してみると理解が深まります。

N=1 の場合

ベジェ曲線を定める式は pundefined(t)=(1t)p0undefined+tp1undefined\overrightarrow{p}(t)=(1-t)\overrightarrow{p_0}+t\overrightarrow{p_1} となる。これは線分 P0P1P_0P_1 を表す。

つまり,ベジェ曲線は「与えられた2点を結ぶ線分」を一般化したものと言えます。

ベジェ曲線の端点

ベジェ曲線の性質1

ベジェ曲線の端点は,(N+1)(N+1) 個の点のうち「最初の点」と「最後の点」

つまり,ベジェ曲線は P0P_0PNP_N を結ぶ曲線です。実際,

  • t=0t=0 のとき,k=0k=0 の項のみが残り pundefined(t)=p0undefined\overrightarrow{p}(t)=\overrightarrow{p_0} となります。
  • t=1t=1 のとき,k=Nk=N の項のみが残り pundefined(t)=pNundefined\overrightarrow{p}(t)=\overrightarrow{p_N} となります。

ベジェ曲線の端点で進む向き

ベジェ曲線の性質2

ベジェ曲線の P0P_0 における接線は P0P1P_0P_1 方向。
PNP_N における接線は PN1PNP_{N-1}P_N 方向。

証明

微分すると,
dpundefined(t)dt=k=1NNCkktk1(1t)Nkpkundefinedk=0N1NCk(Nk)tk(1t)Nk1pkundefined\dfrac{d\overrightarrow{p}(t)}{dt}\\ =\displaystyle\sum_{k=1}^{N}{}_N\mathrm{C}_kkt^{k-1}(1-t)^{N-k}\overrightarrow{p_k}\\ -\displaystyle\sum_{k=0}^{N-1}{}_N\mathrm{C}_k(N-k)t^k(1-t)^{N-k-1}\overrightarrow{p_k}

  • t=0t=0 を代入すると,Np1undefinedNp0undefinedN\overrightarrow{p_1}-N\overrightarrow{p_0} なので,P0P_0 における接線ベクトルは P0P1P_0P_1 と平行。
  • t=1t=1 を代入すると,NpNundefinedNpN1undefinedN\overrightarrow{p_N}-N\overrightarrow{p_{N-1}} なので,PNP_N における接線ベクトルは PN1PNP_{N-1}P_N と平行。

以上の性質をふまえて,N=3N=3 の場合のベジェ曲線の例を見てみましょう。 ベジェ曲線 P0P_0 から出発して P1P_1 の向きに進み,P2P_2 の向きから P3P_3 に到着します。

ベジェ曲線の重み

ベジェ曲線の性質3

ベジェ曲線は制御点たちの凸包に含まれる。

凸包の意味については,凸包に関するカラテオドリの定理とその証明 を参照してください。

実際,さきほどの例の図でも赤い曲線が制御点の凸包に含まれています。

証明

ベジェ曲線の式に現れる重みを WN,k(t)=NCktk(1t)NkW_{N,k}(t)={}_N\mathrm{C}_kt^k(1-t)^{N-k} とおくと,二項定理より,
k=0NWN,k(t)={t+(1t)}N=1\displaystyle\sum_{k=0}^NW_{N,k}(t)=\{t+(1-t)\}^N=1

つまり,重みの和が 11 で非負なので,ベジェ曲線上の点は制御点たちの凸結合で表される。

なお,tt の関数 WN,k(t)=NCktk(1t)NkW_{N,k}(t)={}_N\mathrm{C}_kt^k(1-t)^{N-k} をバーンスタイン基底関数と言うことがあります。

内分を繰り返す

ベジェ曲線の性質4

pundefined(t)\overrightarrow{p}(t) は,制御点 P0,P1,,PNP_0,P_1,\dots,P_{N} を 「t:1tt:1-t に繰り返し内分」していくと得られる。

t:1tt:1-t に繰り返し内分」は厳密な表現ではありませんが,以下の例で理解してください。

N=2N=2 の場合を考える。

  • P0P1,P1P2,P2P3P_0P_1,P_1P_2,P_2P_3t:1tt:1-t にそれぞれ内分する点は,
    a0undefined=(1t)p0undefined+tp1undefined\overrightarrow{a_0}=(1-t)\overrightarrow{p_0}+t\overrightarrow{p_1}
    a1undefined=(1t)p1undefined+tp2undefined\overrightarrow{a_1}=(1-t)\overrightarrow{p_1}+t\overrightarrow{p_2}
    a2undefined=(1t)p2undefined+tp3undefined\overrightarrow{a_2}=(1-t)\overrightarrow{p_2}+t\overrightarrow{p_3}

  • 得られた3つの点 A0,A1,A2A_0,A_1,A_2 について,A0A1,A1A2A_0A_1,A_1A_2t:1tt:1-t にそれぞれ内分する点は,
    b0undefined=(1t)a0undefined+ta1undefined=(1t)2p0undefined+2(1t)tp1undefined+t2p2undefined\overrightarrow{b_0}=(1-t)\overrightarrow{a_0}+t\overrightarrow{a_1}\\ =(1-t)^2\overrightarrow{p_0}+2(1-t)t\overrightarrow{p_1}+t^2\overrightarrow{p_2}
    b1undefined=(1t)a1undefined+ta2undefined=(1t)2p1undefined+2(1t)tp2undefined+t2p3undefined\overrightarrow{b_1}=(1-t)\overrightarrow{a_1}+t\overrightarrow{a_2}\\ =(1-t)^2\overrightarrow{p_1}+2(1-t)t\overrightarrow{p_2}+t^2\overrightarrow{p_3}

  • 得られた2つの点 B0,B1B_0,B_1 について,B0B1B_0B_1t:1tt:1-t に内分する点は,
    (1t)b0undefined+tb1undefined=(1t)3p0undefined+3(1t)2tp1undefined+3(1t)t2p2undefined+t3p3undefined(1-t)\overrightarrow{b_0}+t\overrightarrow{b_1}\\ =(1-t)^3\overrightarrow{p_0}+3(1-t)^2t\overrightarrow{p_1}+3(1-t)t^2\overrightarrow{p_2}+t^3\overrightarrow{p_3}

これは pundefined(t)\overrightarrow{p}(t) の定義と一致する。

二項定理,内分点の公式,合成関数の微分など高校数学の道具でいろいろな性質を導出できるのが楽しいです。