Sierpinski三角

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。

按照不同的概率进行不同的仿射变换,最终画出图形。

Sierpinski三角

随着时间的推移、采样点的增加,图形越来越明显。

你可能感兴趣的:(matlab,分形,计算机图形)