曲線の形を決める条件である位置 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 ┘
と、なります。