Construir curvas de spline en 2D y 3D
Este ejemplo muestra cómo usar el comando cscvn
de Curve Fitting Toolbox™ para construir curvas de spline cúbico en dos y tres dimensiones.
Seleccionar los puntos
Este ejemplo muestra cómo dibujar una curva suavizada a través de una lista de puntos, en el orden en el que se producen. Primero, seleccionamos puntos aleatorios en el plano y los almacenamos en una matriz, un punto por columna.
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 = [];
Conectar los puntos
A continuación, construya la curva utilizando el comando cscvn
y represéntela utilizando fnplt
.
hold on fnplt(cscvn(xy),'r',2) hold off
También podría utilizar el comando getcurve
si desease introducir la lista de puntos de forma interactiva.
Curvas de spline 3D
Es igual de sencillo crear curvas de spline en tres dimensiones. Esta vez, haremos algo menos aleatorio. Primero, generamos los puntos.
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
Conectar los puntos
A continuación, se muestra la curva del spline 3D a través de estos puntos proporcionada por cscvn
. Si añadimos el primer punto al final de la lista, obtenemos una curva cerrada suave.
hold on fnplt(cscvn(xyz(:,[1:end 1])),'r',2) hold off