MATLAB程序演示烟花燃放过程.docx

上传人:b****1 文档编号:231293 上传时间:2022-10-07 格式:DOCX 页数:5 大小:13.34KB
下载 相关 举报
MATLAB程序演示烟花燃放过程.docx_第1页
第1页 / 共5页
MATLAB程序演示烟花燃放过程.docx_第2页
第2页 / 共5页
MATLAB程序演示烟花燃放过程.docx_第3页
第3页 / 共5页
MATLAB程序演示烟花燃放过程.docx_第4页
第4页 / 共5页
MATLAB程序演示烟花燃放过程.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MATLAB程序演示烟花燃放过程.docx

《MATLAB程序演示烟花燃放过程.docx》由会员分享,可在线阅读,更多相关《MATLAB程序演示烟花燃放过程.docx(5页珍藏版)》请在冰豆网上搜索。

MATLAB程序演示烟花燃放过程.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1