📄 recurs_polygon3.m
字号:
function [z,A]=recurs_polygon3(z,A,n);
% 正多边形为构成元素的递归图形
% Example:
% [z,A]=recurs_polygon3(0,-pi/2,1);
if nargin==0;
z=0;A=-pi/2;n=1;
end
axis off;
nr=3; % 旋转对称次数
N=7; % 递归次数
sc=0.63; % 缩小比例
ang=2*pi/nr;
hold on;
warning off ;
rand('state',n) ;
C=rand(1,3);
if n<N ;
r=sc^n;
[z,A,P]=polygonn(z,A,r);
fill(real(P),imag(P),C);
if abs(1-n)<1e-5;
m=nr;
k=0;
else
m=nr-1;
k=1;
end
for p=1:m;
A=A+pi;
A=A+(p+k-1)*ang;
z=z+(r*(1+sc))*exp(i*A);
[z,A]=recurs_polygon3(z,A,n+1);
A=A+pi;
z=z+r*(1+sc)*exp(i*A);
A=A-(p+k-1)*ang;
end
end
axis equal
function [z,A,P]=polygonn(z,A,r);
nr=3; % 旋转对称次数
ks=sin(pi/nr);
ang=2*pi/nr;
A=A+pi;
z=z+r*exp(i*A);
A=A+pi/2+ang/2;
P=z;
for k=1:nr
% plot([z,z+2*r*ks*exp(i*A)]);
z=z+2*r*ks*exp(i*A);
P=[P,z];
A=A+ang;
end
A=A+pi/2-ang/2;
z=z+r*exp(i*A);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -