刷B站视频刷到这么一个视频:
感觉挺有趣的,直接复刻一下,matlab代码如下:
%Author@https://space.bilibili.com/51126650
%% canvas
clear
format long
fig=figure();
screenSize=get(0,'ScreenSize');
fig.Position=[screenSize(1,[3,4])./10,screenSize(4).*0.6,screenSize(4).*0.6];
fig.Name='New Curves';
fig.NumberTitle='off';
ax=axes(fig);
ax.Position=[0 0 1 1];
hold(ax,'on');
ax.XLim=[-2 2];
ax.YLim=[-2 2];
ax.XTick=[];
ax.YTick=[];
ax.XColor='none';
ax.YColor='none';
ax.Color=[249,247,246]./255;
%% Core
a_max=9;
b_max=18;
c_max=25;
n=5000;
%此行之下几乎不用调整
a=1:((a_max-1)/n):a_max;
b=1:((b_max-1)/n):b_max;
c=0:(c_max/n):c_max;
line=plot(0,0,'b','LineWidth',1.5);
for i=1:n
[x,y]=getR(a(i),b(i),c(i),0:0.01:(i*0.01));
% [x,y]=getR(a_max,b_max,c_max,0:0.01:n); %取消注释此行可以直接看最后结果
line.XData=x;
line.YData=y;
drawnow
pause(0.001)
end
function [x,y]=getR(a,b,c,t)
x=cos(a*t)+cos(b*t)/2+sin(c*t)/3;
y=sin(a*t)+sin(b*t)/2+cos(c*t)/3;
end
代码结果如下 :