how to make a smooth spline connection at endpoints?
Show older comments
I can draw a smooth spline across points but when I try to join the end to the beginning I get a sharp corner instead of a smooth connection. How can I smooth out the endpoint connection to make a smoothly shaped blob? Here's my code:
x1 = [0 2 1 4 3 2];
y1 = [1 0 2 1 3 2];
tnum = 1000;
t = linspace(0,1,tnum);
x1 = [x1 x1(1)]; % ADDING THE FIRST POINT TO THE END
y1 = [y1 y1(1)]; % ADDING THE FIRST POINT TO THE END
[xt yt] = ParametricSpline(x1, y1);
xref = ppval(xt, t);
yref = ppval(yt, t);
plot(x1, y1, 'o', xref, yref);
function [xtF, ytF] = ParametricSpline(x,y)
arc_length = 0;
n = length(x);
t = zeros(n, 1);
for i=2:n
arc_length = sqrt((x(i)-x(i-1))^2 + (y(i)-y(i-1))^2);
t(i) = t(i-1) + arc_length;
end
t=t./t(length(t));
xtF = spline(t, x);
ytF = spline(t, y);
end
2 Comments
darova
on 26 Mar 2020
What happens if you do spline twice (add the same points)?

mark palmer
on 26 Mar 2020
Accepted Answer
More Answers (0)
Categories
Find more on Interpolation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
