Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

2 次元および 3 次元のスプライン曲線の作成

この例では、Curve Fitting Toolbox™ の cscvn コマンドを使用して、2 次元および 3 次元の 3 次スプライン曲線を作成する方法を示します。

点の選択

この例では、点のリストから、その点の出現順に滑らかな曲線を描画する方法を示します。まず、平面の点をランダムにいくつか選択し、"列" ごとに 1 点ずつそれを行列に格納します。

npts = 10;
xy = [randn(1,npts); randn(1,npts)];
plot(xy(1,:),xy(2,:),'ro','LineWidth',2);
text(xy(1,:), xy(2,:),[repmat('  ',npts,1), num2str((1:npts)')])
ax = gca;
ax.XTick = [];
ax.YTick = [];

Figure contains an axes. The axes contains 11 objects of type line, text.

点の接続

次に、cscvn コマンドを使用して曲線を作成し、fnplt を使用してそれをプロットします。

hold on
fnplt(cscvn(xy),'r',2)
hold off

Figure contains an axes. The axes contains 12 objects of type line, text.

getcurve コマンドを使用して、点のリストを対話的に入力することもできます。

3 次元のスプライン曲線

3 次元のスプライン曲線も同じく簡単に作成できます。今回は、あまりランダムでないものを作成します。まずは点を生成します。

npts = 13;
t = linspace(0,8*pi,npts);
z = linspace(-1,1,npts);
omz = sqrt(1-z.^2);
xyz = [cos(t).*omz; sin(t).*omz; z];
plot3(xyz(1,:),xyz(2,:),xyz(3,:),'ro','LineWidth',2);
text(xyz(1,:),xyz(2,:),xyz(3,:),[repmat('  ',npts,1), num2str((1:npts)')])
ax = gca;
ax.XTick = [];
ax.YTick = [];
ax.ZTick = [];
box on

Figure contains an axes. The axes contains 14 objects of type line, text.

点の接続

次に、cscvn で得られる、これらの点を通る 3 次元のスプライン曲線を示します。リストの最後に最初の点を追加すると、滑らかな "閉じた" 曲線が得られます。

hold on
fnplt(cscvn(xyz(:,[1:end 1])),'r',2)
hold off

Figure contains an axes. The axes contains 15 objects of type line, text.