This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


"Natural" or periodic interpolating cubic spline curve


curve = cscvn(points)


curve = cscvn(points) returns a parametric variational, or natural, cubic spline curve (in ppform) passing through the given sequence points(:j), j = 1:end. The parameter value t(j) for the jth point is chosen by Eugene Lee's [1] centripetal scheme, i.e., as accumulated square root of chord length:

i<jpoints(:,i+1)points (:,i)2

If the first and last point coincide (and there are no other repeated points), then a periodic cubic spline curve is constructed. However, double points result in corners.


The following provides the plot of a questionable curve through some points (marked as circles):

points=[0 1 1 0 -1 -1 0 0; 0 0 1 2 1 0 -1 -2]; 
fnplt(cscvn(points)); hold on, 
plot(points(1,:),points(2,:),'o'), hold off

Here is a closed curve, good for 14 February, with one double point:

c=fnplt(cscvn([0 .82 .92 0 0 -.92 -.82 0; .66 .9 0 ...
-.83 -.83 0 .9 .66])); fill(c(1,:),c(2,:),'r'), axis equal

More About

collapse all


The break sequence t is determined as

t = cumsum([0;((diff(points.').^2)*ones(d,1)).^(1/4)]).';

and csape (with either periodic or variational end conditions) is used to construct the smooth pieces between double points (if any).


[1] E. T. Y. Lee. "Choosing nodes in parametric curve interpolation." Computer-Aided Design 21 (1989), 363–370.

See Also

| |

Was this topic helpful?