绚丽烟花的matlab源程序.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
绚丽烟花的matlab源程序

function firework % 烟花烟花满天飞 % CopyRight:xiezhh(谢中华) % 2011.6.25 OldHandle = findobj( 'Type', 'figure', 'Tag', 'FireWork' ) ; if ishandle(OldHandle) close(OldHandle) ; end % 图形窗口初始化 fig = figure('units','normalized','position',[0.1 0.1 0.8 0.8],... 'menubar','none','name','烟花满天飞(谢中华制作)',... 'numbertitle','off','color',[0 0 0],'tag','FireWork'); % 烟花炸开前的初始位置 h0 = line(0,0,0,'marker','.',... 'markersize',18,... 'MarkerEdgeColor',[1 1 1],... 'MarkerFaceColor',[1 1 1],... 'EraseMode' , 'xor',... 'color',[0 0 0]); % 设置坐标系显示属性 axis equal axis([-50 50 -50 50 0 100]) axis off 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.0 0.5 0.5 1.0 0.75 0.5 1.0 1.0 0.5 0.75 1.0 0.5 0.5 1.0 0.5 0.5 1.0 0.75 0.5 1.0 1.0 0.5 0.75 1.0 0.5 0.5 1.0 0.75 0.5 1.0 1.0 0.5 1.0 1.0 0.5 0.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); %-------------------------------------------------------------------------- % 定时器回调函数(烟花头) %-------------------------------------------------------------------------- function TimerFcnA(timerA,event) ta = get(timerA,'TasksExecuted')*0.1; if ta <= usedtime z = v0*ta+0.5*g*ta^2; set(h0,'zdata',z,... 'MarkerEdgeColor',[1 1 1],... 'MarkerFaceColor',[1 1 1]) 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,'marker','h',... 'markersize',12,... 'MarkerEdgeColor',[1 1 1],... 'MarkerFaceColor',[1

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档