ベジェ曲線の式
数式の表示を試してみたかっただけ
1. 2次のベジェ曲線
P1⋯端点P2⋯制御点P3⋯端点
として
P=(1−t)2P1+2(1−t)tP2+t2P3⋯(1)0≦t≦1
例えば、2次元平面上の点
P1=(x1,y1)P2=(x2,y2)P3=(x3,y3)P=(x,y)
とすると x,y はそれぞれ
x=(1−t)2x1+2(1−t)tx2+t2x3y=(1−t)2y1+2(1−t)ty2+t2y3
となる。
2. 3次のベジェ曲線
P1⋯端点P2⋯制御点P3⋯制御点P4⋯端点
P=(1−t)3P1+3(1−t)2tP2+3(1−t)t2P3+t3P4⋯(2)0≦t≦1
例えば、2次元平面上の点
P1=(x1,y1)P2=(x2,y2)P3=(x3,y3)P4=(x4,y4)P=(x,y)
とすると x,y はそれぞれ
x=(1−t)3x1+3(1−t)2tx2+3(1−t)t2x3+t3x4y=(1−t)3y1+3(1−t)2ty2+3(1−t)t2y3+t3y4
となる。
3. 3点を通る2次のベジェ曲線を求める
P1⋯端点P2⋯求める制御点P3⋯端点Pa⋯通過点
のときに P1,Pa,P3 を通るベジェ曲線の制御点 P2 を求める。
ただし、 Pa は t=0.5 の時の通過点とする。
(1)の2次のベジェ曲線の式から t=0.5 のとき
Pa=0.25P1+0.5P2+0.25P30.5P2=Pa−0.25(P1+P3)P2=2Pa−0.5(P1+P3)(x2y2)=2(xaya)−0.5[(x1y1)+(x3y3)]
4. 4点を通る3次のベジェ曲線を求める
2次元平面上の点
P1⋯端点P2⋯求める制御点P3⋯求める制御点P4⋯端点Pa⋯通過点Pb⋯通過点
のときに P1,Pa,Pb,P4 を通るベジェ曲線の制御点 P2,P3 を求める。
ただし、 Pa は t=1/3 の時の通過点、 Pb は t=2/3 の時の通過点とする。
(2)の3次のベジェ曲線の式から t=1/3 のとき
Pa=(23)3P1+(23)2P2+2(13)2P3+(13)3P427Pa=8P1+12P2+6P3+P427Pa−8P1−P46=2P2+P3
Ca=27Pa−8P1−P46 とおいて
2P2+P3−Ca=0⋯(3)
とする。
t=2/3 のとき
Pb=(13)3P1+2(13)2P2+(23)2P3+(23)3P427Pb=P1+6P2+12P3+8P427Pb−P1−8P46=P2+2P3
Cb=27Pb−P1−8P46 とおいて
P2+2P3−Cb=0⋯(4)
とする。
(3)(4)より
[2112][P2P3]=[CaCb][2112]−1[2112][P2P3]=[2112]−1[CaCb][P2P3]=13[2−1−12][CaCb][P2P3]=13[2Ca−Cb−Ca+2Cb]...(3)
(3)に Ca,Cb を代入して元に戻すと
P2=13(227Pa−8P1−P46−27Pb−P1−8P46)P2=13(54Pa−16P1−2P4−27Pb+P1+8P46)P2=13(54Pa−27Pb−15P1+6P46)P2=16(18Pa−9Pb−5P1+2P4)
P3=13(−27Pa−8P1−P46+227Pb−P1−8P46)P3=13(−27Pa+8P1+P4+54Pb−2P1−16p46)P3=13(−27Pa+54Pb+6P1−15p46)P3=−16(9Pa−18Pb−2P1+5P4)
よって求める制御点 P2,P3 は
P2=16(18Pa−9Pb−5P1+2P4)P3=−16(9Pa−18Pb−2P1+5P4)