首页/文章/ 详情

七夕整活系列:动态心形曲线

1年前浏览294
七夕要到了,给大家用MATLAB整点活儿。先来个动态变化的心形曲线。心形曲线是通过特定的解析函数绘制的,函数表达式参见代码,通过调整解析函数的参数可以调整心形曲线的形状,从而实现动态变化。曲线各个分段的颜色可以通过更改线条颜色的RGB值进行调节,要输入的文字也可以更改。运行程序后会在工作目录生成多张图片,图片的数量也可以更改。这些图片可以利用PS或者其他在线工具合成为gif图片,因此图片数量越多心形曲线的变化会更流畅,当然也可以直接用MATLAB生成gif图片。下面是最终效果。

代码如下。

    clear,clc%*****************************绘图参数输入*********************************fig_num=100;                                     %绘制图片数量a=linspace(0,20,fig_num);                       %调整曲线形状的常数Sample_num=1000;                                %曲线数据点的数量xrange_lower=-2;                                %曲线x范围的下限xrange_upper=2;                                 %曲线x范围的上限xdata_lower=-1.8;                               %曲线数据x范围的下限xdata_upper=1.8;                                %曲线数据x范围的上限Color_Map=[255 192 203;           %粉红           0 206 209;             %暗宝石绿            233 150 122;           %DarkSalmon           255 20 147;            %DeepPink           255 255 0;             %yellow               20 168 255;            %blue           20 168 255;           255 255 0;           255 20 147;           233 150 122;           0 206 209;           255 192 203];          %存放曲线颜色的RGB值                       %**************************************************************************Color_num=size(Color_Map,1);      %获取曲线颜色数量Data_index=linspace(1,Sample_num,Color_num+1);figure('position', get(0,'ScreenSize'));for i=1:fig_num    %生成曲线数据    x=linspace(xdata_lower,xdata_upper,Sample_num);    y=abs(x.^(2/3))+exp(1)/3*(abs(pi-x.^2)).^(1/2).*sin(a(i)*pi*x);    %绘制曲线    for j=1:Color_num        plot(x(floor(Data_index(j)):floor(Data_index(j+1))),...            y(floor(Data_index(j)):floor(Data_index(j+1))),...            'Color',Color_Map(j,:)/255,...            'LineWidth',1.5);        hold on;    end    axis equal;    %绘制文字    text(-1.5,-1,{'From:','Name'},...        'Color',[238/255 99/255 87/255],'FontSize',35,...        'FontWeight','bold','FontName','Script MT bold');    text(0.8,-1,{'To:','Name'},...        'Color',[238/255 99/255 87/255],'FontSize',35,...        'FontWeight','bold','FontName','Script MT bold');       axis([xrange_lower xrange_upper -1.5 2.5]);    hold off;    fig_name=[num2str(i) '.jpg'];    saveas(gcf,fig_name);end
    来源:FEM and FEA
    MATLAB
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2023-05-30
    最近编辑:1年前
    追逐繁星的Mono
    硕士 签名征集中
    获赞 45粉丝 82文章 64课程 0
    点赞
    收藏
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈