Constructing Spline Curves in 2D and 3D
This example shows how to use the cscvn
command from Curve Fitting Toolbox™ to construct cubic spline curves in two and three dimensions.
Selecting the Points
This example will show how to draw a smooth curve through a list of points, in the order in which they occur. First, we select some random points in the plane, and store them in a matrix, one point per column.
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 = [];
Connecting the Points
Next, construct the curve using the cscvn
command and plot it using fnplt
.
hold on fnplt(cscvn(xy),'r',2) hold off
You could also use the getcurve
command if you wanted to input the list of points interactively.
3-D Spline Curves
It's just as easy to create spline curves in three dimensions. This time, we'll do something less random. First, we generate the points.
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
Connecting the Points
Here is the 3D spline curve through these points provided by cscvn
. By appending the first point to the end of the list, we get a smooth closed curve.
hold on fnplt(cscvn(xyz(:,[1:end 1])),'r',2) hold off