📄 sierpinski_rug.m
字号:
function Sierpinski_rug(n)
% 生成Sierpinski地毯
% Examples:
% Sierpinski_rug(7)
global A_d
global Rm
global Lm
% axis off;
Lm='+R-L-R+'; Rm='-L+R+L-';
x0=0; y0=0; anglez0=0; A_d=pi/3;
ch=A_Iterate(n);
run_order(x0,y0,anglez0,ch);
% clear;
%******************************************************************************
function ch=A_Iterate(n);
if n==0;
ch='L';
elseif n>0;
ch=a_Ite(A_Iterate(n-1));
end
%******************************************************************************
function cha=a_Ite(ch)
global Rm
global Lm
cha=[];
for s=1:length(ch);
if ch(s)=='R';
cha=strcat(cha,Rm);
elseif ch(s)=='L';
cha=strcat(cha,Lm);
elseif ch(s)=='+' | '-';
cha=strcat(cha,ch(s));
end
end
%******************************************************************************
function run_order(x0,y0,anglez0,ch)
global A_d
for s=1:length(ch);
if ch(s)=='+';
anglez0=anglez0+A_d; % '+ '
elseif ch(s)=='-';
anglez0=anglez0-A_d; % '- '
elseif ch(s)=='R' | 'L';
x=x0+cos(anglez0); y=y0+sin(anglez0);
line([x0,x],[y0,y]);
x0=x; y0=y;
end
end
%******************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -