📄 recurs_star7.m
字号:
function [z,A]=recurs_star7(z,A,n);
% 星形为构成元素的递归图形
% Example:
% [z,A]=recurs_star7(0,-pi/2,1);
% 算法参见:
% http://graphics.shu.edu.cn/course/fractal/ch5-5.htm
if nargin==0;
z=0;A=-pi/2;n=1;
end
hold on;
nr=7; % 旋转对称次数
N=5; % 递归次数
sc=0.3; % scale缩小率
kr=4;
ang=pi/nr/2;
rand('state',n+10) ;
C=rand(1,3);
if n<N;
r=sc^n;
[z,A,P]=star7(z,A,r);
fill(real(P),imag(P),C);
if abs(n-1)<1e-5;
m=nr;
k=0;
else
m=nr-1;
k=1;
end
for p=1:m;
A=A+pi;
A=A+(p-1+k)*kr*ang;
z=z+r*(1+sc)*exp(i*A);
[z,A]=recurs_star7(z,A,n+1);
A=A+pi;
z=z+r*(1+sc)*exp(i*A);
A=A-(p-1+k)*kr*ang;
end
end
axis equal ;
% figure;fill(real(P),imag(P),'b')
function [z,A,P]=star7(z,A,r);
% 星形描画函数
nr=7;
ang=pi/nr/2;
ks=2*cos(pi/nr/2);
A=A+pi;
z=z+r*exp(i*A);
A=A+pi-ang;
P=z;
for k=1:nr;
plot([z,z+r*ks*exp(i*A)]);
z=z+r*ks*exp(i*A);
P=[P,z];
A=A+pi-2*ang;
end
A=A+ang;
z=z+r*exp(i*A);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -