• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

典型分形模型(Koch 曲线)

相关文章 海叔叔 4年前 (2021-11-23) 47次浏览 已收录 0个评论
文章目录[隐藏]

技术标签: 分形模型 Koch曲线

分形的四种构成方法

(1)基于L系统的分形模型
(2)迭代函数系统模型
(3)粒子系统模型
(4)随机插值模型

Koch 曲线

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

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

在这里,假如我们约定好记号,就可以把Koch曲线的生成元的构造用一个字符串符号表示出来。设:

曲线由把每一折线段反复迭代成缩小比例的三分之一的生成元而成。即字符串T= F L F R R F L F 中的每一个F 又是字符串 T 本身。而每次迭代
后,生成的曲线长是原来曲线长的三分之四倍。可见,无数次迭代后Koch 曲线将变得具有无限长度。并且,Koch 曲线是永远不自相交的。
( 2 ) 生成Koch 曲线的程序
函数 side( ),用于绘制Koch 曲线的生成元,函数中所用的参数为:
 
xa, ya, xb, yb :线段的起点和终点坐标;
 a : 线段的方向角;
 n : 迭代次数(递归深度)。

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
       { 
  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) ;         
       }  } 

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

在Koch曲线中,S=3 ( 缩小系数是
 1/3 );N=4。
 所以Koch曲线的维数为:
 D=ln(4) / ln(3)

依据 Koch 曲线的生成原理,设计不
 同的生成元,便可以构画出多种多样
 的分形曲线。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:典型分形模型(Koch 曲线)
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址