2023年就要到了!!
画个简简单单的烟花~
我保证再写几期好玩的就开始写建模算法啥的,毕竟美赛也快到了。

代码依旧是各种矩阵运算,建议17b之后版本使用,首先看一眼烟花效果哈:

随机颜色随机数量烟花,另外还添加了系统自带的音效,如果觉得不好听可以扔掉或者换点其他音效。

绘图原理

渐变的烟花是使用fill函数绘制的,只需要将最后一个数值设置为nan就能由面变成线:

x=linspace(1,10,30);
y=sin(x);
y(end)=NaN;
fill(x,y,y,'EdgeColor','interp','LineWidth',10);

完整代码

function fireWorks2023
% @author : slandarer% 坐标区域初始化及修饰
ax=gca;hold on;fig=gcf;
set(ax,'XLim',[0,20],'YLim',[0,20],'PlotBoxAspectRatio',[1,1,1],...'XColor','none','YColor','none','Color',[0,0,0],'Tag',char([100,105,115,112,...40,39,20316,32773,58,115,108,97,110,100,97,114,101,114,39,41]));eval(ax.Tag)
fig.Position(1:2)=fig.Position(1:2)/5;
fig.Position(3:4)=fig.Position(3:4).*2;
% 基础数据
baseNum=100;
interpNum=15;
fwSound=load('splat.mat');
% 绘制星星
scatter(rand(1,50)*20,rand(1,50).*10+10,4,'white','filled','MarkerEdgeColor','none','MarkerFaceAlpha',.6)
% 循环烟花升空绽放过程
while truerandFW(baseNum,interpNum,rand(3,3)./2+.5,randi(3))delete(findobj('type','patch'))pause(.5)
endfunction randFW(num1,num2,C,N)randC=rand(N,2).*[20,10]+[0,8];% 绘制升空过程scHdl=scatter(randC(:,1),randC(:,2).*0,25,'filled','CData',C(1:N,:));sound(fwSound.y(1:7200),fwSound.Fs/1.2)for k=0:.02:1pause(.02)scHdl.YData=randC(:,2).*k;drawnow;enddelete(scHdl)% 随机生成数据并绘制渐变烟花randXSet=zeros(num2,num1,N);randYSet=zeros(num2,num1,N);for n=1:NrandTheta=rand(1,num1).*2.*pi;randR=rand(1,num1).*3+2;randX=cos(randTheta).*randR;randY=sin(randTheta).*randR;randX=randX.*linspace(0,1,num2)';randY=randY.*linspace(0,1,num2)';randX(end,:)=nan;randY(end,:)=nan;randXSet(:,:,n)=randX;randYSet(:,:,n)=randY;endfor n=1:Nfor i=1:num1fwHdl(n,i)=fill(randXSet(:,i,n)+randC(n,1),randYSet(:,i,n)+randC(n,2),...linspace(0,1,num2),'EdgeColor','interp',...'LineWidth',2,'EdgeAlpha',.9,'FaceVertexCData',C(n,:).*linspace(0,1,num2)');endendsound(fwSound.y(7201:10001),fwSound.Fs)% 烟花绽放过程for k=.1:.05:1for n=1:Nfor i=1:num1fwHdl(n,i).XData=randXSet(:,i,n).*k+randC(n,1);fwHdl(n,i).YData=randYSet(:,i,n).*k+randC(n,2);endendpause(.001)drawnow;endend
end

考虑重力版

function fireWorks2023_g
% @author : slandarer% 坐标区域初始化及修饰
ax=gca;hold on;fig=gcf;
set(ax,'XLim',[0,20],'YLim',[0,20],'PlotBoxAspectRatio',[1,1,1],...'XColor','none','YColor','none','Color',[0,0,0],'Tag',char([100,105,115,112,...40,39,20316,32773,58,115,108,97,110,100,97,114,101,114,39,41]));eval(ax.Tag)
fig.Position(1:2)=fig.Position(1:2)/5;
fig.Position(3:4)=fig.Position(3:4).*2;
% 基础数据
baseNum=100;
interpNum=15;
fwSound=load('splat.mat');
% 绘制星星
scatter(rand(1,50)*20,rand(1,50).*10+10,4,'white','filled','MarkerEdgeColor','none','MarkerFaceAlpha',.6)
% 循环烟花升空绽放过程
while truerandFW(baseNum,interpNum,rand(3,3)./2+.5,randi(3))delete(findobj('type','patch'))pause(.5)
endfunction randFW(num1,num2,C,N)randC=rand(N,2).*[20,10]+[0,8];% 绘制升空过程scHdl=scatter(randC(:,1),randC(:,2).*0,25,'filled','CData',C(1:N,:));sound(fwSound.y(1:7200),fwSound.Fs/1.2)for k=0:.02:1pause(.02)scHdl.YData=randC(:,2).*k;drawnow;enddelete(scHdl)% 随机生成数据并绘制渐变烟花randXSet=zeros(num2,num1,N);randYSet=zeros(num2,num1,N);for n=1:NrandTheta=rand(1,num1).*2.*pi;randR=rand(1,num1).*3+2;randX=cos(randTheta).*randR;randY=sin(randTheta).*randR;randX=randX.*linspace(0,1,num2)';randY=randY.*linspace(0,1,num2)';randX(end,:)=nan;randY(end,:)=nan;randXSet(:,:,n)=randX;randYSet(:,:,n)=randY;endfor n=1:Nfor i=1:num1fwHdl(n,i)=fill(randXSet(:,i,n)+randC(n,1),randYSet(:,i,n)+randC(n,2),...linspace(0,1,num2),'EdgeColor','interp',...'LineWidth',2,'EdgeAlpha',.9,'FaceVertexCData',C(n,:).*linspace(0,1,num2)');endendsound(fwSound.y(7201:10001),fwSound.Fs)% 烟花绽放过程for k=.1:.05:1for n=1:Nfor i=1:num1fwHdl(n,i).XData=randXSet(:,i,n).*k+randC(n,1);R2=(randXSet(:,i,n).*k).^2+(randYSet(:,i,n).*k).^2;fwHdl(n,i).YData=randYSet(:,i,n).*k+randC(n,2)-R2./15;endendpause(.001)drawnow;endend
end




电脑比较好的可以试试这个3D版



function FireWorks3D
% @author : slandarerax=gca;hold on;grid on;view(-55,12)
ax.XLim=[0,20];
ax.YLim=[0,20];
ax.ZLim=[0,20];
ax.DataAspectRatio=[1,1,1];
ax.Projection='perspective';
ax.LooseInset=[0,0,0,0];
ax.Color=[0,0,0];
ax.Position=[-1/6,-1/6,1+1/3,1+1/3];
ax.XColor='none';
ax.YColor='none';
ax.ZColor='none';fig=gcf;
fig.Position(1:2)=fig.Position(1:2)/5;
fig.Position(3:4)=fig.Position(3:4).*2;
fig.Color=[0,0,0];[X,Y]=meshgrid(linspace(0,20,25));
scatter3(X(:),Y(:),X(:).*0+rand(length(X(:)),1)./10,5,'white','filled','MarkerEdgeColor','none','MarkerFaceAlpha',.6)% 基础数据
baseNum=100;
interpNum=15;
fwSound=load('splat.mat');while truerandFW(baseNum,interpNum,rand(3,3)./2+.5,randi(3))delete(findobj('type','patch'))ax.View(1)=ax.View(1)+1;pause(.5)ax.View(1)=ax.View(1)+1;
endfunction randFW(num1,num2,C,N)randC=rand(N,3).*[16,16,10]+[2,2,8];% 绘制升空过程scHdl=scatter3(randC(:,1),randC(:,2),randC(:,3).*0,25,'filled','CData',C(1:N,:));sound(fwSound.y(1:7200),fwSound.Fs/1.2)for k=0:.02:1ax.View(1)=ax.View(1)+.5;pause(.02)scHdl.ZData=randC(:,3).*k;drawnow;enddelete(scHdl)% 随机生成数据并绘制渐变烟花randXSet=zeros(num2,num1,N);randYSet=zeros(num2,num1,N);randZSet=zeros(num2,num1,N);for n=1:NrandTheta=rand(1,num1).*2.*pi;randPhi=rand(1,num1).*pi;randR=rand(1,num1).*3+2;randX=cos(randTheta).*sin(randPhi).*randR;randY=sin(randTheta).*sin(randPhi).*randR;randZ=cos(randPhi).*randR;randX=randX.*linspace(0,1,num2)';randY=randY.*linspace(0,1,num2)';randZ=randZ.*linspace(0,1,num2)';randX(end,:)=nan;randY(end,:)=nan;randZ(end,:)=nan;randXSet(:,:,n)=randX;randYSet(:,:,n)=randY;randZSet(:,:,n)=randZ;endfor n=1:Nax.View(1)=ax.View(1)+1;for i=1:num1fwHdl(n,i)=fill3(randXSet(:,i,n)+randC(n,1),randYSet(:,i,n)+randC(n,2),...randZSet(:,i,n)+randC(n,3),linspace(0,1,num2),'EdgeColor','interp',...'LineWidth',2,'EdgeAlpha',.5,'FaceVertexCData',C(n,:).*linspace(0,1,num2)');endendsound(fwSound.y(7201:10001),fwSound.Fs)% 烟花绽放过程for k=.1:.05:1ax.View(1)=ax.View(1)+1;for n=1:Nfor i=1:num1fwHdl(n,i).XData=randXSet(:,i,n).*k+randC(n,1);fwHdl(n,i).YData=randYSet(:,i,n).*k+randC(n,2);R2=(randXSet(:,i,n).*k).^2+(randYSet(:,i,n).*k).^2+(randZSet(:,i,n).*k).^2;fwHdl(n,i).ZData=randZSet(:,i,n).*k+randC(n,3)-R2./20;endendpause(.001)drawnow;endend
end

祝大家新年快乐!祝大家新的一年里项目顺利,竞赛通通拿大奖,狂发sci!!

MATLAB新年烟花祝MATLABer新年快乐相关推荐

  1. 新年最美表白烟花-祝大家新年快乐,表白成功

    ✨✨✨ 感谢优秀的你打开了小白的文章 "希望在看文章的你今天又进步了一点点,离美好生活更近一步!"

  2. 携22种编程语言,祝大家新年快乐!

    C:printf("祝大家新年快乐"); C++ : cout<<"祝大家新年快乐"; QBasic : Print "祝大家新年快乐&q ...

  3. Matlab放烟花 带音效哟 祝大家新年快乐

    这一次要更新的是用Matlab放烟花!祝大家新年快乐! 效果如下: 2021已然接近尾声,回顾这一年,总有这样或那样的收获,也有一些遗憾. 但是,一切过往,皆为序章. 这一期来填一下上上次留下的坑,用 ...

  4. 2010春节新年短信祝福语 祝大家新年快乐,万事如意!

    新年短信祝福:虎年有虎来守护,祝您全家都幸福.虎背驮来福寿禄,虎嘴衔来金满屋.虎腿迈着青云步,虎头顶着好仕途.虎爪劈开生财路,虎尾展开大鸿图. 新年短信祝福:思念是归乡的船,牵挂是扬起的帆,收获是走过 ...

  5. NKOJ C2153「迎新春,贺新年,LJ24祝大家新年快乐」赛后总结帖by TangH

    迎新春,贺新年,LJ24祝大家新年快乐 赛后谢罪反思 LJ24TangHaoLong「唐 浩滝」 Global Igoodvegetablea LJ24新春赛,实则是冬令营状压dp完结小测.OI赛制, ...

  6. 【新年祝福】散去2009分,祝大家新年快乐,祝所有朋友新的一年里万事如意。

    1 [新年祝福]散去2009分,祝大家新年快乐,祝所有朋友新的一年里万事如意. 2 [新年祝福]散去2009分,祝大家新年快乐,祝所有朋友新的一年里万事如意. 3 [新年祝福]散去2009分,祝大家新 ...

  7. 新年3D烟花秀,新年快乐代码,春节快乐代码,跨年立体烟花秀

    新年3D烟花秀,新年快乐代码,春节快乐代码,跨年立体烟花秀 运行效果 完整代码下载地址:新年3D烟花秀,新年快乐代码,春节快乐代码,跨年立体烟花秀 <!DOCTYPE html> < ...

  8. 新年寄语+从业感受+祝大家新年快乐~

    2023年祝愿自己少加点班,快速的成长. 最近被项目各种吊打,没有补充补充自己,有想说的很多东西和知识点,等项目结束有机会总结给大家看一下. 祝大家新年快乐. 想无病呻吟一下,聊一下个人从业5个月以后 ...

  9. 用pygame为大家燃放新年烟花

    参考文献:新年到~用Python安排一场烟花秀 (qq.com) 结尾附上源码 具体请看原文 本篇只介绍博主复刻后的相关笔记(学习心得) 大部分都在代码注释之中 原理介绍: 在介绍代码之前,先介绍下 ...

最新文章

  1. 点击右侧导航栏,实现iframe嵌入子页面中div,滑动到最上面
  2. [Linux] 权限与指令间的关系
  3. How to: Build a Client Application
  4. android编辑框显示,为EditText输入框加上提示信息
  5. Ubuntu18.04安装ROS Melodic(解决网络原因,先将所需压缩包下载到本地,然后rosdep update)
  6. 关于luarocks
  7. Matlab:厄米-高斯光束合成拉盖尔-高斯光束
  8. 免费rar密码破解工具排行榜
  9. python将图片转换成手绘_利用Python生成手绘效果的图片
  10. 用Python学《微积分B》(单调性与极值,凸性与拐点)
  11. 由海天瑞声支持,全球最大多领域英语开源数据集发布
  12. 文件的后缀名怎样重命名,重命名为大写字母
  13. 计算机二级办公软件高级应用操作题,谁有计算机二级办公软件高级应用技术word操作题目啊?...
  14. 目前最火热的IT技术有哪些?
  15. DBA观点分享:大数据对传统数据库的影响
  16. 9.进程监控(process_exporter)
  17. 什么是Redis内存碎片率?碎片如何清理?
  18. Java实现混音 音频合成_ffmpeg混音(将多个声音合成一个)命令
  19. 小米生态链:关于智能家居的故事
  20. nextjs学习笔记

热门文章

  1. google 所提供的各种服务
  2. c语言生成两位随机素数算法,[算法]费马小定理求质数的算法之Miller-Rabin算法,C语言实现 | 李大仁博客...
  3. 程序员Windows上应该知道的软件开发神器
  4. 猎奇LQ-185s手机镜头 摄影爱好者的福音
  5. 分析几款主流电子阅读器对TXT的分页处理
  6. Google Play开发者账号注册与失败申诉攻略
  7. 微信小程序 - 空数据、网络加载失败 组件
  8. 用计算机编制的设计文件包括,城市规划图集计算机编制.doc
  9. PM_28 招投标法、政府采购法
  10. export_store: invalid GPIO 47