1 / 33

第 10 章 分 形 造 型

第 10 章 分 形 造 型.  一、分形的概念  分形是最近二十多年来发展起来的新  学科。分形的原文是 Fractals ,是由著  名数学家 B . Mandelbrot 于 1975 年用  拉丁词根构造的单词,他创立了独立  于欧几里德几何学之外的数学方法:  分形几何。. 自然界中存在着不可胜数的不规则形 体。多少年来,人们都是用传统的几  何方法对它们进行描述,采用的主要  手段是用规则形体去逼近。这种用规  则形体去描述不规则形体所得到的结  果,与现实是有很大差距的,并且这  种方法需要大量的数据,所以有时甚

syshe
Download Presentation

第 10 章 分 形 造 型

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第10章 分 形 造 型

  2.  一、分形的概念  分形是最近二十多年来发展起来的新  学科。分形的原文是 Fractals,是由著  名数学家 B . Mandelbrot 于1975 年用  拉丁词根构造的单词,他创立了独立  于欧几里德几何学之外的数学方法:  分形几何。

  3. 自然界中存在着不可胜数的不规则形 体。多少年来,人们都是用传统的几  何方法对它们进行描述,采用的主要  手段是用规则形体去逼近。这种用规  则形体去描述不规则形体所得到的结  果,与现实是有很大差距的,并且这  种方法需要大量的数据,所以有时甚  至是不可能的。

  4.  其实,当用计算机模拟自然景物时, 最主要的是所生成的对象确实使人感 受到是预期的那一类,而不必非是某 个具体的个体。因此,为此目的,不 必使用大量的数据。是很自然的。 分形几何学的创立,为自然景物的描 述和计算机模拟提供了强有力的数学 工具。正因为如此,所以人们说,分 形是大自然的几何学。

  5.  分形具有下面列出的典型几何性质  (1)分形集都具有任意小尺度下的  比例细节,或者说它具有精细的结构。  (2)分形集不能用传统的几何语言  来描述,它既不是满足于某些条件的  点的轨迹,也不是某些简单方程的解  集。

  6.  (3)分形集具有某种自相似的形式,  可能是近似的或统计的自相似。  (4)一般说来,分形集的维数是一  个分数,所以分形也称为分数维;  (5)在大多数令人感兴趣的情形下,  分形集由非常简单的方法定义,可以  用变换的迭代产生。

  7.  分形的四种构成方法  (1)基于L系统的分形模型  (2)迭代函数系统模型  (3)粒子系统模型  (4)随机插值模型

  8.  二、典型的分形模型

  9.   1 .Koch 曲线 ( 1 ) Koch 曲线的生成规则 Koch 曲线是 Von Koch 于1904年第一  次描述的。它的构造是:迭代初始把  原线段去掉中间的三分之一,代之以  底边在被去线段上的等边三角形的两  腰;以后每一步的迭代都是这样的重  复。 (图例)

  10.  从以上过程可以清楚地看出,Koch曲  线(其它分形集也是如此)可以由简单的 图,称为 生成元 ,迭代产生。  在这里,Koch曲线的生成元是:

  11. 在这里,假如我们约定好记号,就可  以把Koch曲线的生成元的构造用一个  字符串符号表示出来。设: F 从当前点开始,向前移动一距离d L 向左(逆时针)转一定角 R 向右(顺时针)转一定角  则Koch曲线的生成元可表示为: T= F L F R R F L F  ( =60º)

  12.  曲线由把每一折线段反复迭代成缩小  比例的三分之一的生成元而成。即字  符串T= F L F R R F L F 中的每一个 F 又是字符串T 本身。而每次迭代  后,生成的曲线长是原来曲线长的三  分之四倍。可见,无数次迭代后, Koch 曲线将变得具有无限长度。并  且,Koch 曲线是永远不自相交的。

  13. ( 2 ) 生成Koch 曲线的程序  函数 side( ),用于绘制Koch 曲线的生  成元,函数中所用的参数为: xa, ya, xb, yb :线段的起点和终点坐标; a : 线段的方向角; n : 迭代次数(递归深度)。

  14. void side ( xa, ya, xb, yb, a, n ) int n ; float xa, ya, xb, yb, a ; { float x1, y1, x2, y2, x3, y3, dl, a1, a2 ; int xs, ys, xe, ye ; if (n==0) { xs=(int)(xa+0.5) ; ys=(int)(ya+0.5) ; xe=(int)(xb+0.5) ; ye=(int)(yb+0.5) ; moveto(xs,480-ys) ; lineto(xe,480-ye); } else

  15. { dl=sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)) / 3. ; x1=xa+(xb-xa) / 3. ; y1=ya+(yb-ya) / 3. ; side(xa, ya, x1, y1, a, n-1) ; a1=a+AF ; x2=x1+dl*cos(a1) ; y2=y1+dl*sin(a1) ; side(x1, y1, x2, y2, a1, n-1) ; a2=a1-2.*AF ; x3=x2+dl*cos(a2) ; y3=y2+dl*sin(a2) ; side(x2, y2, x3, y3, a2, n-1) ; side(x3, y3, xb, yb, a, n-1) ; }} ***

  16. ( 3 )Koch 曲线的维数  一个几何对象的维数还可以从测量的  角度来定义:   D=ln(N) / ln(S)  其中:D 维数     S 缩小系数的倒数     N 每步的分段数

  17. 在Koch曲线中,S=3 ( 缩小系数是 1/3 );N=4。  所以Koch曲线的维数为:  D=ln(4) / ln(3)  依据 Koch 曲线的生成原理,设计不  同的生成元,便可以构画出多种多样  的分形曲线。     ***

  18.  2.Dragon 曲线  (1)Dragon 曲线的生成规则  变化的起始是一条原始直线段。第一  步是将该直线段由中间点隆起,使其  变成一个等腰直角三角形的两腰。  接下去再分别对两腰作和前面同样的  变化,如此不断进行。(图例)

  19.  不难看出,Dragon 曲线完全是由长  度相等的线段组成,且两两相交处  都成直角。  另外,每次分形后,曲线的长度是  原来曲线长度的  2 倍。因此,经  过无数次变化,Dragon 曲线也将变  成无限长。这一点正符合分形曲线  的特点。

  20.   下面我们来分析 Dragon 曲线的生成  规则:  假如我们从线段 1 开始,顺着曲线前  进,那么在这个过程中,每到一个线  段末端拐角处,就必须向左或向右转 90º 。于是,待要解决的关键问题就  是如何确定是向左转还是向右转。 T(1)= 90º T(2)= 90º T(3)= -90º T(4)= 90º T(5)= 90º T(6)= -90º T(7)= -90º

  21.  如果用代码 1 表示向左转90º ,用 3 表示向右转90º 。并且对于第 i 段线 段,以T ( i )来表示其转向代码。则 对于上图有: T ( 1 )=1 T ( 5 )=1 T ( 2 )=1T ( 6 )=3 T ( 3 )=3 T ( 7 )=3 T ( 4 )=1

  22.  因此,对于第 i 段线段末了的转角: A ( i )=T ( i )*90º 。  因为向右转90º 就等于向左转270º 。  对于 i 的任意整数值,其T ( i )的  值可由下式确定: T ( i )=T ( i / 2 ) ; 对于 i 是偶数 T ( i )=T ( i % 4 ) ; 对于 i 是奇数

  23. ( 2 ) 生成 Dragon 曲线的程序 Dragon 曲线可以用分步判别绘线的方  法绘制出来。其主要的程序段如下:

  24. for ( i=1; i<=n; i++) { j = i ; while(( j&1 )==0) j>>1 ; j=j % 4 ; a=(a+j) % 4 ; x1= x1+d*cos( a*PI ) ; y1= y1- d*sin( a*PI ) ; x=(int)(x1+0.5) ; y=(int)(y1+0.5) ; lineto( x , y ) ; }               ***

  25.  同样,Dragon曲线也是不自相交的,  但是在图形上它没有如 Koch 曲线那  样可明显看出。但只要把曲线中 90º  的拐角改画一个小的倒角,情况就清  楚了。(看运行图例)

  26.  3.其他分形实例  用 分形 可以构造很多自然界的形体,  下面是几种常见的例子:

  27.  (1)分枝 Koch 曲线和Dragon曲线都是连续的,  分枝结构是不连续的,它的生成元类  似于图例所示。  其生成元描述为: F : F [ L F ] F [ R F ] F ***

  28.   (2)粒子模型的图例 ***   (3)岩石  这种分形由平面多边形(如三角形、  四边形等)用随机插值法迭代生成,  可模拟山峦。 如图所示: 取中点在 边直线上 在中点上加一 个随机法向量

  29.  以四边形为例:分割原始四边形为四  个小四边形,此时要求出每条边上的  中点和四边形的中点共 5 个点。设每  条边的两端点为P0i (i=1,2),中点为Pu,  四边形的中点为Pv。  则可给出计算方法为:

  30.  式中:n 为递归深度。 t 为变位系数。 r 为呈正态分布的随机数。 Pui为前四条边的中点。

More Related