function Sierpinski %Sierpinski MATLAB implementation of the Sierpinski. shg clf reset set(gcf,‘color‘,‘white‘,‘menubar‘,‘none‘, ... ‘numbertitle‘,‘off‘,‘name‘,‘Fractal Sierpinski‘) x = [0; 0]; darkgreen = [0 2/3 0]; plot(x(1),x(2),‘.‘,‘markersize‘,4,‘color‘,darkgreen) axis([-3 3 -3 3]) axis off stop = uicontrol(‘style‘,‘toggle‘,‘string‘,‘stop‘, ... ‘background‘,‘white‘); drawnow hold on p = [ 1/3 2/3 1 ]; A = [ 1/2 0; 0 1/2]; b1 = [0; 0]; b2 = [1/2; 0]; b3 = [1/4; sqrt(3)/4]; cnt = 1; tic while ~get(stop,‘value‘) r = rand; if r < p(1) x = A*x + b1; elseif r < p(2) x = A*x + b2; else x = A*x + b3; end plot(x(1),x(2),‘.‘,‘markersize‘,4,‘color‘,darkgreen) drawnow cnt = cnt + 1; end t = toc; s = sprintf(‘%8.0f points in %6.3f seconds‘,cnt,t); text(-1.5,-0.5,s,‘fontweight‘,‘bold‘); set(stop,‘style‘,‘pushbutton‘,‘string‘,‘close‘,‘callback‘,‘close(gcf)‘) hold off
分形现象在自然界普遍存在。以上MATLAB程序实现了Sierpinski‘s triangle。
按照不同的概率进行不同的仿射变换,最终画出图形。
随着时间的推移、采样点的增加,图形越来越明显。
时间: 2024-09-30 09:42:14