Main Content

NURBS とその他の有理スプライン

有理スプラインの紹介

有理スプラインは、定義では、2 つのスプラインの比である関数です。

r(x)=s(x)/w(x)

w はスカラー値である必要がありますが、s は通常、ベクトル値になるように選択されます。さらに、w(x) は関心のあるすべての x で非ゼロであることが望まれます。

有理スプラインは、通常のスプラインとは対称的に、円錐曲線などの特定の基本的なデザイン形状を正確に記述する場合に使用できるため、一般的に使用されています。

rs 型: rp 型、rB 型

有理スプライン r(x)=s(x)/w(x) 内の 2 つのスプライン s と w は、互いに関連している必要はありません。それらの型が異なっていることもあり得ます。ただし、このツールボックスのコンテキストでは、それらが同じ型および同じ次数であり、同じブレークまたは節点をもつように制限すると便利です。その前提で、以下の (ベクトル値) スプライン関数によって有理スプラインを表すことができます。

R(x)=[s(x);w(x)]

上記の各値は、有理スプライン r の値より 1 つ多いエントリをもつベクトルです。これを有理スプラインの "rs 型" と呼びます。より正確には、s と w が pp 型か B 型かに応じて、"rp 型" または "rB 型" と呼びます。内部的には、これらの有理型と、その対応する通常のスプライン型、rp 型、および B 型は、それらの型の部分、つまり、fnbrk(r,'form') から取得された出力のみによって区別されます。fn... コマンドに、いずれかの rs 型の関数で適切に動作するように警告するには、これで十分です。

たとえば、fnval の場合と同様に、R(x) から r(x) を取得するのは非常に簡単です。v が x における R の値である場合、v(1:end-1)/v(end) は x における r の値です。さらに、dv が DR(x) の場合、(dv(1:end-1)-dv(end)*v(1:end-1))/v(end) は Dr(x) です。より一般的には、ライプニッツの公式により、

Djs=Dj(wr)=i=0j(ji)DiwDjir

したがって次のようになります。

Djr=(Djsi=1j(ji)DiwDjir)/w

これは、s と w の微分 (つまり、R の微分) を、次数が j 未満の r の微分と共に使用して、r の微分を帰納的に計算し、r の j 番目の微分を計算できることを示しています。この帰納的な手法を fntlr で使用して、有理スプラインの最初の数多くの微分を提供できます。多変量有理スプラインには、偏導関数と方向導関数用の対応する公式があります。

関連するトピック