matlab绘制烟花,[原创]利用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 1 1],...

'EraseMode' , 'xor',...

'color',[0 0 0]);

setappdata(gcf,'HandleParticle',h);

start(timerB);

end

end

%--------------------------------------------------------------------------

%  定时器回调函数(粒子)

%--------------------------------------------------------------------------

function TimerFcnB(timerB,event)

tb = get(timerB,'TasksExecuted')*0.15;

if age>0 && any(colordist>=0.05)

colormat = colormat*rate(k);

colordist = sqrt(sum(colormat.^2,2));

for i = 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

33 -jQuery 属性操作,文档操作(未完成)

转载于:https://www.cnblogs.com/venicid/p/9110130.html

GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)

接着前面的文章&#xff0c;这篇文章就来说说menory alignment -- 内存对齐. 一、为什么需要内存对齐&#xff1f; 无论做什么事情&#xff0c;我都习惯性的问自己&#xff1a;为什么我要去做这件事情&#xff1f; 是啊&#xff0c;这可能也是个大家都会去想的问题&#xff0c;…

mysql权限说法正确的是,【多选题】下面关于修改 MySQL 配置的说法中,正确的是...

参考答案如下【单选题】4.正常枕先露分娩时&#xff0c;多选的说仰伸发生于()39、题下【单选题】人们常常用来判断一种活动是不是游戏的一项外部指标是( )面关【多选题】S-S法阶段2训练内容包括于修【判断题】痉挛性睑内翻多发生于下睑。配置【判断题】萤火虫不仅成虫会发光,其…

读取exchange邮件的未读数(转载)

protected void Page_Load(object sender, EventArgs e) { Response.Write("administrator的未读邮件数是&#xff1a;" UnReadCount("administratordomainname")); } int UnReadCount(string userMailAddress) {…

嵌入式Linux下Qt的中文显示

一般情况下&#xff0c;嵌入式Qt界面需要中文显示&#xff0c;下面总结自己在项目中用到的可行的办法 1&#xff0c;下载一种中文简体字体&#xff0c;比如我用的是”方正准圆简体“&#xff0c;把字体文件放在ARM开发板系统的Qt字库中&#xff0c;即/usr/lib/fonts下 2&#x…

Robot Framework + Selenium library + IEDriver环境搭建

转载&#xff1a;https://www.cnblogs.com/Ming8006/p/4998492.html#c.d 目录&#xff1a; 1 安装文件准备2 Robot框架结构3 环境搭建 3.1 安装Python 3.2 安装Robot Framework 3.3 安装wxPython 3.4 安装RIDE 3.5 安装Selenium2Library 3.6 安装IEDriverServer 1 安装文…

php静态地图api,静态图API | 百度地图API SDK

百度地图静态图API&#xff0c;可实现将百度地图以图片形式嵌入到您的网页中。您只需发送HTTP请求访问百度地图静态图服务&#xff0c;便可在网页上以图片形式显示您的地图。静态图API较之JavaScript API载入的动态网站&#xff0c;既能满足基本的地图信息浏览&#xff0c;又能…

[XMOVE自主设计的体感方案] XMove Studio管理系统(二)应用开发API简要介绍

一. XMove的开放式应用开发框架简介 XMove4.0以开放式的结构满足扩展性的要求。所有无线协议&#xff0c;底层算法和控制逻辑全部上移到PC端。节点只根据接受的控制逻辑返回传感器数据。新的架构使得开发新应用非常方便。 本节将主要介绍XMove应用开发API及其使用。 二. 注册新…

搭建服务器Apache+PHP+MySql需要注意的问题

参见https://www.cnblogs.com/bytebull/p/7927542.html 一、软件下载的都是用zip压缩文件&#xff0c;三个软件均需手动配置&#xff0c;若想省事&#xff0c;可考虑phpstudy&#xff0c;一键安装。 我的服务器文件目录&#xff1a; 二、安装PHP时需注意&#xff0c;新版本的PH…

php行为日志,利用ThinkPHP的行为扩展做系统日志

1&#xff1a;模块配置&#xff1a;return array(action_end > array(Admin\\Behaviors\\LogBehavior),);2&#xff1a;数据库建表&#xff1a;create table logs(id int(11) primary key auto_increment,url char(30) not null,operator int(11) not null,description char…

nagios搭建(一):nagios3.2的搭建

此文章的大多地方采用的是elain的博客内容&#xff1a;http://elain.blog.51cto.com/3339379/711549小部分内容是自己的从别的文章总结过来的&#xff0c;已经试验过了1.需要的软件包&#xff1a;nagios-3.2.0.tar.gz nagios的主软件包nagios-cn-3.2.0.tar.…

0530JavaScript基础2

常用内置对象 所谓内置对象就是ECMAScript提供出来的一些对象&#xff0c;我们知道对象都是有相应的属性和方法 数组Array&#xff08;部分相当于列表&#xff09; 1.数组的创建方式 var colors [red,color,yellow]; 使用构造函数&#xff08;后面会讲&#xff09;的方式创建 …

html php获取post数据格式,html - php文件无法得到POST过来的数据

php文件无法得到POST过来的数据&#xff0c;通过$_SERVER得到如下Array([HOSTNAME] > localhost.localdomain[PATH] > /usr/local/bin:/usr/bin:/bin[TMP] > /tmp[TMPDIR] > /tmp[TEMP] > /tmp[OSTYPE] >[MACHTYPE] >[MALLOC_CHECK_] > 2[USER] > w…

.net mvc 超过了最大请求长度 限制文件上传大小

在我们的项目中遇到"超过了最大请求长度"如下图所示,是因为IIS默认请求长度4M,当请求长度大于这个值的时候报错,下面是解决方案. 解决方案:修改web.config文件 1、注意在mvc中有两个web.config文件&#xff0c;如下图&#xff0c;一个位于Views下&#xff0c;是用来控…

ubuntu php 树莓派,树莓派3 安装ROS环境(ubuntu mate 16.04+kinetic)

1.刷系统下载ubuntu-mate-16.04镜像下载页面 https://ubuntu-mate.org/download/点击下载64位ubuntu-mate-16.04-desktop-armhf-raspberry-pi2.安装镜像树莓派3-系统安装-Windows下利用Win32DiskImager进行系统安装3.设置网络连接网线&#xff0c;使用DHCP自动获取IP地址和DNS。…

Android AlertDialog学习

1. 有两个按钮的对话框 Builder buildernew AlertDialog.Builder(AlertDialogActivity.this); builder.setIcon(android.R.drawable.btn_plus); builder.setTitle("btnplus"); builder.setMessage("去不去&#xff1f;"); builder.setPositiveButton("…

分布式之缓存击穿

什么是缓存击穿 在谈论缓存击穿之前&#xff0c;我们先来回忆下从缓存中加载数据的逻辑&#xff0c;如下图所示 因此&#xff0c;如果黑客每次故意查询一个在缓存内必然不存在的数据&#xff0c;导致每次请求都要去存储层去查询&#xff0c;这样缓存就失去了意义。如果在大流量…

php为什么都不想去二次开发,php学习误区:不要盲目的去读程序

最近感到很郁闷&#xff0c;细数了一下自己读过的程序&#xff0c;真的是多之又多&#xff0c;比如比较流行的有&#xff1a;织梦系统(dedecms) php168phpcms ,论坛类的 discuz phpwind还有现在用的wordpress程序自己都读过&#xff0c;但是朋友问你一个关于这几个系统的几个函…

(转)VS2010 快捷键

之前写代码很少用到快捷键&#xff0c;感觉用鼠标也一样&#xff0c;但是还是觉得能熟练用快捷键的人很牛一样的&#xff0c;相信很多人也有我一样的想法的&#xff0c;现在我还是觉得记些快捷键还是很有必要的(或者是为了看起来更牛点吧 )&#xff0c; 所以这样转载下VS2010快…

Unity按钮禁用和变灰

this.GetComponent<Button>().enabled false;//禁用按钮 如果需要将按钮变灰&#xff0c;则需要另外处理最近才发现一个禁用和变灰的按钮&#xff0c;这几年的代码我踏马真是白写了 this.GetComponent<Button>().interactable false;//禁用和变灰转载于:https://…