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 = [];

点の接続

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

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

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

点の接続

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

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