B-スプライン曲線

B-スプライン曲線（Bスプラインきょくせん、）とは、与えられた複数の制御点とノットベクトルから定義される滑らかな曲線である。区分多項式により表現されているため、一部を変更しても曲線全体に影響は及ばない等の性質がある。ベジェ曲線とともに、コンピュータグラフィックスの世界で広く利用されている。なお、B-splineはBasis spline（Basis＝基底）の省略形である（）。曲線は必ずしも制御点を通らない。
定義.
制御点を formula_1 とすると、formula_2 次のB-スプライン曲線は
と表される。制御点の個数は formula_4 個。ここで formula_5 はノット（knot）と呼ばれる formula_6 個の実数（ベクトル）である。formula_7 とすることが多い。
また formula_9 はB-スプライン基底関数（B-spline basis function）と呼ばれ、de Boor Coxの漸化式 によって次のように定義される。
B-スプライン曲面.
formula_12 方向に formula_13 次で formula_14 方向に formula_15 次のB-スプライン曲面（B-spline surface）は以下のように表される。
ノットや基底関数は曲線と同じ。制御点の個数は formula_17 個。
ベジェ曲線との関係性.
n次B-スプライン曲線は、以下のように制限するとn次ベジェ曲線と同一の式になる。つまりベジェ曲線はB-スプライン曲線の特殊な場合である。
ノットベクトルの作り方.
ノットベクトルの作り方には色々な方法がある。
一様ノットベクトル.
一様ノットベクトル（uniform knot vector）とは以下のようにノットを定義する。均等間隔で埋めたもの。
開一様ノットベクトル.
開一様ノットベクトル（open uniform knot vector）や一様間隔ノットベクトル（uniformly-spaced knot vector）と呼ばれる下記の方法で作る方法。
例えば、n = 2, m = 7 の場合は制御点は4個でノットベクトルは formula_26 である。このノットベクトルの作り方では、曲線の端点は最初と最後の制御点になる。また、制御点の数が formula_18 個の場合はn次ベジェ曲線と同一になる。
制御点と曲線.
基本的に曲線は制御点を通らないが、例えば
のように連続した複数のノットに対し、同一の値を与えることで、対応する制御点に曲線を通すことができる。
2次B-スプライン曲線の場合、以下のようになり、曲線の始点が0番目の制御点と一致する。
ノットベクトルの最初の n + 1 個と、最後の n + 1 個を同一にすることで、曲線の端点は最初と最後の制御点になり、固定（clamped）される。
例.
一様2次B-スプライン曲線.
一様なノットにおける2次B-スプライン曲線において、B-スプライン基底関数は次のようになる。
これを行列形式にすると、
となる。
有理B-スプライン.
有理B-スプラインは各制御点に重みを付けた物。詳細はNURBS（非一様有理B-スプライン）を参照。