第4章 迭代函数系统算法精选PPT.ppt
第4章 迭代函数系统算法参考书:分形算法与程序设计1第1页,本讲稿共13页参考书:分形算法与程序设计2混沌游戏混沌游戏混沌游戏混沌游戏4.14.1给定平面上三点给定平面上三点A,B,C。再任意给定初始点。再任意给定初始点Z0,做下列迭代。做下列迭代。+=+,2/)(,2/)(,2/)(1CZBZAZZnnnn当掷出的硬币呈正面当掷出的硬币呈反面当掷出的硬币呈侧面第2页,本讲稿共13页参考书:分形算法与程序设计3迭代函数系统迭代函数系统迭代函数系统迭代函数系统4.24.2迭代函数系统(Iterated Function System,IFS)是分形理论的重要分支。它将待生成的图像看成是由许多与整体相似的(自相似)或经过一定变换与整体相似的(自仿射)小块拼贴而成。第3页,本讲稿共13页参考书:分形算法与程序设计4相似变换与仿射变换相似变换与仿射变换相似变换与仿射变换相似变换与仿射变换直观上看:相似变换是指在各个方向上变换的比率必须相同的一种比例变换,仿射变换是指在不同的方向上变化的比率可以不同的一种比例变换。4.34.3相似变换:如果对于任意两点A、B,以及对应点A、B,总有AB=kAB(k为正实数),那么,这个变换叫做相似变换,实数k叫做相似比。仿射变换:x=ax+by+e y=cx+dy+f其中a,b,c,d,e,f为仿射变换系数。第4页,本讲稿共13页参考书:分形算法与程序设计54.44.4IFSIFS码码码码用多个仿射变换式表达一个图象w1,w2,w3,,使用每一个仿射变换式的概率p可以不同,一般面积越大,p值越大。于是,只要获得a,b,c,d,e,f,p(IFS码)的值便可以得到要表达的图形。x=a1x+b1y+e1 y=c1x+d1y+f1w1x=a2x+b2y+e2 y=c2x+d2y+f2w2x=a3x+b3y+e3 y=c3x+d3y+f3w3p1p2p3p1+p2+p3=1第5页,本讲稿共13页参考书:分形算法与程序设计64.54.5SierpinskiSierpinskiSierpinskiSierpinski垫片的垫片的垫片的垫片的IFSIFSIFSIFS生成生成生成生成 由于生成的三个小三角形的面积相等,所以我们可以让w1、w2、w3出现的概率相同或相近。x=0.5x y=0.5y x=0.5x+0.5 y=0.5y x=0.5x+0.25 y=0.5y-0.5 x=0.5x+0y+0 y=0 x+0.5y+0 x=0.5x+0y+0.5 y=0 x+0.5y+0 x=0.5x+0y+0.25 y=0 x+0.5y-0.5w1w2w3第6页,本讲稿共13页参考书:分形算法与程序设计74.54.5SierpinskiSierpinskiSierpinskiSierpinski垫片的垫片的垫片的垫片的IFSIFSIFSIFS生成生成生成生成 算法:算法:IFS标题:标题:IFS生成算法生成算法参数:参数:n(迭代次数)m(存储IFS码值)变量:变量:a,b,c,d,e,f,p(IFS码变量)函数:函数:Pset(x,y)(画点函数)Rand(随机函数)BEGIN /IFS码赋值 m0,0=0.5;m0,1=0;m0,2=0 m0,3=0;m0,4=0;m0,5=0 m0,6=0.333 m1,0=0.5;m1,1=0;m1,2=0 m1,3=0.5;m1,4=0.5;m1,5=0 m1,6=0.333 m2,0=0.5;m2,1=0;m2,2=0 m2,3=0.5;m2,4=0.25;m2,5=0.5 m2,6=0.334 n=6000 WHILE n0 p=Rand SWITCH(P)CASE IS=m0,6 a=m0,0;b=m0,1;c=m0,2 d=m0,3;e=m0,4;f=m0,5 BREAK CASE IS=(m0,6+m1,6)a=m1,0;b=m1,1;c=m1,2 d=m1,3;e=m1,4;f=m1,5 BREAK第7页,本讲稿共13页参考书:分形算法与程序设计84.54.5SierpinskiSierpinskiSierpinskiSierpinski垫片的垫片的垫片的垫片的IFSIFSIFSIFS生成生成生成生成 CASE IS=(m0,6+m1,6+m2,6)a=m2,0;b=m2,1;c=m2,2 d=m2,3;e=m2,4;f=m2,5 BREAK CASE IS10 THEN Pset(m,n)ENDIF wx=x-cx wy=y-cy IF wx0 THEN theta=atan(wy/wx)ENDIF IF wx0 THEN theta=PI+atan(wy/wx)ENDIF IF wx=0 THEN theta=PI/2 ENDIF第12页,本讲稿共13页参考书:分形算法与程序设计134.84.8复平面上的复平面上的复平面上的复平面上的IFSIFSIFSIFS算法算法算法算法 theta=theta/2 r=sqit(wx*wx+wy*wy)k=rand rnd=k/RAND_MAX IF rnd0.5 THEN r=sqrt(r)ELSE r=-sqrt(r)ENDIF x=r*cos(theta)y=r*sin(theta)ENDFOREND第13页,本讲稿共13页