• API
• FAQ
• Tools
• Archive
SHARE
TWEET # Untitled a guest Aug 19th, 2014 329 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
2. x = abs(M(:,1)');
3. y = abs(M(:,2)');
4. % calculate intermediate points so that we get an approximate equal spaced
5. % line of points
6. n = length(x);
7. xi = []; yi = [];
8.
9. stepsize = 0.3;%new stepsize
10.
11. original_stepsize = sqrt((x-[x(2:end),x(1)]).^2+(y-[y(2:end),y(1)]).^2);%os(i) = d(i,i+1)
12. for i=1:n
13.     t = linspace(0,1,original_stepsize(i)/stepsize);
14.     t = t(1:end-1);
15.     if i ~= n
16.         xi = [xi, x(i)*(1-t)+x(i+1)*t];
17.         yi = [yi, y(i)*(1-t)+y(i+1)*t];
18.     else %i==n
19.         xi = [xi, x(n)*(1-t)+x(1)*t];
20.         yi = [yi, y(n)*(1-t)+y(1)*t];
21.     end
22. end
23. %% animation
24. h = figure(1);
25. set(h, 'Position', [100, 100, 600, 600]);
26. filename = 'curve_shortening.gif';
27. flag_first = 1;
28.
29. timestepsize = 0.5;
30. totalit = 0;%total nubmer of iterations
31. for k=1:300
32.
33. plot(xi,yi,'-')
34. text(50,275,[num2str(totalit),' ',num2str(k)])
35. axis([-10,265,-10,265]);
36.
37. %calculate first and second derivatives
38.
39.     for l=1:k^0.8
40.         ddxi = [xi(2:end),xi(1)]-2*xi+[xi(end),xi(1:end-1)];
41.         ddyi = [yi(2:end),yi(1)]-2*yi+[yi(end),yi(1:end-1)];
42.         xi = xi+timestepsize*ddxi;
43.         yi = yi+timestepsize*ddyi;
44.         totalit = totalit+1;
45.
46.         if mod(k,1) == 0
47.             r = randi(length(xi),1,round(length(xi)*0.0005));%remove 0.05percent of points
48.             xi(r) = [];
49.             yi(r) = [];
50.         end
51.
52.     end
53. %capture image
54.     if mod(k,2) == 1
55.         set(gcf,'color',[1 1 1]);%white background
56.         axis off
57.         drawnow
58.         frame = getframe(1);
59.         im = frame2im(frame);
60.         [imind,cm] = rgb2ind(im,256);
61.         if flag_first == 1;
62.             imwrite(imind,cm,filename,'gif', 'Loopcount',inf, 'DelayTime',0.05);
63.             flag_first = 0;
64.         else
65.             imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.05);
66.         end
67.     end
68.
69. %pause(0.1)
70.
71. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
Top