Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rpmak

有理スプラインの組み立て

構文

rp = rpmak(breaks,coefs)
rp = rpmak(breaks,coefs,d)
rpmak(breaks,coefs,sizec)
rs = rsmak(knots,coefs)
rs = rsmak(shape,parameters)

説明

rpmakrsmak はどちらも、最小限の情報から有理スプラインを組み立てます。また、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 番目の引数を使用してターゲットの次元を指定する場合は、同じ係数配列 coefsrpmakppmak にそれぞれ異なる値が必要である点に注意してください。

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)

ここで、radiushalfheight、および height の既定値は 1center の既定値は原点で、弧は alpha から beta までのすべての角度を通過します (既定値は [-pi/2,pi/2])。また、円すい、円柱、およびトーラスは原点を中心とし、その大円が (x,y) 面にあります。トーラスの小円の半径は radius*ratio で、ratio の既定値は 1/3 です。

これらから、fncmb(rs,transformation) を使用して、アフィン変換によって関連する形状を生成できます。

fnintfnderfndir を除くすべての 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 とその他の有理スプラインを参照してください。

参考

| | |