Построение сплайн в 2D и 3D

В этом примере показано, как использовать cscvn команда из Curve Fitting Toolbox™ для построения кубических сплайн в двух и трёх размерностях.

Выбор точек

В этом примере показано, как нарисовать сглаженную кривую через список точек в том порядке, в котором они происходят. Во-первых, мы выбираем некоторые случайные точки в плоскости и храним их в матрице, по одной точке на столбец.

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-D кривых сплайна

Так же легко создать сплайн в трёх размерностях. На этот раз мы сделаем что-то менее случайное. Во-первых, мы генерируем точки.

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.

Соединение точек

Вот 3D сплайн кривая через эти точки, обеспечиваемая cscvn. Добавляя первую точку в конец списка, мы получаем плавную замкнутую кривую.

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.