典型分形模型(Dragon 曲線)

- Dragon 曲線的生成規則

變化的起始是一條原始直線段。第一步是將該直線段由中間點隆起,使其變成一個等腰直角三角形的兩腰。接下去再分別對兩腰作和前面同樣的變化,如此不斷進行。

  • 不難看出,Dragon 曲線完全是由長度相等的線段組成,且兩兩相交處都成直角。另外,每次分形後,曲線的長度是原來曲線長度的 根號2倍。因此,經過無數次變化,Dragon 曲線也將變成無限長。這一點正符合分形曲線的特點。

    下面我們來分析 Dragon 曲線的生成規則:
    假如我們從線段 1 開始,順着曲線前進,那麼在這個過程中,每到一個線段末端拐角處,就必須向左或向右轉90º 。於是,待要解決的關鍵問題就是如何確定是向左轉還是向右轉。


    如果用代碼 1 表示向左轉90º ,用 3 表示向右轉90º 。並且對於第 i 段線段,以T ( i )來表示其轉向代碼。
    則 對於上圖有:
    T ( 1 )=1     T ( 5 )=1
     T ( 2 )=1    T ( 6 )=3
     T ( 3 )=3     T ( 7 )=3
     T ( 4 )=1 

因此,對於第 i 段線段末了的轉角:A ( i )=T ( i )*90º 。
 因爲向右轉90º 就等於向左轉270º 。對於 i 的任意整數值,其T ( i )的
 值可由下式確定:
T ( i )=T ( i / 2 ) ; 對於 i 是偶數
 T ( i )=T ( i % 4 ) ; 對於 i 是奇數


- 生成 Dragon 曲線的程序

Dragon 曲線可以用分步判別繪線的方法繪製出來。其主要的程序段如下:
 

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

同樣,Dragon曲線也是不自相交的,但是在圖形上它沒有如 Koch 曲線那樣可明顯看出。但只要把曲線中 90º的拐角改畫一個小的倒角,情況就清楚了。


- 其他分形實例

用 分形 可以構造很多自然界的形體,下面是幾種常見的例子:
(1)分枝
  Koch 曲線和Dragon曲線都是連續的,
 分枝結構是不連續的,它的生成元類
 似於圖:


其生成元描述爲:
   F : F [ L F ] F [ R F ] F

 
(2)粒子模型
(3)岩石
這種分形由平面多邊形(如三角形、四邊形等)用隨機插值法迭代生成,可模擬山巒。

以四邊形爲例:分割原始四邊形爲四個小四邊形,此時要求出每條邊上的中點和四邊形的中點共 5 個點。設每條邊的兩端點爲P0i (i=1,2),中點爲Pu,四邊形的中點爲Pv。
則可給出計算方法爲:


 式中:
n 爲遞歸深度。
t 爲變位係數。
    r 爲呈正態分佈的隨機數。
    Pui 爲前四條邊的中點。


這是一隻編程小喵,經常出沒在喵屋[AudioMiao]中,挖挖[喵的Github],瞧瞧世界。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章