B-スプライン曲線とは
B-スプライン曲線は、パラメトリック曲線の一種。
2次のB-スプライン曲線
2次のB-スプライン曲線は、3個の点によって定められる曲線で、TrueType フォントの記述に使われている。ちなみに、2次のB-スプライン曲線と2次の Bézier 曲線は全く同一のもの*1。

描き方
スプラインを決める3点を p0, p1, p2 とする。
- 線分 p0p1 を t : (1-t) に分割する点を q0(t) とする。
- 線分 p1p2 を t : (1-t) に分割する点を q1(t) とする。
- 線分 q0(t) q1(t) を t : (1-t) に分割する点が、スプライン上の点 p(t) となる。
0 ≤ t ≤ 1 の範囲で p(t) をプロットすれば、p0 と p1 を結ぶスプラインが得られる。
上の図は、t = 1/3 のときに p(t) の求め方を示したもの。○ : ● = 1/3 : (1 - 1/3) = 1 : 2 となっている。ピンク色の線が、3点 p0, p1, p2 によって定まるスプライン。
スプラインを表す式
スプライン上の点 p(t) は、次のように表される。

証:描き方 1, 2 から、q0(t), q1(t) は

よって、描き方 3 から p(t) は

となる。また t = 0, 1 では

となるので、p0 が始点 p(0) と一致し、p2 が終点 p(1) と一致する。もう一つの点 p1 は、曲がり具合を決める制御点となる。
傾き・接線
スプライン上の点 p(t) における傾き(接線の方向)は、次のようになる。

よって t = 0, 0.5, 1 では

となる。
ちなみに、線分 q0q1 は

となるので、点 p(t) の傾きと平行。また、点 p(t) は q0q1 上であるから、q0q1 は点 p(t) におけるスプラインの接線となる。
直線との交点
直線の式 ax+by+c=0 に

を代入すれば、

となり、t の2次方程式となる。これを解いて t の値を求めれば、そこから交点を計算することができる。
スプラインの分割
外部リンク
- B-スプライン曲線
- Flashゲーム講座&ASサンプル集【曲線について】 2次ベジェ曲線を描画する
- ベジエ曲線の仕組み (1) - 昔話 - てっく煮ブログ
- ベジエ曲線の仕組み (2) - 2次ベジエ曲線を詳しく - てっく煮ブログ
読み: べーたすぷらいんきょくせん
- *1
- 一般には、n次のB-スプライン曲線とn次の Bézier 曲線は一致しない。