B-スプライン曲線(Bスプラインきょくせん、英: B-spline curve)とは、与えられた複数の制御点とノットベクトルから定義される滑らかな曲線である。区分多項式により表現されているため、一部を変更しても曲線全体に影響は及ばない等の性質がある。ベジェ曲線とともに、コンピュータグラフィックスの世界で広く利用されている。なお、B-splineはBasis spline(Basis=基底)の省略形である(en:B-Spline)。曲線は必ずしも制御点を通らない。
制御点を とすると、 次のB-スプライン曲線は
- .
と表される。制御点の個数は 個。ここで はノット(knot)と呼ばれる 個の実数(ベクトル)である。 とすることが多い[1]。
-
また はB-スプライン基底関数(B-spline basis function)と呼ばれ、de Boor Coxの漸化式 によって次のように定義される。
-
-
方向に 次で 方向に 次のB-スプライン曲面(B-spline surface)は以下のように表される[2]。
- .
ノットや基底関数は曲線と同じ。制御点の個数は 個。
n次B-スプライン曲線は、以下のように制限するとn次ベジェ曲線と同一の式になる。つまりベジェ曲線はB-スプライン曲線の特殊な場合である。
●制御点の数は 個。よってノットの数は 個。
●tが 0 から1まで変化するとし、ノットは および 。
一様なノットにおける2次B-スプライン曲線において、B-スプライン基底関数は次のようになる。
-
これを行列形式にすると、
- for
となる。
有理B-スプラインは各制御点に重みを付けた物。詳細はNURBS(非一様有理B-スプライン)を参照。