B-スプライン曲線
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/11/10 23:53 UTC 版)
区分多項式により表現されているため、一部を変更しても曲線全体に影響は及ばない等の性質がある。ベジェ曲線とともに、コンピュータグラフィックスの世界で広く利用されている。なお、B-splineはBasis spline(Basis=基底)の省略形である。曲線は必ずしも制御点を通らない。
定義
パラメータ ![]()
上の図は、![]()
開一様ノットベクトル
- 最初の
開一様ノットベクトルに対する基底関数と曲線の例(n=3, m=9) 非一様ノットベクトル
非一様ノットベクトル (、英: non-uniform knot vector)はノットが不規則に配置されたノットベクトルである[14][15]。ノットベクトルの性質
- ノット数が
closed B-スプラインの例 一様B-スプライン曲線
一様ノットベクトルで定義されるB-スプライン曲線を一様(uniform)B-スプライン曲線と呼ぶ。
行列形式
一様2次B-スプライン曲線
一様なノットにおける2次B-スプライン曲線において、B-スプライン基底関数は次のようになる。
-
ベジェ曲線への変換例 開一様3次B-スプライン曲線の制御点変換行列 は の場合、以下のとおり。[16]
- - - の場合、以下のとおり。
連続性
ノットベクトルの途中に重なりが含まれない場合、n次のB-スプライン曲線は回微分可能である[18]。 したがい、一様2次B-スプライン曲線はC1連続、一様3次B-スプライン曲線はC2連続である。 開一様B-スプライン曲線は、ノットベクトルに重なりが含まれるが、重なりがノットベクトルの途中ではなく端にあるため、同様である。
あるいは、カーブセグメント単位で連続性を求めることもできる。以下は3次B-スプライン曲線の連続性を求めた例である。[16]
- カーブセグメントは の3次関数で2回微分可能であり、C2連続である。
- カーブセグメント間の連続性は、以下の通りセグメントの終点と次のセグメントの始点の基底関数を比較することで求める;
なので、
であれば であり、C0連続を判定できる。
同様に、1次微分、2次微分についてC1連続、C2連続を判定できる。一様3次B-スプライン曲線の場合、
である。1次微分については
である。2次微分については
である。したがい、一様3次B-スプライン曲線はC2連続である。
開一様3次B-スプライン曲線の場合;
判定 したがい、C0連続以上である。1次微分については
判定 したがい、C1連続以上である。2次微分については
判定 したがい、開一様3次B-スプライン曲線はC2連続である。
面積
パラメトリック関数で表される開いた曲線の面積は、ガウスグリーンの定理で求めることができる[19]。
一様2次B-スプライン曲線の行列形式をあてはめると、曲線の始点と終点および原点で囲まれた領域の面積は次のようになる。一様3次B-スプライン曲線の行列形式をあてはめると、曲線の始点と終点および原点で囲まれた領域の面積は次のようになる。
原点に対し制御点が反時計回りの並びの場合、面積は正の値、時計回りの並びの場合、面積は負の値になる。閉包を構成する各カーブセグメントの面積を合計することにより、閉包と原点の間の領域の面積がキャンセルされ、閉包のみの面積を求めることができる。
有理B-スプライン
有理B-スプラインは各制御点に重みを付けた物。詳細はNURBS(非一様有理B-スプライン)を参照。
B-スプライン曲面
方向に 次で 方向に 次のB-スプライン曲面(B-spline surface)は以下のように表される[20]。
- .
ノットや基底関数は曲線と同じ。制御点の個数は 個。
脚注
出典
- ^ de Boor, p. 132
- ^ 実装例のFortran副プログラムBSPLVBのコメントに "DIVISION BY ZERO WILL RESULT IF T(LEFT)=T(LEFT+1)" と記載されている。 de Boor, p. 134
- ^ Fussy - B-スプライン曲線
- ^ "セグメントの区切りとなるパラメータの値を定義した数値(ノット)" 三谷 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 より引用。
- ^ a b c “実装技術者向けB-スプライン曲線入門”. Qiita. 2025年11月10日閲覧。
- ^ Cohen, Elaine; Riesenfeld, Richard F. (1982). “General Matrix Representations for Bezier and B-spline Curves”. Computers in Industry 3: 13-15.
- ^ de Boor, p. 138.
- ^ 高校数学の美しい物語 - ガウスグリーンの定理の入試への応用
- ^ B-spline Surfaces: Construction - CS3621 Introduction to Computing with Geometry Notes
参考文献
- 三谷「第6回 曲線・曲面の表現「Bスプライン曲線」」『筑波大学講義 コンピュータグラフィックス基礎』2020年。
- 谷口, 道興 (2000). “制御点方式による曲線形状の生成”. 長野大学紀要 22 (3): 234-242.
- de Boor, Carl (1978). A Practical Guide to Spline. ISBN 0-387-90356-9
関連項目
外部リンク
- Interactive java applets for B-splines
- Weisstein, Eric W. “B-Spline”. mathworld.wolfram.com (英語).
-
- ノット数が
B-スプライン曲線
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/06 06:47 UTC 版)
「スプライン曲線」の記事における「B-スプライン曲線」の解説
詳細は「B-スプライン曲線」を参照 コンピュータグラフィックス等では、こちらのほうが専ら多用されている。B-スプライン曲線は、前節までで述べたような(伝統的な)スプラインとは異なり、制御点を必ずしも通らないスプライン曲線である。「ベジェ曲線とB-スプライン曲線」といったように対比される場合、3次B-スプライン曲線のことが多い(ベジェ曲線もスプライン曲線の一種と言えなくもないが)。また、端の制御点が曲線の端点でもあるような場合は、端の制御点(制御ノット)を多重ノットとした、一種の非一様B-スプライン曲線である(NURBSの記事も参照)。
※この「B-スプライン曲線」の解説は、「スプライン曲線」の解説の一部です。
「B-スプライン曲線」を含む「スプライン曲線」の記事については、「スプライン曲線」の概要を参照ください。
B-スプライン曲線と同じ種類の言葉
- B-スプライン曲線のページへのリンク