Loading [MathJax]/jax/output/HTML-CSS/jax.js

ベジェ曲線の定義と性質

ベジェ曲線とは

ベジェ曲線に関する定義を説明します。

バーンスタイン基底関数

定義
バーンスタイン基底関数JN,i(t)
JN,i(t)=NCiti(1t)Ni
で定める

ベジェ曲線

定義
ベジェ曲線とは、
Nを自然数として、N+1 個の異なる点P0,P1,,PNから定まる曲線
OP(t)=Nk=0JN,k(t)OPk=Nk=0NCktk(1t)NkOPk(0t1)
のことをいう。また、このようなベジェ曲線の表現をバーンスタイン表現とよぶ。

制御点

定義
P0,P1,,PNのことを制御点とよぶ

0NCktk(1t)Nk(0kN)であり、二項定理からNk=0NCktk(1t)Nk=1なので、
ベジェ曲線は重心のように「点たちの加重平均」のなす曲線と捉えることができますね。

ベジェ曲線の性質

性質1

ベジェ曲線の端点はP0,PNと一致する

証明
JN,i(0)={1(i=0)0(i0)より
OP(0)=Nk=0JN,k(0)OPk=OP0
よってP(0)=P0。同様にしてP(1)=PNもわかる。
したがってベジェ曲線の端点はP0,PNと一致する

性質2

ddtOP(t)=NNk=0(JN1,k1(t)JN1,k(t))OPk(ただし、JN1,1(t)=JN1,N(t)=0とする)
とくに
ddtOP(t)|t=0=N(OP1OP0)=NP0P1ddtOP(t)|t=1=N(OPNOPN1)=NPN1PN

証明
ddtOP(t)=Nk=0ddtJN,k(t)OPk=Nk=0ddtNCktk(1t)NkOPk=Nk=0{kNCktk1(1t)Nk(Nk)NCNktk(1t)Nk1}OPk二項係数の公式rnCr=nn1Cr1を用いると、
kNCk=NN1Ck1,(Nk)NCNk=NN1CNk1だからddtOP(t)=Nk=0{NN1Ck1tk1(1t)NkNN1CNk1tk(1t)Nk1}OPk=NNk=0{N1Ck1tk1(1t)NkN1Cktk(1t)Nk1}OPk=NNk=0(JN1,k1(t)JN1,k(t))OPk

性質3(ド・カステリョのアルゴリズム)

ベクトルOPji(t)を以下の漸化式で定める。
OPji(t)={OPi(i=0,1,,N,j=0)(1t)OPj1i(t)+tOPj1i+1(t)(i=0,1,,Nj,j=1,2,,N)このとき、
OPji(t)=jk=0Jj,k(t)OPi+k(i=0,1,,Nj,j=0,1,,N)
とくに i=0,j=Nのとき、
OPN0(t)=Nk=0JN,k(t)OPk=OP(t)
つまり、バーンスタイン表現によるベジェ曲線の定義とド・カステリョのアルゴリズムによるベジェ曲線の定義は同値である

制御点たちを順にt:1tに内分し、その内分点たちをさらに順にt:1tに内分し、…というのを繰り返していくイメージですね。それでは証明に入っていきます

証明
jに対して数学的帰納法で示す。
j=0のとき、
0k=0J0,k(t)OPi+k=OPi=OP0i(t)より、j=0のとき成り立つ。
j=n のとき成り立っていると仮定する。
このとき、OPni(t)=nk=0Jn,k(t)OPi+k(i=0,1,,Nn)
j=n+1 のとき、
OPn+1i(t)=(1t)OPni(t)+tOPni+1(t)=(1t)nk=0Jn,k(t)OPi+k+tnk=0Jn,k(t)OPi+1+k=(1t)nk=0Jn,k(t)OPi+k+tn+1k=1Jn,k1(t)OPi+k=(1t)nk=1Jn,k(t)OPi+k+(1t)Jn,0(t)OPi+tnk=1Jn,k1(t)OPi+k+tJn,n(t)OPi+n+1=nk=1{(1t)Jn,k(t)+tJn,k1(t)}OPi+k+(1t)n+1OPi+tn+1OPi+n+1
ここで、
(1t)Jn,k(t)+tJn,k1(t)=(1t)nCktk(1t)nk+tnCk1tk1(1t)nk+1=(nCk+nCk1)tk(1t)nk+1パスカルの法則nCr=n1Cr+n1Cr1を用いれば、nCk+nCk1=n+1Ckより、(1t)Jn,k(t)+tJn,k1(t)=n+1Cktk(1t)n+1k=Jn+1,k(t)
より、
OPn+1i(t)=nk=1Jn+1,k(t)OPi+k+(1t)n+1OPi+tn+1OPi+n+1=n+1k=0Jn+1,k(t)OPi+k(i=0,1,,Nn1)
よってj=n+1のときも成り立つ。
以上より、数学的帰納法からOPji(t)=jk=0Jj,k(t)OPi+k(i=0,1,,Nj,j=0,1,,N)は成り立つ。

タイトルとURLをコピーしました