设为首页收藏本站

EPS数据狗论坛

搜索
快捷导航
查看: 72|回复: 0

表白代码

[复制链接]

1

主题

60

金钱

83

积分

新手用户

发表于 2020-7-29 10:26:51 | 显示全部楼层 |阅读模式
动态心形线(来自微信公众号 MATLAB与数学建模)
clear
close all
%确定x,y,z坐标取值
[x,y,z]=meshgrid(linspace(-3,3,101));
axis off;
set(gcf,'color',[1 1 1]);
%定义三维心形线函数,求解f(x,y,z)=0,可得心形线坐标
f=@(x,y,z)(x.^2+ (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9/80)*y.^2.*z.^3;
val=f(x,y,z);
view(3);
%建立gif文件
[A,map] = rgb2ind(frame2im(getframe),256);
imwrite(A,map,'xin.gif','LoopCount',65535,'DelayTime',0.1);
%绘制与YOZ平行的平面上的心形线
for X = 35:67
    %提取不同X取值下,与YOZ平行的平面上,f(y,z)取值
    plane = reshape(val(:,X,,101,101);
    %提取val为0的等值线,即满足f(y,z)=0的坐标点
    c_data = contourc(plane,[0,0]);
    x_data = X*ones(1,c_data(2,1));
    %绘制在YOZ平行平面上的心形线
    plot3(x_data,c_data(2,2:end),c_data(1,2:end),'r');
    axis([30,80,30,80,30,80])
    axis off
    hold on
    %将当前图像保存到gif文件中
    [A,map] = rgb2ind(frame2im(getframe),256);
    imwrite(A,map,'xin.gif','WriteMode','append','DelayTime',0.2);
end
%绘制XOZ平行平面上的心形线
for Y = 41:61
    plane = reshape(val(Y,:,:),101,101);
    c_data = contourc(plane,[0 0]);
    y_data = Y*ones(1,c_data(2,1));
    plot3(c_data(2,2:end),y_data,c_data(1,2:end),'r');
    axis([30,80,30,80,30,80])
    [A,map] = rgb2ind(frame2im(getframe),256);
    imwrite(A,map,'xin.gif','WriteMode','append','DelayTime',0.2);
end
%绘制XOY平行面上的心形线
for Z = 36:71
    plane = val(:,:,Z);
    c_data = contourc(plane,[0 0]);
    s = 1;
    if length(c_data(2,:)) > (c_data(2,1)+1)
        s = c_data(2,1)+2;
        z_data = Z*ones(1,c_data(2,1));
        hold on
        plot3(c_data(1,2s-1)),c_data(2,2:(s-1)),z_data,'r');
        axis([30,80,30,80,30,80])
        [A,map] = rgb2ind(frame2im(getframe),256);
        imwrite(A,map,'xin.gif','WriteMode','append','DelayTime',0.2);
        pause('on')
        pause(0.2)
    end
    z_data = Z.*ones(1,c_data(2,s));
    plot3(c_data(1,(s+1):end),c_data(2,(s+1):end),z_data,'r');
    axis([30,80,30,80,30,80])
    [A,map] = rgb2ind(frame2im(getframe),256);
    imwrite(A,map,'xin.gif','WriteMode','append','DelayTime',0.2);
end

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
9:00-18:00
QQ群:
542280196
联系电话:
010-85786021-8014
在线咨询
客服中心

Powered by BFIT! X3.2© 2008-2018 BFIT Inc.

快速回复 返回顶部 返回列表