先看效果!
下雪啦!也用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技能也能一點點進步,
祝大家玩得開心,
關注作者公眾號 海洋紀 ,后臺回復 雪 獲取本文代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394098.html
標籤:其他
