好玩的Matlab 3D心形代码

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析无线通信深度学习图像处理计算机视觉信号处理、量化金融与风险管理、机器人,控制系统等领域。

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。

MATLAB和MathematicaMaple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对CFORTRANC++JAVA的支持。

 

clear;  clc;  close all; 

f = @(x, y, z)(x.^2 + 2.25*y.^2 + z.^2 - 1).^3 -  ...
    x.^2.* z.^3 - 0.1125*y.^2.*z.^3;

g = @(x, y, z)(sqrt(x.^2+y.^2)-2.5).^2 + z.^2 - 0.4^2;

t = linspace(-5, 5);

[x1, y1, z1] = meshgrid(t);

[x2, y2, z2] = meshgrid(t);

val1 = f(x1, y1, z1);

val2 = g(x2, y2, z2);

[p1, v1] = isosurface(x1, y1, z1, val1, 0);

[p2, v2] = isosurface(x2, y2, z2, val2, 0);

figure()

subplot(1, 1, 1)

h = patch('faces',p1,'vertices',v1,'facevertexcdata',jet(size(v1,1)),...
    'facecolor','w','edgecolor','flat'); hold on;

patch('faces',p2,'vertices',v2,'facevertexcdata',jet(size(v2,1)),...
    'facecolor','w','edgecolor','flat');

grid on; axis equal; axis([-3,3,-3,3,-1.5,1.5]); view(3)

title()

warning('off');

T = suptitle("$I\ Love\ U\ !$"); 

set(T,'Interpreter','latex','FontSize',24)

pic_num = 1;

for i = 1:20
    
    v1 = 0.98 * v1;
    
    set(h, 'vertices', v1); drawnow;
    
    F = getframe(gcf);
    
    I = frame2im(F);
    
    [I,map]=rgb2ind(I,256);
    
    if pic_num == 1
        
        imwrite(I,map,'BeatingHeart.gif','gif','Loopcount',inf,'DelayTime',0.05);
        
    else
        
        imwrite(I,map,'BeatingHeart.gif','gif','WriteMode','append','DelayTime',0.05);
        
    end
    
    pic_num = pic_num + 1;
    
end

for i = 1:20
    
    v1 = v1 / 0.98;
    
    set(h, 'vertices', v1); drawnow;
    
    F = getframe(gcf);
    
    I = frame2im(F);
    
    [I,map] = rgb2ind(I,256);
    
    imwrite(I,map,'BeatingHeart.gif','gif','WriteMode','append','DelayTime',0.05);
    
    pic_num = pic_num + 1;
    
end

  • 12
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值