B-スプライン曲線
区分多項式により表現されているため、一部を変更しても曲線全体に影響は及ばない等の性質がある。ベジェ曲線とともに、コンピュータグラフィックスの世界で広く利用されている。なお、B-splineはBasis spline(Basis=基底)の省略形である。曲線は必ずしも制御点を通らない。
定義
[編集]パラメータ 上に 個の値 (ノット)をとり、次数を とする。
制御点を とすると、 次の B-スプライン曲線 は以下で定義される:
- .
このとき は
ベジェ曲線との関係性
[編集]n次B-スプライン曲線は、以下のように制限するとn次ベジェ曲線と同一の式になる。つまりベジェ曲線はB-スプライン曲線の特殊な場合である。
- 制御点の数は 個。よってノットの数は 個。
- t が 0 から 1 まで変化するとし、ノットは および 。
ノット
[編集]B-スプラインにおけるノット(英: knot)はパラメータ の値であって、セグメントの区切りを定めるものである[1]。
ノットの範囲は とすることが多い[2]。
ノットベクトル
[編集]ノットベクトル(英: knot vector)は昇順に並べられたノットの列である[3][4]。
ノットベクトルはいくつかの種類にわけられる。以下はその一例である:
一様ノットベクトル
[編集]言い換えれば、要素が等差数列状に並んでいるノットベクトルが一様ノットベクトルである[6]。
開一様ノットベクトル
[編集]- 最初の 個は 0 とする。
- 最後の 個は 1 とする。
- 残りの 個は 0 より大きく 1 より小さい値で均等間隔で埋める。
例えば、n = 2, m = 7 の場合は制御点は4個でノットベクトルは である。このノットベクトルの作り方では、曲線の端点は最初と最後の制御点になる。また、制御点の数が 個の場合はn次ベジェ曲線と同一になる。
非一様ノットベクトル
[編集]制御点と曲線
[編集]基本的に曲線は制御点を通らないが、例えば
のように連続した複数のノットに対し、同一の値を与えることで、対応する制御点に曲線を通すことができる。 2次B-スプライン曲線の場合、以下のようになり、曲線の始点が0番目の制御点と一致する。
- .
ノットベクトルの最初の n + 1 個と、最後の n + 1 個を同一にすることで、曲線の端点は最初と最後の制御点になり、固定(clamped)される[9]。
例
[編集]一様2次B-スプライン曲線
[編集]一様なノットにおける2次B-スプライン曲線において、B-スプライン基底関数は次のようになる。
これを行列形式にすると、
- for
となる。
有理B-スプライン
[編集]有理B-スプラインは各制御点に重みを付けた物。詳細はNURBS(非一様有理B-スプライン)を参照。
B-スプライン曲面
[編集]方向に 次で 方向に 次のB-スプライン曲面(B-spline surface)は以下のように表される[13]。
- .
ノットや基底関数は曲線と同じ。制御点の個数は 個。
脚注
[編集]出典
[編集]- ^ "セグメントの区切りとなるパラメータの値を定義した数値(ノット)" 三谷 2020 より引用。
- ^ B-spline Basis Functions: Definition - CS3621 Introduction to Computing with Geometry Notes
- ^ "ノットベクトル ... ノット ... の列" 三谷 2020 より引用。
- ^ "Bスプラインの形を決めるもの ... ノット列の値は単純増加" 三谷 2020 より引用。
- ^ "ノットベクトル ti が一定の間隔で存在する → 一様" 三谷 2020 より引用。
- ^ a b "ノットベクトルには、次の3つの型がある。... ノットベクトルが等差数列になっている場合の一様なノットベクトル(uniform knot vector)" 谷口 2000, p. 241 より引用。
- ^ a b B-splines - Advanced Graphics and HCI
- ^ "ノットベクトルには、次の3つの型がある。...ノットベクトルが両端で階数だけ重複している場合の開一様ノットベクトル(open uniform)" 三谷 2020 より引用。
- ^ a b Knot Vector Generation - CS3621 Introduction to Computing with Geometry Notes
- ^ Knot Vector Generation for B-Spline Interpolation - Wolfram Demonstrations Project
- ^ "ノットベクトルには、次の3つの型がある。...非一様ノットベクトル(non-uniform knot vector)" 谷口 2000, p. 241 より引用。
- ^ "ノットベクトル ... ノットの間隔を変更すると「非一様」になる" 三谷 2020 より引用。
- ^ B-spline Surfaces: Construction - CS3621 Introduction to Computing with Geometry Notes
参考文献
[編集]- 三谷「第6回 曲線・曲面の表現「Bスプライン曲線」」『筑波大学講義 コンピュータグラフィックス基礎』2020年 。
- 谷口, 道興 (2000). “制御点方式による曲線形状の生成”. 長野大学紀要 22 (3): 234-242.
関連項目
[編集]外部リンク
[編集]- Interactive java applets for B-splines
- Weisstein, Eric W. "B-Spline". mathworld.wolfram.com (英語).