このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
rpmak
有理スプラインの組み立て
構文
rp = rpmak(breaks,coefs)
rp = rpmak(breaks,coefs,d)
rpmak(breaks,coefs,sizec)
rs = rsmak(knots,coefs)
rs = rsmak(shape,parameters)
説明
rpmak
と rsmak
はどちらも、最小限の情報から有理スプラインを組み立てます。また、rsmak
は、標準の幾何学的形状を記述する有理スプラインを提供するためにも使用されます。有理スプラインは、スカラー値またはベクトル値でなければなりません。
rp = rpmak(breaks,coefs)
は、得られる pp 型が有理スプライン (つまり、rp 型) としてタグ付けされる点を除き、コマンド ppmak(breaks, coefs)
と同じ効果があります。
この意味を説明するために、R をコマンド ppmak(breaks,coefs)
によって組み立てられる区分的多項式とし、r(x) = s(x)/w(x) をコマンド rpmak(breaks,coefs)
によって組み立てられる有理スプラインとします。v
が x での R の値の場合、v(1:end-1)/v(end)
が x での r の値となります。つまり、R(x) = [s(x);w(x)] です。それに応じて、r のターゲットの次元は、R のターゲットの次元より 1 小さくなります。特に、R の (ターゲットの) 次元は少なくとも 2 でなければなりません。つまり、coefs
によって指定される係数は、d
> 1 の d
ベクトルでなければなりません。入力配列 breaks
および coefs
の解釈方法、さらに、特定の区分的多項式を生成するためにそれらを指定する方法については、ppmak
を参照してください。
rp = rpmak(breaks,coefs,d)
は、得られる pp 型が rp 型であるとしてタグ付けされる点を除き、ppmak(breaks,coefs,d+1)
と同じ効果があります。オプションの 3 番目の引数を使用してターゲットの次元を指定する場合は、同じ係数配列 coefs
の rpmak
と ppmak
にそれぞれ異なる値が必要である点に注意してください。
rpmak(breaks,coefs,sizec)
は、結果の pp 型が rp 型であるとしてタグ付けされ、ターゲットの次元が sizec(1)-1
になる点を除いて、ppmak(breaks,coefs,sizec)
と同じ効果があります。
rs = rsmak(knots,coefs)
は、同様に spmak(knots,coefs)
に関係し、rsmak(knots,coefs,sizec)
は spmak(knots,coefs,sizec)
に関係しています。特に、rsmak(knots,coefs)
は B 型の有理スプラインを組み立てます。つまり、rB 型を提供します。入力配列 knots
および coefs
の解釈方法、さらに、特定の区分的多項式を生成するためにそれらを指定する方法については、spmak
を参照してください。
rs = rsmak(shape,parameters)
は、文字ベクトルまたは string スカラー shape
とオプションの追加の parameters
によって指定された形状を記述する rB 型の有理スプラインを提供します。具体的には、以下から選択できます。
rsmak('arc',radius,center,[alpha,beta]) rsmak('circle',radius,center) rsmak('cone',radius,halfheight) rsmak('cylinder',radius,height) rsmak('southcap',radius,center) rsmak('torus',radius,ratio)
ここで、radius
、halfheight
、および height
の既定値は 1
、center
の既定値は原点で、弧は alpha
から beta
までのすべての角度を通過します (既定値は [-pi/2,pi/2]
)。また、円すい、円柱、およびトーラスは原点を中心とし、その大円が (x,y) 面にあります。トーラスの小円の半径は radius*ratio
で、ratio
の既定値は 1/3
です。
これらから、fncmb
(rs,transformation)
を使用して、アフィン変換によって関連する形状を生成できます。
fnint
、fnder
、fndir
を除くすべての fn...
コマンドが有理スプラインを処理できます。
例
次のコマンドを見てみましょう。
runges = rsmak([-5 -5 -5 5 5 5],[1 1 1; 26 -24 26]); rungep = rpmak([-5 5],[0 0 1; 1 -10 26],1);
どちらも、区間 [-5 .. 5] における有理多項式 r(x) = 1/(x2 + 1) の説明を提供します5].ただし、区間 [-5 .. 5] の外部では、runges
によって与えられた関数は 0 で、rungep
によって与えられた有理スプラインはすべての x について 1/(x2 + 1) に一致します。
回転した円すいの Figure は、以下のコマンドによって生成されます。
fnplt(fncmb(rsmak('cone',1,2),[0 0 -1;0 1 0;1 0 0])) axis equal, axis off, shading interp
有理二次スプラインによって与えられた回転した円すい
いくつかの屈曲をもつらせんを示すらせん は、以下のコマンドによって生成されます。
arc = rsmak('arc',2,[1;-1],[0 7.3*pi]); [knots,c] = fnbrk(arc,'k','c'); helix = rsmak(knots, [c(1:2,:);aveknt(knots,3).*c(3,:); c(3,:)]); fnplt(helix)
らせん
より詳しい例については、NURBS とその他の有理スプラインを参照してください。