ベジェ曲線の式

数式の表示を試してみたかっただけ

1. 2次のベジェ曲線

P1P2P3

として

P=(1t)2P1+2(1t)tP2+t2P3(1)0t1

例えば、2次元平面上の点

P1=(x1,y1)P2=(x2,y2)P3=(x3,y3)P=(x,y)

とすると x,y はそれぞれ

x=(1t)2x1+2(1t)tx2+t2x3y=(1t)2y1+2(1t)ty2+t2y3

となる。

2. 3次のベジェ曲線

P1P2P3P4
P=(1t)3P1+3(1t)2tP2+3(1t)t2P3+t3P4(2)0t1

例えば、2次元平面上の点

P1=(x1,y1)P2=(x2,y2)P3=(x3,y3)P4=(x4,y4)P=(x,y)

とすると x,y はそれぞれ

x=(1t)3x1+3(1t)2tx2+3(1t)t2x3+t3x4y=(1t)3y1+3(1t)2ty2+3(1t)t2y3+t3y4

となる。

3. 3点を通る2次のベジェ曲線を求める

P1P2P3Pa

のときに P1,Pa,P3 を通るベジェ曲線の制御点 P2 を求める。

ただし、 Pat=0.5 の時の通過点とする。

(1)の2次のベジェ曲線の式から t=0.5 のとき

Pa=0.25P1+0.5P2+0.25P30.5P2=Pa0.25(P1+P3)P2=2Pa0.5(P1+P3)(x2y2)=2(xaya)0.5[(x1y1)+(x3y3)]

4. 4点を通る3次のベジェ曲線を求める

2次元平面上の点

P1P2P3P4PaPb

のときに P1,Pa,Pb,P4 を通るベジェ曲線の制御点 P2,P3 を求める。

ただし、 Pat=1/3 の時の通過点、 Pbt=2/3 の時の通過点とする。

(2)の3次のベジェ曲線の式から t=1/3 のとき

Pa=(23)3P1+(23)2P2+2(13)2P3+(13)3P427Pa=8P1+12P2+6P3+P427Pa8P1P46=2P2+P3

Ca=27Pa8P1P46 とおいて

2P2+P3Ca=0(3)

とする。

t=2/3 のとき

Pb=(13)3P1+2(13)2P2+(23)2P3+(23)3P427Pb=P1+6P2+12P3+8P427PbP18P46=P2+2P3

Cb=27PbP18P46 とおいて

P2+2P3Cb=0(4)

とする。

(3)(4)より

[2112][P2P3]=[CaCb][2112]1[2112][P2P3]=[2112]1[CaCb][P2P3]=13[2112][CaCb][P2P3]=13[2CaCbCa+2Cb]...(3)

(3)に Ca,Cb を代入して元に戻すと

P2=13(227Pa8P1P4627PbP18P46)P2=13(54Pa16P12P427Pb+P1+8P46)P2=13(54Pa27Pb15P1+6P46)P2=16(18Pa9Pb5P1+2P4)
P3=13(27Pa8P1P46+227PbP18P46)P3=13(27Pa+8P1+P4+54Pb2P116p46)P3=13(27Pa+54Pb+6P115p46)P3=16(9Pa18Pb2P1+5P4)

よって求める制御点 P2,P3

P2=16(18Pa9Pb5P1+2P4)P3=16(9Pa18Pb2P1+5P4)