sierpinski_rug.m
来自「包括Koch曲线、Levy 曲线、分形树、Sierpinski三角形」· M 代码 · 共 50 行
M
50 行
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 + =
减小字号Ctrl + -
显示快捷键?