ベジェ曲線とは
ベジェ曲線に関する定義を説明します。
バーンスタイン基底関数
定義
バーンスタイン基底関数JN,i(t)を
JN,i(t)=NCiti(1−t)N−i
で定める
ベジェ曲線
定義
ベジェ曲線とは、
Nを自然数として、N+1 個の異なる点P0,P1,…,PNから定まる曲線
→OP(t)=N∑k=0JN,k(t)→OPk=N∑k=0NCktk(1−t)N−k→OPk(0≤t≤1)
のことをいう。また、このようなベジェ曲線の表現をバーンスタイン表現とよぶ。
制御点
定義
P0,P1,…,PNのことを制御点とよぶ
0≤NCktk(1−t)N−k(0≤k≤N)であり、二項定理からN∑k=0NCktk(1−t)N−k=1なので、
ベジェ曲線は重心のように「点たちの加重平均」のなす曲線と捉えることができますね。
ベジェ曲線の性質
性質1
ベジェ曲線の端点はP0,PNと一致する
証明
JN,i(0)={1(i=0)0(i≠0)より
→OP(0)=N∑k=0JN,k(0)→OPk=→OP0
よってP(0)=P0。同様にしてP(1)=PNもわかる。
したがってベジェ曲線の端点はP0,PNと一致する
性質2
ddt→OP(t)=NN∑k=0(JN−1,k−1(t)−JN−1,k(t))→OPk(ただし、JN−1,−1(t)=JN−1,N(t)=0とする)
とくに
ddt→OP(t)|t=0=N(→OP1−→OP0)=N→P0P1ddt→OP(t)|t=1=N(→OPN−→OPN−1)=N→PN−1PN
証明
ddt→OP(t)=N∑k=0ddtJN,k(t)→OPk=N∑k=0ddtNCktk(1−t)N−k→OPk=N∑k=0{kNCktk−1(1−t)N−k−(N−k)NCN−ktk(1−t)N−k−1}→OPk二項係数の公式rnCr=nn−1Cr−1を用いると、
kNCk=NN−1Ck−1,(N−k)NCN−k=NN−1CN−k−1だからddt→OP(t)=N∑k=0{NN−1Ck−1tk−1(1−t)N−k−NN−1CN−k−1tk(1−t)N−k−1}→OPk=NN∑k=0{N−1Ck−1tk−1(1−t)N−k−N−1Cktk(1−t)N−k−1}→OPk=NN∑k=0(JN−1,k−1(t)−JN−1,k(t))→OPk
性質3(ド・カステリョのアルゴリズム)
ベクトル→OPji(t)を以下の漸化式で定める。
→OPji(t)={→OPi(i=0,1,…,N,j=0)(1−t)→OPj−1i(t)+t→OPj−1i+1(t)(i=0,1,…,N−j,j=1,2,…,N)このとき、
→OPji(t)=j∑k=0Jj,k(t)→OPi+k(i=0,1,…,N−j,j=0,1,…,N)
とくに i=0,j=Nのとき、
→OPN0(t)=N∑k=0JN,k(t)→OPk=→OP(t)
つまり、バーンスタイン表現によるベジェ曲線の定義とド・カステリョのアルゴリズムによるベジェ曲線の定義は同値である
制御点たちを順にt:1−tに内分し、その内分点たちをさらに順にt:1−tに内分し、…というのを繰り返していくイメージですね。それでは証明に入っていきます
証明
各jに対して数学的帰納法で示す。
j=0のとき、
0∑k=0J0,k(t)→OPi+k=→OPi=→OP0i(t)より、j=0のとき成り立つ。
j=n のとき成り立っていると仮定する。
このとき、→OPni(t)=n∑k=0Jn,k(t)→OPi+k(i=0,1,…,N−n)
j=n+1 のとき、
→OPn+1i(t)=(1−t)→OPni(t)+t→OPni+1(t)=(1−t)n∑k=0Jn,k(t)→OPi+k+tn∑k=0Jn,k(t)→OPi+1+k=(1−t)n∑k=0Jn,k(t)→OPi+k+tn+1∑k=1Jn,k−1(t)→OPi+k=(1−t)n∑k=1Jn,k(t)→OPi+k+(1−t)Jn,0(t)→OPi+tn∑k=1Jn,k−1(t)→OPi+k+tJn,n(t)→OPi+n+1=n∑k=1{(1−t)Jn,k(t)+tJn,k−1(t)}→OPi+k+(1−t)n+1→OPi+tn+1→OPi+n+1
ここで、
(1−t)Jn,k(t)+tJn,k−1(t)=(1−t)nCktk(1−t)n−k+tnCk−1tk−1(1−t)n−k+1=(nCk+nCk−1)tk(1−t)n−k+1パスカルの法則nCr=n−1Cr+n−1Cr−1を用いれば、nCk+nCk−1=n+1Ckより、(1−t)Jn,k(t)+tJn,k−1(t)=n+1Cktk(1−t)n+1−k=Jn+1,k(t)
より、
→OPn+1i(t)=n∑k=1Jn+1,k(t)→OPi+k+(1−t)n+1→OPi+tn+1→OPi+n+1=n+1∑k=0Jn+1,k(t)→OPi+k(i=0,1,…,N−n−1)
よってj=n+1のときも成り立つ。
以上より、数学的帰納法から→OPji(t)=j∑k=0Jj,k(t)→OPi+k(i=0,1,…,N−j,j=0,1,…,N)は成り立つ。