Этот пример показывает, как использовать команду 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 = [];
Затем, создайте кривую с помощью команды cscvn
и постройте его с помощью fnplt
.
hold on fnplt(cscvn(xy),'r',2) hold off
Вы могли также использовать команду getcurve
, если бы вы хотели ввести список точек в интерактивном режиме.
Столь же легко создать сплайновые кривые в трех измерениях. На этот раз мы сделаем что-то менее случайное. Во-первых, мы генерируем точки.
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
Вот 3D сплайновая кривая через эти точки, обеспеченные cscvn
. Путем добавления первой точки в конец списка мы получаем сглаженную замкнутую кривую.
hold on fnplt(cscvn(xyz(:,[1:end 1])),'r',2) hold off