MATLAB绘制心形线动图

随笔

以前在公众号里面看到一幅心形线的动图,可惜找不到原图了。刚好今天复习MATLAB,以为我的编码技术有进步,其实,还是个渣渣…

网络上绘制的图

尽管没写出来,在网上找到了源代码,原理是通过保存一次次图片组合成的GIF图片!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
%% 
clc;clear;
a = 20;
x=-2:0.01:2;

figure(1);
set(gcf,'position',[0,0,800,600],'color','w');
for i = 1:200
str_title= strcat ('\color{red}a=',num2str(a));
y=abs(x).^(2/3) + (0.9*sqrt((3.3-x.^2))).*sin(a*pi*x);
a=i/10;
figure(i);
set(gcf, 'position',[0,0,800,600],'color','w');
pl = plot(x,y,'r','LineWidth',3);hold on;
title('\color{red}f(x)=x^2^/^3+e/3*(π-x^2)^1^/^2*sin(a*π*x)','fontsize',20)
text(-0.2,2.3,str_title,'FontName','Times New Roman', 'FontSize',20);
xlim([-2 2]);
ylim([-1.5 2.5]);
frame = getframe(gcf);
im=frame2im(frame);
[I,map]=rgb2ind(im,256);
if i==1
imwrite(I,map,'心.gif','gif','Loopcount',Inf,'DelayTime',0.05); % 保存为GIF图
else
imwrite(I,map,'心.gif','gif','WriteMode','append','DelayTime',0.05);
end
close(figure(i));
end

几个重要函数:
1、getframe:捕获坐标区或图窗作为影片帧。
2、gcf:返回当前figure的句柄。
3、frame2im:返回与影片帧关联的图像数据。输出一个三维矩阵。
4、rgb2ind:将rgb图像转化成索引图像。
5、imwrite,当写第一帧的时候,使用Loopcount的inf,当其他帧的时候,使用WriteMode的append追加。

跟记忆中比较接近的是:

扩展:33张数学动图火了

本文作者:Anthony

本文链接: https://blog.youdef.com/posts/44.html

评论

您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。