先看效果!
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技能也能一点点进步。
祝大家玩得开心。
关注作者公众号 海洋纪 ,后台回复 雪
获取本文代码。
Original: https://blog.csdn.net/liu08_13/article/details/122161907
Author: 看海实验室
Title: 下雪啦 也用Matlab实现大雪纷飞 Matlab雪花
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644821/
转载文章受原作者版权保护。转载请注明原作者出处!