下雪啦 也用Matlab实现大雪纷飞 Matlab雪花

先看效果!

下雪啦!也用Matlab实现大雪纷飞!Matlab 雪花!

0.前言

今天,这个冬天的第一场雪,来了。

对于在南方生活的孩子来说,对于下雪天总有一种莫名的期待,下雪天可以打雪仗、堆雪人,三五成群的总是会玩得很开心。下雪天,浪漫而又美丽。

今天,很多城市都下雪了,#长沙下雪# 也登上了热搜,如果你所在的城市没有下雪,是不是期待这个冬天有一场雪降临在你的城市呢?

都说Matlab除了不会生孩子,其他都会,那么TA会下雪吗?

1.准备工作

安装好Matlab,且对Matlab运行概念具备一定的认知。

2.动起手来

首先,布个景吧,为了让白色的雪显得真实一点,先建立一个深色的背景,让雪花飘在这个背景上。

obj.fh = figure('Color', 'black', ...
                'Tag', 'snowFig', ...
                'NumberTitle', 'off', ...
                'Name', '瑞雪兆丰年!公众号:海洋纪', ...
                'Menu', 'none', ...                
                'DockControl', 'off', ...                
                'Units', 'pixels', ...                
                'HandleVisibility', 'on');

然后,再在这个背景上新建一个待会儿下雪用到的的axes,可以认为是在背景板上多加了一个图层,一般Matlab新建一个图层都是自带tick的,把这个tick设置为空。

snow_axes_hdl = axes('Parent', obj.fh, ...                
'Units', 'normalized', ...                
'Position', [0 0 1 1], ...                
'Color', [0 0 0], ...                
'XLim', [0 1], ...                
'YLim', [0 1], ...                
'NextPlot','add', ...                
'Visible', 'off', ...                
'XTick', [], ...                
'YTick', []);

设置一些雪花的基础信息,雪花多少片,大小,颜色等。

尝试改一改这些参数看看效果如何。

fps = 25;            
sf_color =0.9;            
% - For snowflakes -            
num_snowflakes = 150;            
snowflakes_size = 11;            
snowflakes_color = sf_color.*[1 1 1];            
height_range = 3;

关键的是雪花要动起来,那么他就得以一定的速度和方向运动,这里让速度和方向是随机的值。

snowflakes_x = rand(1, num_snowflakes); 
snowflakes_y = rand(1, num_snowflakes);            
snowflakes_y = (snowflakes_y .* height_range.^3).^(1/3)+1;
snowflakes_v = rand(1, num_snowflakes).0.1 + 0.1;  % (distance per second)            
snowflakes_theta = (rand(1, num_snowflakes).60 + 240).*pi/180;

接下来是重头戏啦,为什么能让雪花动态的运动?

建立一个Matlab的定时器(timer),这是Matlab实现大雪纷飞的关键部分,有兴趣的同志可以多去了解一下定时器相关功能。

obj.snow_timer = timer('TimerFcn', @obj.updateSnow_Callback,... 
'ExecutionMode','fixedRate',...                
'Period', 1./fps, 'BusyMode', 'queue');

最后,启动定时器即可。

start(obj.snow_timer);

3.结语

简单的介绍了一下Matlab实现大雪纷飞效果的代码。

大家可以根据自己的想法在这个基础上改进,在实现过程中Matlab技能也能一点点进步。

祝大家玩得开心。

关注作者公众号 海洋纪 ,后台回复 获取本文代码。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值