MATLAB程序演示烟花燃放过程.docx
- 文档编号:231293
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:5
- 大小:13.34KB
MATLAB程序演示烟花燃放过程.docx
《MATLAB程序演示烟花燃放过程.docx》由会员分享,可在线阅读,更多相关《MATLAB程序演示烟花燃放过程.docx(5页珍藏版)》请在冰豆网上搜索。
MATLAB程序演示烟花燃放过程
烟花(礼花)的朵朵绽放给夜空带来炫彩,瞬间绚丽至极,迸射出璀璨夺目的光彩。
只是还来不及在脑海中印上花魂,她已昙花一现般,烟花(礼花)朵朵绽放,瞬间绚丽至极,迸射出璀璨夺目的光彩。
只是还来不及在脑海中印上花魂,她已昙花一现般的消逝了。
多少人痴迷于烟花的美,痴迷于她飘忽不定的幻影。
利用MATLAB程序演示烟花的美,虽然她不如现实那样逼真,但一样会吸引人。
附源程序:
functionfirework
%烟花烟花满天飞
%CopyRight:
xiezhh(谢中华)
%2011.6.25
OldHandle=findobj('Type','figure','Tag','FireWork');
ifishandle(OldHandle)
close(OldHandle);
end
%图形窗口初始化
fig=figure('units','normalized','position',[0.10.10.80.8],...
'menubar','none','name','烟花满天飞(谢中华制作)',...
'numbertitle','off','color',[000],'tag','FireWork');
%烟花炸开前的初始位置
h0=line(0,0,0,'linestyle','none',...
'marker','.',...
'markersize',18,...
'MarkerEdgeColor',[111],...
'MarkerFaceColor',[111],...
'EraseMode','xor');
%设置坐标系显示属性
axisequal
axis([-5050-50500100])
axisoff
view(-42,22)
%设置参数
rate=1:
-0.01:
0;%颜色衰减率
v0=45;%烟花头初始速度
g=-9.8;%重力加速度
usedtime=-v0/g;%烟花头爆炸前所经历时间
zs=v0*usedtime+0.5*g*usedtime^2;%烟花头爆炸前达到的最高高度
theta=rand(250,1)*2*pi;%各粒子速度的方位角
phi=rand(250,1)*2*pi-pi;%各粒子速度的仰角
age=20;%粒子生存期
%常用颜色矩阵
colormat=[1.00.50.5
1.00.750.5
1.01.00.5
0.751.00.5
0.51.00.5
0.51.00.75
0.51.01.0
0.50.751.0
0.50.51.0
0.750.51.0
1.00.51.0
1.00.50.75];
%随机产生各粒子对应的颜色序号
colorid=randsample(12,250,true);
%粒子对应的颜色矩阵
colormat=colormat(colorid,:
);
%粒子颜色与背景色(夜色)的距离
colordist=sqrt(sum(colormat.^2,2));
v1=20;%粒子的初始速度
k=1;%颜色衰减率初始序号
timerA=timer('TimerFcn',@TimerFcnA,...
'executionmode','fixedspacing','Period',0.001);
start(timerA);
h=getappdata(gcf,'HandleParticle');
timerB=timer('TimerFcn',{@TimerFcnB},...
'executionmode','fixedspacing','period',0.001);
%--------------------------------------------------------------------------
%定时器回调函数(烟花头)
%--------------------------------------------------------------------------
functionTimerFcnA(timerA,event)
ta=get(timerA,'TasksExecuted')*0.1;
ifta<=usedtime
z=v0*ta+0.5*g*ta^2;
set(h0,'zdata',z,...
'MarkerEdgeColor',[111],...
'MarkerFaceColor',[111])
drawnow
%pause(0.01)
else
delete(h0)
stop(timerA);
x0=zeros(2,250);
y0=zeros(2,250);
z0=zs*ones(2,250);
h=line(x0,y0,z0,'linestyle','none',...
'marker','h',...
'markersize',12,...
'MarkerEdgeColor',[111],...
'MarkerFaceColor',[111],...
'EraseMode','xor');
setappdata(gcf,'HandleParticle',h);
start(timerB);
end
end
%--------------------------------------------------------------------------
%定时器回调函数(粒子)
%--------------------------------------------------------------------------
functionTimerFcnB(timerB,event)
tb=get(timerB,'TasksExecuted')*0.15;
ifage>0&&any(colordist>=0.05)
colormat=colormat*rate(k);
colordist=sqrt(sum(colormat.^2,2));
fori=1:
250
xi=v1*cos(phi(i))*cos(theta(i))*tb;
yi=v1*cos(phi(i))*sin(theta(i))*tb;
zi=zs+v1*sin(phi(i))*tb+0.5*g*tb^2;
set(h(i),'XData',xi,'YData',yi,'ZData',zi,...
'MarkerEdgeColor',colormat(i,:
),...
'MarkerFaceColor',colormat(i,:
))
end
drawnow
age=age-0.1;
k=k+1;
else
stop(timerB);
delete(h)
end
end
%-------------------
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 程序 演示 烟花 燃放 过程