1701006480
1701006481
function IFS_draw(M,p) %迭代函数法生成分形图形的通用函数 %M是矩阵系数 %p是对应的几率 %比如M的取值是
: %I a(i) b(i) c(i) d(i) e(i) f(i) %1 0.3330 0 0 0.3330 0 0 %2 0.1670 -0.2890 0.2890 0.1670 0.3330 0 %3 0.1670 0.2890 -0.2890 0.1670 0.5000 0.2890 %4 0.3330 0 0 0.3330 0.6670 0 %p的取值是: % 0.2500 0.2500 0.2500 0.2500 N=30000; %迭代次数 for k=1
:length(p); %生成映射矩阵a1,a2,… eval([‘a’,num2str(k),’=reshape(M(‘,num2str(k),’,
:),2,3);’]); end xy=zeros(2,N); %设置迭代矩阵初值 pp=meshgrid(p); %生成网格矩阵 pp=tril(pp); %取上三角矩阵 pp=sum(pp,2); %对行向量求和,从而得到几率的累加结果 for k=1
:N-1; a=rand-pp; %计算随机数和几率向量的差值 d=find(a<=0); %找出满足几率条件的位置 xy(
:,k+1)=eval([‘a’,num2str(d(1)),’(
:,1:2)’])*xy(
:,k)+… eval([‘a’,num2str(d(1)),’(
:,3)’]);%计算迭代点和映射矩阵的乘积 end P=complex(xy(1,
:),xy(2,:)); %生成复数点 plot(P,‘k.’,‘markersize’,2); %画图 axis equal; %设置坐标轴属性
1701006482
1701006483
运行程序输出图形如图5-3所示。
1701006484
1701006485
1701006486
1701006487
1701006488
图5-3 素描树模拟
1701006489
1701006490
同样修改参数即可得到不同风格的素描树,程序如下:
1701006491
1701006492
clc,clear,close all %清屏和清除变量 warning off %消除警告 M=[0.06,0,0,0.6,0,0;… 0.04,0,0,-0.5,0,1;… 0.46,-0.34,0.32,0.38,0,0.6;… 0.48,0.17,-0.15,0.42,0,1;… 0.43,-0.26,0.27,0.48,0,1;… 0.42,0.35,-0.36,0.31,0,0.8]; %生成系数矩阵M p=[0.1,0.1,0.1,0.23,0.23,0.24]; %生成几率向量 IFS_draw(M,p); %调用函数绘图 axis image; %设置坐标轴属性 set(gcf,‘Color’,‘w’); %设置背景色为白色
1701006493
1701006494
运行程序输出图形如图5-4所示。
1701006495
1701006496
1701006497
1701006498
1701006499
图5-4 素描大树
1701006500
1701006502
5.1.3 Koch(科赫)曲线
1701006503
1701006504
Koch曲线是一个数学曲线,同时也是早期被描述的一种分形曲线。它由瑞典数学家Helge von Koch在1904年发表的一篇题为“从初等几何构造的一条没有切线的连续曲线”的论文中提出。
1701006505
1701006506
有一种Koch曲线是像雪花一样,被称为Koch雪花(或Koch星),它是由三条Koch曲线围成的等边三角形。
1701006507
1701006508
设想从一个线段开始,根据下列规则构造一个Koch曲线:
1701006509
1701006510
(1)三等分一条线段;
1701006511
1701006512
(2)用一个等边三角形替代第一步划分三等分的中间部分;
1701006513
1701006514
(3)在每一条直线上,重复第二步。
1701006515
1701006516
1701006517
1701006518
Koch曲线是以上步骤地无限重复的极限结果。Koch曲线的长度为无穷大,因为以上的变换都是一条线段变四条线段,每一条线段的长度是上一级的1/3,因此操作n步的总长度是:若,则总长度趋于无穷。
1701006519
1701006520
1701006521
1701006522
Koch曲线的分形维数是,其维数大于线的维数1,小于Peano填充曲线的维数2。Koch曲线是连续的,但是处处不可导的。Koch雪花的面积是,这里的s是最初三角形的边长,Koch雪花的面积是原三角形面积的8/5,它成为一条无限长的边界围绕着一个有限的面积的几何对象。
1701006523
1701006524
采用计算机进行Koch曲线模拟如下:
1701006525
1701006526
%Koch(科赫)曲线 clc,clear,close all %清屏和清除变量 warning off %消除警告 Koch(0,0,120,0,10); %生成Koch雪花图形
1701006527
1701006528
Koch曲线函数程序如下:
1701006529
[
上一页 ]
[ :1.70100648e+09 ]
[
下一页 ]