您的位置:首页 > 理论基础

Sierpinski三角

2015-10-28 00:00 344 查看
摘要: 计算机图形 分形 MATLAB

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。

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



随着时间的推移、采样点的增加,图形越来越明显。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息