曲線の形を決める条件である位置 x0, x1, 及び速度 v0, v1を、3次曲線の一般形
X = x (t) = at3 + bt2 + ct + d
に代入して、係数a、b、c 及び d を求めます。
位置の条件から、
①・・・ x0 = x (0) = a03 + b02 + c0 + d = d, ②・・・ x1 = x (1) = a13 + b12 + c1 + d = a + b + c + d.
また、速度が、初期時刻、最終時刻で v0, v1 であることから、 時間微分としての速度の定義
dx(t)
v(t) = ―― = 3at2 + 2bt + c,
dt
に、条件を入れて、
③・・・ v0 = v (0) = 3a02 + 2b0 + c = c, ④・・・ v1 = v (1) = 3a12 + 2b1 + c = 3a + 2b + c.
①, ③ から、
d = x0, c = v0.
④-2② に今の結果を代入して、
v1 - 2x1 = (3a + 2b + c) - 2(a + b + c + d)
= a - c - 2d,
⇒ a = v1 - 2x1 + v0 + 2x0.
これらの結果を②に代入すれば、
b = x1 - a - c - d = x1 - (v1 - 2x1 + v0 + 2x0) - v0 - x0 = -3x0 + 3x1 - 2v0 - v1,
と、全ての係数が求まります。以上をまとめれば、
x(t) = (v1 -2x1 + v0 +2x0)t3
+ (-3x0 + 3x1 - 2v0 - v1)t2
+ v0 t
+ x0
┌ 2 -2 1 1┐┌ x0 ┐
= [t3 t2 t 1]│-3 3 -2 -1││ x1 │
│ 0 0 1 0││ v0 │
└ 1 0 0 0┘└ v1 ┘
となります。
最後の表現は、単なる変形です。 縦ベクトルと横ベクトルの積が、
a0b0 + a1b1 + a2b2 + a3b3
┌ b0 ┐
= [a0 a1 a2 a3]│ b1 │
│ b2 │
└ b3 ┘
と、書け、さらに行列をはさんだ場合に、
a0m00b0 + a0m01b1 + a0m02b2 + a0m03b3
+a1m00b0 + a1m11b1 + a2m12b2 + a1m13b3
+a2m00b0 + a2m21b1 + a2m22b2 + a2m23b3
+a3m00b0 + a3m31b1 + a2m32b2 + a3m33b3
┌ m00 m01 m02 m03┐┌ b0 ┐
= [a0 a1 a2 a3]│ m10 m11 m12 m13││ b1 │
│ m20 m21 m22 m23││ b2 │
└ m30 m31 m32 m33┘└ b3 ┘
と、書けるのを使っただけです。
Ferguson / Coons 曲線、
┌ 2 -2 1 1┐┌ x0 ┐
x(t) = [t3 t2 t 1]│-3 3 -2 -1││ x1 │
│ 0 0 1 0││ v0 │
└ 1 0 0 0┘└ v1 ┘
の式からはじめます。i番目の曲線として、今後 x0 を xi, x1 を xi+1,として取り扱います。これに、定義した制御点と、位置及び速度の関係式、
xi = Pi ,
xi+1 = Pi+1,
1 ┌ xi ┐ 1 ┌ 0 2 0 0┐┌ Pi-1 ┐
vi = ― (Pi+1 - Pi-1), ⇒ │ xi+1 │= ― │ 0 0 2 0││ Pi │
2 │ vi │ 2 │-1 0 1 0││ Pi+1 │
1 └ vi+1 ┘ └ 0 -1 0 1┘└ Pi+2 ┘
vi+1 = ― (Pi+2 - Pi ),
2
を、代入すると、
┌ 2 -2 1 1┐ 1 ┌ 0 2 0 0┐┌ Pi-1 ┐
xi(t) = [t3 t2 t 1]│-3 3 -2 -1│― │ 0 0 2 0││ Pi │
│ 0 0 1 0│ 2 │-1 0 1 0││ Pi+1 │
└ 1 0 0 0┘ └ 0 -1 0 1┘└ Pi+2 ┘
1 ┌ -1 3 -3 1┐┌ Pi-1 ┐
= ― [t3 t2 t 1]│ 2 -5 4 -1││ Pi │
2 │ -1 0 1 0││ Pi+1 │
└ 0 2 0 0┘└ Pi+2 ┘
となります。
境界以外の場合と同様に、位置及び速度と制御点の関係式、
x0 = P0,
x1 = P1,
1
v1 = ― (P2 - P0),
2
1
v0 = 2 (x1 - x0) - v1 = 2 (P1 - P0) - ― (P2 - P0),
2
を。Ferguson / Coons 曲線の式に代入します。最後の v0 の項が、 適当な平均速度を与える様に推測した境界の速度です。 代入すると、
1 ┌ 2 -2 1 1┐ 1 ┌ 0 2 0 0┐┌ 0 ┐
x0(t) = ― [t3 t2 t 1]│-3 3 -2 -1│― │ 0 0 2 0││ P0 │
2 │ 0 0 1 0│ 2 │ 0 -3 4 -1││ P1 │
└ 1 0 0 0┘ └ 0 -1 0 1┘└ P2 ┘
1 ┌ 0 0 0 0┐┌ 0 ┐
= ― [t3 t2 t 1]│ 0 1 -2 1││ P0 │
2 │ 0 -3 4 -1││ P1 │
└ 0 2 0 0┘└ P2 ┘
と、なります。
同様に、最後の曲線は、
xn = Pn,
xn+1 = Pn+1,
1
vn = ― (Pn+1 - Pn-1),
2
1
vn+1 = 2 (xn+1 - xn) - vn = 2 (Pn+1 - Pn) - ― (Pn+1 - Pn-1),
2
から、
1 ┌ 2 -2 1 1┐ 1 ┌ 0 2 0 0┐┌ Pn-1 ┐
xn(t) = ― [t3 t2 t 1]│-3 3 -2 -1│― │ 0 0 2 0││ Pn │
2 │ 0 0 1 0│ 2 │-1 0 1 0││ Pn+1 │
└ 1 0 0 0┘ └ 1 -4 3 0┘└ 0 ┘
1 ┌ 0 0 0 0┐┌ Pn-1 ┐
= ― [t3 t2 t 1]│ 1 -2 1 0││ Pn │
2 │ -1 0 1 0││ Pn+1 │
└ 0 2 0 0┘└ 0 ┘
と、なります。