⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fractal_frog.m

📁 该程序为matlab环境下程序
💻 M
字号:
matlab程序如下: 

function fractal5_liu; 
% 锯齿波生成元构成的分形(有点像两只青蛙) 
% Example: 
%     figure 
%     fractal5_liu; 
% 详细算法参见: 
% http://graphics.shu.edu.cn/course/fractal/ch3-5.htm 
% 
a1=axes; 
hold on 
a2=axes('position',[0.6,0.72,0.2,0.2]); 
hold on 
sx=120; 
sy=240;  % 开始点坐标 
gene=[0,120,-150,120,-150,120]/180*pi; 
RADIAN=1; 
b=0; 
c=0; 
A=0; 
a=0; 
for k=1:length(gene);            %% 缩小率和维数的计算 
   A=A+gene(k); 
   a=a+cos(RADIAN);    
   c=c+sin(RADIAN); 
   if abs(gene(k)-pi)>1e-5; 
       b=b+1; 
   end 
end 
s=A; 
t=atan(c/a); 
a=a/cos(t);   % 1/a为缩小比例 
D=log10(b)/log10(a)      % 分形维数 
rectangle('position',[55,-5,35,25]); 
z=15+sy/5+5i; 
A=pi/6; 
A=A-t; 
for k=1:length(gene);      % 发生器的描画[绘制生成元] 
   A=A+gene(k); 
   if abs(gene(k)-pi)>1e-5; 
       plot([z,z+40/a*exp(i*A)],'r','linewidth',2); 
       z=z+40/a*exp(i*A); 
   else 
       z=z+40/a*exp(i*A); 
   end 
end 
z=sx+i*sy; 
A=-pi/4; 
% line([50,95],[5,5]) 
% leng=400;  % 开始点与结束点的距离 
axes(a1); 
hold on 
[z,A]=fractal5sb(z,A,0,a,gene,t,s); 
                % 分形图形的描画 
axis equal 
axes(a2); 
axis equal 
axis off 

function [z,A]=fractal5sb(z,A,n,a,gene,t,s); 
% 分形图形描画函数 
N=5;   % 递归次数 
leng=400/a^n; 
if n>=N; 
   plot([170+200i-[z,z+leng*exp(i*A)]],'c'); 
   z=z+leng*exp(i*A); 
else 
   A=A-t; 
   for k=1:length(gene); 
       A=A+gene(k); 
       if abs(gene(k)-pi)>1e-5; 
           [z,A]=fractal5sb(z,A,n+1,a,gene,t,s); 
       else 
           z=z+leng/a*exp(i*A); 
       end 
   end 
   A=A-s+t; 
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -