Categories: 未分類

Bスプライン

B-spline
で数学のサブフィールド数値解析、Bスプラインまたは基礎スプラインあるスプライン最小有する機能サポート所与に対して度、平滑度、およびドメインパーティション。特定の次数のスプライン関数は、その次数のBスプラインの線形結合として表すことができます。枢機卿Bスプラインには、互いに等距離にある結び目がBスプラインは、実験データのカーブフィッティングと数値微分に使用できます。
コントロールポイント/コントロールポリゴンを含むBスプラインの加重和として描画されたスプライン曲線、およびマークされたコンポーネント曲線
コンピュータ支援設計およびコンピュータグラフィックス、スプライン関数は、制御点のセットとBスプラインの線形結合として構成されています。

コンテンツ
1 序章
2 意味
3 プロパティ
3.1 枢機卿Bスプライン 3.2 Pスプライン
4 微分表現
5 単変量Bスプラインのモーメント
6 区分的/複合ベジェとの関係
7 カーブフィッティング
8 コンピューター支援設計とコンピューターグラフィックス 9 NURBS 10 も参照してください
11 ノート
12 参考文献
13 参考文献
14 外部リンク

序章
用語「Bスプライン」とによって鋳造されたアイザック・ヤコブシェーンベルクと基底スプラインの略です。次数のスプライン関数 {n}

 次数の区分的 多項式関数です − 1 {n-1}

  変数内 {x}

 。ピースが出会う場所は結び目として知られています。スプライン関数の重要な特性は、ノットの多重度に応じて、スプライン関数とその導関数が連続である可能性があることです。
B-次数のスプライン {n}

 は、同じノット上で定義された同じ次数のスプライン関数の基本関数です。つまり、可能なすべてのスプライン関数は、Bスプラインの線形結合から構築でき、スプライン関数ごとに1つの一意の組み合わせしかありません。

意味

  ノットベクトル(0、0、0、1、2、3、3、3)と制御点(0、0、1、0、0)、およびその1次導関数を持つ枢機卿2次Bスプライン

  ノットベクトル(-2、-2、-2、-2、-1、0、1、2、2、2、2)と制御点(0、0、0、6、0、 0、0)、およびその1次導関数

  ノットベクトル(0、0、0、0、0、1、2、3、4、5、5、5、5、5)と制御点(0、0、0、0、1)を持つ枢機卿四次Bスプライン、0、0、0、0)、およびその1次および2次導関数
秩序のスプライン {n}

 次数の区分的 多項式関数です − 1 {n-1}

  変数内 {x}

 。の値 {x}

  ここで、多項式の断片は結び目として知られており、 0 、 1 、 2 …
、 {t_ {0}、t_ {1}、t_ {2}、 ldots、t_ {n}}

 降順ではない順に並べ替えられます。結び目がはっきりしているとき、最初の − 2 {n-2}

 多項式の導関数は、各ノットにわたって連続しています。いつ {r}

  結び目は一致し、最初の結び目だけが一致します − − 1 {nr-1}

  スプラインの導関数は、そのノット全体で連続しています。
ノットの特定のシーケンスに対して、スケーリング係数まで、一意のスプラインがあります 私
、(( )。
{B_ {i、n}(x)}

  満足 私
、 (( )。 = {{ 0 I o ≥ 私+ o z e o o e w I e {B_ {i、n}(x)= left {{ begin {array} {ll} 0& mathrm {if} quad x   追加の制約を追加すると、 ∑ I 私
、(( )。= 1
{ sum _ {i} B_ {i、n}(x)= 1}

  すべてのために {x}

  最初の結び目と最後の結び目の間、次にのスケーリング係数 私
、(( )。
{B_ {i、n}(x)}

 修正されます。結果として 私
、(( )。
{B_ {i、n}(x)}

  スプライン関数はBスプラインと呼ばれます。
あるいは、BスプラインはCox-deBoor再帰式を使用して構築することで定義できます。ノットシーケンスが与えられた … 、 0 、 1 、 2 …
{ ldots、t_ {0}、t_ {1}、t_ {2}、 ldots}

 、次に、次数1のBスプラインは次のように定義されます。 I 1(( )。 := {{ 1 I 私
≤ o e w I e {B_ {i、1}(x):= left {{ begin {matrix} 1& mathrm {if} quad t_ {i} leq x   これらは満足します ∑ I I 1(( )。= 1
{ sum _ {i} B_ {i、1}(x)= 1}

  すべてのために {x}

  なぜなら {x}

  ちょうど1つ I 1(( )。= 1
{B_ {i、1}(x)= 1}

 、および他のすべてはゼロです。
高次のBスプラインは再帰によって定義されます I k+ 1(( )。
:=ω k(( )。 I k(( )。 + [ 1− ω
I+ 1 k(( )。
] 私+ 1 k(( )。 {B_ {i、k + 1}(x):= omega _ {i、k}(x)B_ {i、k}(x)+ [1- omega _ {i + 1、k} (x)] B_ {i + 1、k}(x)、}
  どこω k(( )。 := {{ − I 私+ k
− 私
、 私+ k
≠ 私
0 それ以外は { omega _ {i、k}(x):= { begin {cases} { frac {x-t_ {i}} {t_ {i + k} -t_ {i}}}、&t_ { i + k} neq t_ {i} \ 0、&{ text {otherwise}} end {cases}}。}

 

プロパティ
Bスプライン関数は、制御点と呼ばれるいくつかの点を通過する柔軟なバンドの組み合わせであり、滑らかな曲線を作成します。これらの機能により、多数のポイントを使用して複雑な形状や表面を作成および管理できます。Bスプライン関数とベジエ関数は、形状最適化手法に広く適用されています。
順序のBスプライン {n}

  次数の区分的多項式関数です − 1 {n-1}

  変数内 {x}

 。それは上で定義されています 1 + {1 + n}

  場所 {t_ {j}}

 、ノットまたはブレークポイントと呼ばれ、降順ではない必要があります≤ + 1 {t_ {j} leq t_ {j + 1}}

 。Bスプラインは、これらのノットの最初と最後の間の範囲でのみ寄与し、他の場所ではゼロになります。各結び目が同じ距離で隔てられている場合 {h}

  (どこ = + 1 − {h = t_ {j + 1} -t_ {j}}

 )その前身から、ノットベクトルと対応するBスプラインは「均一」と呼ばれます(以下の基本的なBスプラインを参照)。
ゼロ以外の有限ノット間隔ごとに、Bスプラインは次数の多項式です。 − 1 {n-1}

 。Bスプラインは、ノットでの連続関数です。 Bスプラインに属するすべてのノットが異なる場合、その導関数も次数の導関数まで連続です。 − 2 {n-2}

 。結び目が与えられた値で一致する場合 {x}

 、微分次数の連続性は、追加の一致する結び目ごとに1ずつ減少します。Bスプラインはノットのサブセットを共有できますが、まったく同じノット上で定義された2つのBスプラインは同一です。言い換えると、Bスプラインはそのノットによって一意に定義されます。
1つは内部の結び目と終点を区別します。内部の結び目は {x}

 -ドメイン1が関心を持っています。単一のBスプラインがすでに拡張されているため 1 + {1 + n}

  結び目、それは内部の結び目がで拡張される必要があるということです − 1 {n-1}

 内部ノット間隔に影響を与える最初と最後のBスプラインを完全にサポートするための各側のエンドポイント。エンドポイントの値は重要ではありません。通常、最初または最後の内部ノットが繰り返されるだけです。
Bスプラインの有用性は、任意のスプライン関数が次数であるという事実に {n}

  与えられたノットのセットは、Bスプラインの線形結合として表すことができます。 、 (( )。= ∑
I α 私 私
、 (( )。 {S_ {n、 mathbf {t}}(x)= sum _ {i} alpha _ {i} B_ {i、n}(x)。}
  Bスプラインは、スプライン関数空間の基底関数の役割を果たしているため、この名前が付けられています。この特性は、すべてのピースが、個々のサポート範囲内で、結び目で同じ連続性特性を持っているという事実に基づいています。
多項式ピースの式は、Cox-deBoor再帰式を使用して導出できます。 I 0(( )。 := {{ 1 I 私
≤ o e w I e {B_ {i、0}(x):= left {{ begin {matrix} 1& mathrm {if} quad t_ {i} leq x
  I k(( )。
:= − I 私+ k
− I I k− 1(( )。+ 私+ k + 1
− 私+ k + 1
− 私 + 1 私+ 1 k − 1(( )。 {B_ {i、k}(x):= { frac {x-t_ {i}} {t_ {i + k} -t_ {i}}} B_ {i、k-1}(x) + { frac {t_ {i + k + 1} -x} {t_ {i + k + 1} -t_ {i + 1}}} B_ {i + 1、k-1}(x)}
  あれは、 、 0 (( )。
{B_ {j、0}(x)}

 は区分的に一定の1またはゼロであり、どのノットスパンxが含まれているかを示します(ノットスパンjが繰り返される場合はゼロ)。再帰方程式は2つの部分に分かれています。 − I 私+ k
− 私
{{ frac {x-t_ {i}} {t_ {i + k} -t_ {i}}}}
  0から1に傾斜として、xがから行きます 私
{t_ {i}}

  に 私+ k
{t_ {i + k}}

  と 私+ k + 1
− 私+ k + 1
− 私+ 1
{{ frac {t_ {i + k + 1} -x} {t_ {i + k + 1} -t_ {i + 1}}}}
  xがから進むにつれて1から0にランプします 私+ 1
{t_ {i + 1}}

  に 私+ k + 1
{t_ {i + k + 1}}

 。対応するBは、それぞれの範囲外ではゼロです。例えば、 I 1(( )。
{B_ {i、1}(x)}

 ある三角関数でゼロ以下であります = 私
{x = t_ {i}}

 、で1つにランプ = 私+ 1
{x = t_ {i + 1}}

  そしてそれ以降はゼロに戻ります = 私+ 2
{x = t_ {i + 2}}

 。ただし、Bスプライン基底関数はローカルサポートを備えているため、Bスプラインは通常、de Boorのアルゴリズムなど、ゼロの場合に基底関数を評価する必要のないアルゴリズムによって計算されます。
この関係は、xでn次のBスプラインの値を生成するFORTRANでコード化されたアルゴリズムBSPLVに直接つながります。次のスキームは、次数nの各部分が、その左側にある次数n -1のBスプラインの部分の線形結合である方法を示しています。0 0
0 私 − 2 2 私 − 1 1 I 0 私 − 1 2 I 1
0 I 20
{{ begin {matrix} && 0 \&0&\ 0 && B_ {i-2,2} \&B_ {i-1,1}&\ B_ {i、0} && B_ {i-1,2} \&B_ {i、1}&\ 0 && B_ {i、2} \&0&\ && 0 \ end {matrix}}}
  での結び目による再帰式の適用(( 0 1 2 3 )。 { displaystyle(0,1,2,3)}

  次数3の均一なBスプラインの断片を与えます 1 = 2 / 0
≤ 2 =(( −2 2 +
6 − 3 )。 / 1 ≤ 3 =(( 3
− )。 2 / 2
≤   これらの部品を図に示します。二次スプライン関数の連続性と内部ノットでのその1次導関数を次のように示します。
で  = 1 、 1= 2= 0.5
; 1 = 2 = 1 {{ mbox {At}} x = 1、B_ {1} = B_ {2} = 0.5; { frac {dB_ {1}} {dx}} = { frac {dB_ {2}} { dx}} = 1}
  で  = 2 、 2= 3= 0.5
; 2 = 3 =− 1
{{ mbox {At}} x = 2、B_ {2} = B_ {3} = 0.5; { frac {dB_ {2}} {dx}} = { frac {dB_ {3}} { dx}} = -1}
  次数2のBスプラインの2次導関数は、ノットで不連続です。 2 1 2= 1
、 2 2 2= − 2
、 2 3 2= −
1.1。
{{ frac {d ^ {2} B_ {1}} {dx ^ {2}}} = 1、{ frac {d ^ {2} B_ {2}} {dx ^ {2}}} = -2、{ frac {d ^ {2} B_ {3}} {dx ^ {2}}} =-1。}
  de Boorアルゴリズムのより高速な変形が提案されていますが、安定性が比較的低くなっています。

枢機卿Bスプライン
カーディナルBスプラインは、ノット間で一定の間隔hを持ちます。与えられた次数nの基本的なBスプラインは、互いにシフトされたコピーです。それらは、より単純な定義から取得できます。 私
、 、 (( )。= − I [ 0 …
、 ](( ⋅
− 私 )。 + − 1 {B_ {i、n、t}(x)= { frac {x-t_ {i}} {h}} n ( cdot -t_ {i})_ { +} ^ {n-1}}
  「プレースホルダー」表記は、関数のn番目の差商を示すために使用されます(( − )。+ − 1 { displaystyle(tx)_ {+} ^ {n-1}}

 二つの変数のT及びXは固定して解釈されるべきであるXをと考慮(( − )。+ − 1 { displaystyle(tx)_ {+} ^ {n-1}}

 tだけの関数として。
枢機卿Bスプラインは等間隔のノットを持っているため、ノット間の補間は平滑化カーネルとの畳み込みに等しくなります。
たとえば、Bスプラインノード間で3つの値を補間する場合( {{ textbf {b}}}

 )、信号を次のように書くことができます:=
[ 1 0 0
、 2 0 0
、 3 0 0
、 。 。
、、0 0 ]
{{ textbf {x}} = [{ textbf {b}} _ {1}、0,0、{ textbf {b}} _ {2}、0,0、{ textbf {b} } _ {3}、0,0、….、{ textbf {b}} _ {n}、0,0]}

信号の畳み込み {{ textbf {x}}}

  矩形関数付き=
[ 1 / 3 1 / 3 1 / 3 ]
{{ textbf {h}} = [1 / 3,1 / 3,1 / 3]}

 一次補間されたbスプライン値を与えます。2次Bスプライン補間は、矩形関数を2回使用した畳み込みです。 y =∗∗ {{ textbf {y}} = { textbf {x}} * { textbf {h}} * { textbf {h}}}

 、長方形関数を使用した反復フィルタリングにより、高階補間が得られます。
均一なサンプルドメインでの高速bスプライン補間は、反復平均フィルタリングによって実行できます。あるいは、矩形関数はフーリエ領域でSincに等しくなります。したがって、3次スプライン補間は、フーリエ領域の信号にSinc ^ 4を掛けることに等しくなります。
Irwin–Hall分布# 1〜4次の枢機卿Bスプラインの代数式の特殊なケースを参照して

Pスプライン
Pスプラインという用語は「ペナルティ付きBスプライン」の略です。これは、係数が一部は適合されるデータによって、一部は過剰適合を回避するために滑らかさを課すことを目的とした追加のペナルティ関数によって決定されるBスプライン表現を使用することを指します。
データの2次元および多次元Pスプライン近似では、行列の面分割積を使用して、計算操作を最小限に抑えることができます。

微分表現
次数kのBスプラインの導関数は、単純に次数k -1のBスプラインの関数です。 I k(( )。 = k ((NSI k − 1(( )。 私+ k
− 私
− 私+ 1 k − 1(( )。 私+ k + 1
− 私+ 1 )。 {{ frac {dB_ {i、k}(x)} {dx}} = k left({ frac {B_ {i、k-1}(x)} {t_ {i + k}- t_ {i}}}-{ frac {B_ {i + 1、k-1}(x)} {t_ {i + k + 1} -t_ {i + 1}}} right)}
  これは、∑
I α 私 I k= ∑ I = −k +
2 −1 k α
I− α
I − 1 私+ k
− I I k− 1 o
{{ frac {d} {dx}} sum _ {i} alpha _ {i} B_ {i、k} = sum _ {i = r-k + 2} ^ {s-1} k { frac { alpha _ {i}- alpha _ {i-1}} {t_ {i + k} -t_ {i}}} B_ {i、k-1} quad mathrm {on} quad [t_ {r}、t_ {s}]}
  これは、スプライン関数の導関数と1次のBスプラインの間に単純な関係があることを示しています。

単変量Bスプラインのモーメント
単変量Bスプライン、つまりノット位置が1次元にあるBスプラインは、1次元確率密度関数を表すために使用できます。 (( )。
{p(x)}

 。例は、の加重和です。 I {i}

  順序のBスプライン基底関数 {n}

 、それぞれが1に面積正規化されます(つまり、標準のde-Boorアルゴリズムを使用して直接評価されません) (( )。= ∑
私 私 ⋅ 私 、 、
規範(( )。
{p(x)= sum _ {i} c_ {i} cdot B_ {i、n、{ textbf {norm}}}(x)}
  正規化定数制約付き ∑ I I 1
{ sum _ {i} c_ {i} = 1}

 。k番目の生の瞬間μ k
{ mu _ {k}}

  正規化されたBスプラインの 私
、 、
規範
{B_ {i、n、{ textbf {norm}}}}

  カールソンのディリクレ平均として書くことができます k
{R_ {k}}

 、これは、周回積分と反復和を介して正確に解くことができます。 μ k = k ((;
NS)。= ∫
−∞ k ⋅ 私 、 、
規範(( | 1
… )。 = Γ (( k+ 1
)。 Γ (( )。 Γ (( + k )。 ⋅ k ((、
NS)。
{ mu _ {k} = R_ {k}( mathbf {m}; mathbf {t})= int _ {- infty} ^ { infty} x ^ {k} cdot B_ { i、n、{ textbf {norm}}}(x | t_ {1} dots t_ {j})dx = { frac { Gamma(k + 1) Gamma(m)} { Gamma(m + k)}} cdot D_ {k}( mathbf {m}、 mathbf {t})}
  と k= 1 k ∑
u= 1 k
[ (( ∑I =
1 私
⋅ 私 u )。 k − u ] {D_ {k} = { frac {1} {k}} sum limits _ {u = 1} ^ {k} left [ left( sum limits _ {i = 1} ^ { j} m_ {i} cdot {t_ {i}} ^ {u} right)D_ {ku} right]}
  と 0 1
{D_ {0} = 1}

 。ここ、 { mathbf {t}}

  を持つベクトルを表します {j}

  結び目の位置と { mathbf {m}}

 それぞれのノットの多重度を持つベクトル。したがって、確率密度関数の任意のモーメントを計算できます。 (( )。
{p(x)}

  数値手法に頼ることなく、Bスプライン基底関数の合計で正確に表されます。

区分的/複合ベジェとの関係
Aベジェ曲線は、同じクラスの下部度曲線から再帰を使用して多項式曲線を定義可能であり、制御点の点で符号化されたが、主な違いは、ベジエ曲線セグメントの再帰内のすべての用語は、定義の同じドメインを有することです(いつもの
[ 0 1 ] {}

 )一方、Bスプライン再帰の2つの項のサポートは異なります(最も外側のサブインターバルは一般的ではありません)。これは、次数のベジェ曲線を意味します {n}

  によって与えられた ≫ {m gg n}

  コントロールポイントは約で構成されています / {m / n}

 ほとんど独立したセグメントですが、同じパラメータを持つBスプラインはサブインターバルからサブインターバルにスムーズに移行します。ベジェ曲線から同等のものを取得するには、セグメント間の遷移に滑らかさの条件を課す必要がその結果、何らかの方法でベジエスプラインが作成されます(多くの制御点は滑らかさの要件によって決定されます)。
区分/複合ベジエ曲線は、少なくともして接合ベジェ曲線の系列であるC0連続性(次曲線の開始点と1つの曲線の一致の最後の点)。アプリケーションによっては、追加の滑らかさの要件(C1またはC2の連続性など)が追加される場合が C1連続曲線は、ブレークポイント(2つの曲線が交わる場所)で同一の接線を持ちます。C2連続曲線は、ブレークポイントで同じ曲率を持ちます。

カーブフィッティング
通常、カーブフィッティングでは、データポイントのセットが何らかの数学関数によって定義されたカーブにフィッティングされます。たとえば、一般的なタイプのカーブフィッティングは、多項式または指数関数のセットを使用します。フィッティング関数を選択するための理論的根拠がない場合、最小二乗法を使用して、Bスプラインの合計で構成されるスプライン関数を曲線にフィッティングすることができます。 したがって、最小二乗最小化の目的関数は、次数kのスプライン関数の場合、次のようになります。U =
∑ l
l {{ W (( )。
[ y(( )。− ∑ I α
I I k
、(( )。 ] 2 {U = sum _ { mathrm {all} 、x} left {W(x) left [y(x)- sum _ {i} alpha _ {i} B_ {i、 k、t}(x) right] right } ^ {2}}
  W(x)は重量であり、Y(X)における基準値であるX。係数α I
{ alpha _ {i}}

 決定されるパラメータです。結び目の値は固定されている場合もあれば、パラメータとして扱われる場合も
このプロセスを適用する際の主な難しさは、使用するノットの数とそれらを配置する場所を決定することです。de Boorは、この問題に対処するためのさまざまな戦略を提案しています。たとえば、ノット間の間隔は、データの曲率(2次導関数)に比例して減少します。いくつかのアプリケーションが公開されています。たとえば、単一のローレンツ曲線とガウス曲線をフィッティングするためのBスプラインの使用が調査されています。5、6、および7ノットの対称配置に基づいて、3〜7度の最適なスプライン関数が計算され、この方法が分光曲線の平滑化と微分に適用されました。比較可能な研究では、Savitzky-Golayフィルタリングとスプライン法の2次元バージョンは、移動平均またはチェビシェフフィルタリングよりも優れた結果をもたらしました。

コンピューター支援設計とコンピューターグラフィックス
コンピュータ支援設計およびコンピュータグラフィックスアプリケーション、スプライン曲線は、時にはとして表され (( )。
{C(t)}

 、いくつかの実パラメータのパラメトリック曲線 {t}

 。この場合、曲線 (( )。
{C(t)}

  2つまたは3つの別々の座標関数として扱うことができます(( (( )。 y(( )。 )。 { displaystyle(x(t)、y(t))}

 、 また(( (( )。 y(( )。 z(( )。 )。 { displaystyle(x(t)、y(t)、z(t))}

 。座標機能 (( )。
{x(t)}

 、 y (( )。
{y(t)}

  と z (( )。
{z(t)}

  それぞれのスプライン関数であり、共通のノット値のセットがあります 1
、 2 …
、 {t_ {1}、t_ {2}、 ldots、t_ {n}}

 。
Bスプラインは基底関数を形成するため、各座標関数はBスプラインの線形和として表すことができます。 (( )。= ∑
I I 私
、 (( )。Y(( )。= ∑ I y
I 私
、 (( )。Z(( )。= ∑ I z
I 私
、 (( )。 {{ begin {aligned} X(t)&= sum _ {i} x_ {i} B_ {i、n}(t)、\ Y(t)&= sum _ {i} y_ {i} B_ {i、n}(t)、\ Z(t)&= sum _ {i} z_ {i} B_ {i、n}(t)。 end {aligned}}}
  重み 私
{x_ {i}}

 、
y I {y_ {i}}

  と
z I {z_ {i}}

  組み合わせてポイントを形成できます 私 = (( I y I z 私)。
{P_ {i} =(x_ {i}、y_ {i}、z_ {i})}

 3D空間で。これらのポイント 私
{P_ {i}}

  一般にコントロールポイントとして知られています。
逆に作業すると、一連の制御点、ノット値、およびBスプラインの順序によってパラメトリック曲線が定義されます。コントロールポイントによる曲線のこの表現には、いくつかの便利なプロパティが
コントロールポイント 私
{P_ {i}}

 曲線を定義します。制御点がすべて、変換、回転、スケーリング、またはアフィン変換による移動など、何らかの方法で一緒に変換される場合、対応する曲線も同じ方法で変換されます。
Bスプラインは有限数のノット間隔でゼロ以外であるため、単一の制御点を移動すると、対応するパラメトリック曲線の変化は、少数のノット間隔のパラメーター範囲をわずかに超えます。
なぜなら ∑ 私 私
、 (( )。= 1
{ sum _ {i} B_ {i、n}(x)= 1}

 、そして常にそれぞれ 私
、 (( )。≥ 0
{B_ {i、n}(x) geq 0}

 の場合、曲線はコントロールポイントの境界ボックス内に残ります。また、ある意味で、曲線は広く制御点に従います。
あまり望ましくない機能は、パラメトリック曲線が制御点を補間しないことです。通常、曲線は制御点を通過しません。

NURBS
不均一な有理Bスプライン

  NURBS曲線–同次座標で定義された多項式曲線(青)とその平面への投影–有理曲線(赤)
コンピュータ支援設計、コンピュータ支援製造、およびコンピュータグラフィックス、Bスプラインの強力な拡張は、非一様有理Bスプライン(NURBS)です。NURBSは、基本的に同次座標のBスプラインです。Bスプラインと同様に、それらは順序、ノットベクトル、および制御点のセットによって定義されますが、単純なBスプラインとは異なり、制御点にはそれぞれ重みが重みが1に等しい場合、NURBSは単純にBスプラインであるため、NURBSはBスプラインとベジェ曲線およびサーフェスの両方を一般化します。主な違いは、NURBS曲線を「合理的」にする制御点の重みです。

パラメータのさまざまな値でNURBSを評価することにより、曲線を空間で追跡できます。同様に、2つのパラメータのさまざまな値でNURBSサーフェスを評価することにより、サーフェスをデカルト空間で表すことができます。
Bスプラインと同様に、NURBSコントロールポイントは曲線の形状を決定します。曲線の各ポイントは、いくつかのコントロールポイントの加重和を取ることによって計算されます。各ポイントの重みは、管理パラメーターによって異なります。次数dの曲線の場合、任意の制御点の影響は、パラメーター空間のd +1間隔(ノットスパン)でのみ非ゼロになります。これらの間隔内で、重みは次数dの多項式関数(基底関数)に従って変化します。間隔の境界では、基底関数は滑らかにゼロになり、滑らかさは多項式の次数によって決定されます。
ノットベクトルは、制御点がNURBS曲線に影響を与える場所と方法を決定する一連のパラメーター値です。ノットの数は、常に制御点の数に曲線の次数を加えたものに1を加えたものに等しくなります。パラメータ値が新しいノットスパンに入るたびに、新しいコントロールポイントがアクティブになり、古いコントロールポイントは破棄されます。
NURBS曲線は次の形式を取ります。 (( u
)。= ∑I= 1 k 私
、(( u
)。 w I 私 ∑ I= 1
k 私
、 (( u
)。w I
{C(u)= { frac { sum _ {i = 1} ^ {k} {N_ {i、n}(u)w_ {i} P} _ {i}} { sum _ { i = 1} ^ {k} {N_ {i、n}(u)w_ {i}}}}}
  ここでの表記は次のとおりです。uは(xの代わりに)独立変数、kは制御点の数、NはBスプライン(Bの代わりに使用)、nは多項式の次数、Pは制御点、wは重みです。分母は、すべての重みが1の場合に1に評価される正規化係数です。
これを次のように書くのが通例です (( u
)。= ∑I= 1 k 私
、 (( u
)。 私
{C(u)= sum _ {i = 1} ^ {k} R_ {i、n}(u)P_ {i}}
  その中で機能 私
、 (( u )。 = 私
、 (( u
)。w I
∑ = 1 k 、 (( u )。 w {R_ {i、n}(u)= {N_ {i、n}(u)w_ {i} over sum _ {j = 1} ^ {k} N_ {j、n}(u) w_ {j}}}
  有理基底関数として知られています。
NURBSサーフェスは、2つのNURBS曲線のテンソル積として取得されるため、2つの独立したパラメーターuおよびv(それぞれインデックスiおよびj)を使用します。 (( u v
)。= ∑
I= 1 k
∑ = 1 l 私
、 (( u v
)。 私
、 {S(u、v)= sum _ {i = 1} ^ {k} sum _ {j = 1} ^ {l} R_ {i、j}(u、v)P_ {i、j }}
  と 私
、 (( u v )。 = 私
、 (( u
)。 、 (( v
)。w I
、 ∑ =1 k
∑ = 1 l 、 (( u
)。 、 (( v )。 w 、 {R_ {i、j}(u、v)= { frac {N_ {i、n}(u)N_ {j、m}(v)w_ {i、j}} { sum _ {p = 1} ^ {k} sum _ {q = 1} ^ {l} N_ {p、n}(u)N_ {q、m}(v)w_ {p、q}}}}
  合理的な基底関数として。

も参照してください
ベジェ曲線
ボックススプライン
DeBoorアルゴリズム I-spline Mスプライン
スプラインウェーブレット
Tスプライン

ノート
^ 厳密に言えば、Bスプラインは通常左連続として定義されます。
^ Boorは、実験データの最小二乗フィッティングのためのFORTRANルーチンを提供します。

参考文献
^ Boor、p。114
^ Gary D. Knott(2000)、 3次スプラインの補間。スプリンガー。NS。151
^ Hartmut。、Prautzsch(2002)。ベジェおよびBスプライン手法。数学と視覚化。Boehm、Wolfgang。、Paluszny、Marco。ベルリン、ハイデルベルク:スプリンガーベルリンハイデルベルク。NS。63. doi:10.1007 / 978-3-662-04919-8。ISBN 9783662049198。OCLC  851370272。
^ Talebitooti、R。; Shojaeefard、MH; Yarmohammadisatri、Sadegh(2015)。「bスプライン曲線を使用した円筒形タンクの形状設計の最適化」。コンピューターと流体。109:100〜112。土井:10.1016 /j.compfluid.2014.12.004。
^ Boor、p113。
^ Boor、p131。
^ Boor、p。131
^ Boor、p。134。
^ Lee、ETY(1982年12月)。「簡略化されたBスプライン計算ルーチン」。コンピューティング。29(4):365–371。土井:10.1007 / BF02246763。
^ Lee、ETY(1986)。「いくつかのBスプラインアルゴリズムに関するコメント」。コンピューティング。36(3):229–238。土井:10.1007 / BF02240069。
^ Boor、322ページ。
^ Eilers、PHCおよびMarx、BD(1996)。Bスプラインとペナルティ(コメントとリジョインダー付き)による柔軟なスムージング。統計科学11(2):89-121。
^ アイラーズ、ポールHC; マルクス、ブライアンD.(2003)。「2次元のペナルティ付き信号回帰を使用した温度相互作用を伴う多変量キャリブレーション」。ケモメトリックスとインテリジェントラボシステム。66(2):159–174。土井:10.1016 / S0169-7439(03)00029-7。
^ Boor、p。115
^ カールソン、BC(1991)。「Bスプライン、超幾何関数、およびディリクレ平均」。近似理論ジャーナル。67(3):311–325。土井:10.1016 / 0021-9045(91)90006-V。
^ Glüsenkamp、T。(2018)。「重み付きモンテカルロデータの有限サイズからの不確実性の確率的処理」。EPJプラス。133(6):218 arXivの:1712.01293。Bibcode:2018EPJP..133..218G。土井:10.1140 / epjp / i2018-12042-x。 )。
^ Eugene V. Shikin; アレクサンドル1世プリス(1995年7月14日)。ユーザーのためのスプラインに関するハンドブック。CRCプレス。pp。96–。ISBN
 978-0-8493-9404-1。
^ Wernecke、Josie(1993)。「8」。Inventor Mentor:Open Inventor、リリース2(第1版)を使用したオブジェクト指向3Dグラフィックスのプログラミング。ボストン、MA、USA:アディソン・ウェスリー・ロングマン出版社ISBN
 978-0201624953。
^ Boor、第XIV章、p。235
^ ガンズ、ピーター; ギル、J。バーナード(1984)。「スプライン関数を使用した分光曲線の平滑化と微分」。応用分光法。38(3):370–376。Bibcode:1984ApSpe..38..370G。土井:10.1366 / 0003702844555511。
^ ヴィチェク、マリア; ニール、シャロンL。; ワーナー、イシアM.(1986)。「2次元蛍光データの時間領域フィルタリング」。応用分光法。40(4):542–548。Bibcode:1986ApSpe..40..542V。土井:10.1366 / 0003702864508773。
^ Piegl and Tiller、第4章、秒。2
^ Piegl and Tiller、第4章、秒。4
引用された作品
カール・ド・ブール(1978)。スプラインの実用ガイド。Springer-Verlag。ISBN 978-3-540-90356-7。
ピエグル、レス; ティラー、ウェイン(1997)。NURBSブック(第2版)。スプリンガー。ISBN 978-3-540-61545-3。

参考文献
リチャードH.バーテルズ; ジョンC.ビーティ; ブライアンA.バルスキー(1987)。コンピュータグラフィックスと幾何学的モデリングで使用するスプラインの紹介。モーガンカウフマン。ISBN 978-1-55860-400-1。
ジャンガリエ(1999)。幾何学的モデリングにおける曲線と表面:理論とアルゴリズム。モーガンカウフマン。第6章Bスプライン曲線。 この本は絶版であり、著者から自由に入手できます。
Hartmut Prautzsch; ヴォルフガングベーム; マルコ・パルスニー(2002)。ベジェおよびBスプライン手法。シュプリンガーサイエンス&ビジネスメディア。ISBN 978-3-540-43761-1。
デビッドサロモン(2006)。コンピュータグラフィックスの曲線と表面。スプリンガー。第7章Bスプライン近似。ISBN 978-0-387-28452-1。

外部リンク
ワイスタイン、エリックW. 「Bスプライン」。MathWorld。
ラフ、ヨハネス。「不均一なグリッド上の3次のBスプライン」 (PDF)。アーカイブ元 (PDF) 2013年11月6日に。
numpyからの2変量Bスプライン
JSXGraphを使用したインタラクティブBスプライン
TinySpline:さまざまな言語のバインディングを備えたオープンソースCライブラリ
均一な非有理Bスプライン、2D空間での曲線のモデリング。著者:ステファンG.ベック
ShukantPalによるBスプラインエディタ”

admin

Share
Published by
admin

Recent Posts

バーアム

Bar'am その他の使用法に…

2日 ago

Baqʽaʼ

Baq%CA%BDa%CA%B…

2日 ago

誘西鎮

Baq%C3%AAn_Town…

2日 ago

バチェン郡

Baq%C3%AAn_Coun…

2日 ago

バキアプレトリバー

Baqui%C3%A1_Pre…

2日 ago

Baquirivu-Guaçu川

Baquirivu-Gua%C…

2日 ago