1701006473
5.1.2 素描树
1701006474
1701006475
为了较好模拟自然界的树模型,MATLAB软件提供了强大的绘图功能,用户只需要合理地掌握和运行绘图功能,即能运行输出用户想要的图像。编写程序输出素材大树的图像如下:
1701006476
1701006477
clc,clear,close all %清屏和清除变量 warning off %消除警告 M=[-0.64,0,0,0.5,0.86,0.25;… -0.04,-0.47,0.07,-0.02,0.49,0.51;… 0.2,0.33,-0.49,0.43,0.44,0.25;… 0.46,-0.25,0.41,0.36,0.25,0.57;… -0.06,0.45,-0.07,-0.11,0.59,0.1]; %生成系数矩阵M p=[0.06,0.22,0.23,0.24,0.25]; %生成几率向量 IFS_draw(M,p); %调用函数绘图 axis image; %设置坐标轴属性 set(gcf,‘Color’,‘w’); %设置背景色为白色
1701006478
1701006479
相应的素描绘图程序如下:
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
[
上一页 ]
[ :1.701006472e+09 ]
[
下一页 ]