L-Systems Method
  「起始元與生成元疊代法」中,最有名的就是美國生物學家 Aristid Lindenmayer 於 1968 年所提出的 L-Systems Method,我們又稱作(平行)覆寫系統(Parallel Rewritting Systems),這是他為了描述植物的型態與生長過程, 所發展出來的一套符號語言(Formal language)。 這套方法的特色在於,它將「起始元與生成元疊代法」於線段單元的疊代過程成功地模型化,同時 這套方法也非常容易在電腦上模擬。

  L-Systems Method 主要包含三個部分:符號定義(Alphabet)、 角度設定(Angle)、 起始字串(Axiom)與規則字串(Production Rules),筆者分別解說如下:

● 符號定義:定義 L-Systems Method 覆寫字串的過程中,所有需要用到的字元符號,其中包括
       使用者自行定義的,與 L-Systems Method 的基本符號。基本符號定義如下:

符號 意義
F 從原來的位置向前移動某單位長度,並且同時畫出線段
G 從原來的位置向前移動某單位長度,但是不畫出線段
+ 以逆時鐘方向(左轉),轉一個特定角度
- 以順時鐘方向(右轉),轉一個特定角度

● 角度設定:設定上面表格中,符號 + 與 - 所定義的角度 。Angle 通常是介於 2 ~ 50 之間的整
       數,代表(360 / Angle)度。以 Koch Curve 為例,其 Angle = 6,代表 60 度。
● 起始字串:定義 L-Systems Method 最初操作的字串,相當於「起始元與生成元疊代法」中的
       起始元。以 Koch Curve 為例,其 Axiom = F。
● 規則字串:定義每一個字母的覆寫規則,相當於「起始元與生成元疊代法」中的生成元。以
       Koch Curve 為例, 它只有一條規則字串,即 F = F+F--F+F。

  於是,我們可以將 Koch Curve 以 FRACTINT 所建議的 L-Systems Method 格式,表示如下,在這個格式中,我們在分號之後開始註解,並且在 { 與 } 兩個符號之內,敘述碎形繪製的所有規則。同時,我們可以在右邊的表格中,看見 L-Systems Method 覆寫過程的每一個步驟:

步驟 Koch Curve 的符號字串
第零步驟 F
第一步驟 F+F--F+F
第二步驟 F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F
第三步驟 ????????

  讓我們來看看,Koch Curve 如何藉著 L-Systems Method 產生出來 。表格中的第零步驟就是起始字串,而第一步驟則是以規則字串來取代起始字串中的所有字母( 由於 + 與 - 並不屬於字母,所以不需要被取代,以後我們會定義幾個特殊意義的字母,這些字母也不需要被取代),由於 Koch Curve 的符號字串只由一個字母所組成,所以規則字串只需要一條即可,而第二步驟便是以規則字串來取代第一步驟中的所有字母。有沒有發現,這裡的敘述很類似上個單元裡,我們對於「起始元與生成元疊代法」疊代步驟的敘述,其中,起始字串就是起始元,規則字串就是生成元,而起始字串中的每個字母就是起始元中的幾何單元。

  但是這一組組的符號字串,要如何畫成相對應的圖形呢?我們可以想像有一隻海龜在沙地上,依照符號字串裡的字元而作指定的移動與轉身,而移動過程所留下的痕跡就是我們所要的碎形圖案,這種方法我們稱作海龜製圖法( Turtle Graphics), L-Systems Method 便是以這種方式圖像化。以 Koch Curve 為例,讓我們一探究竟,海龜是如何爬行與擺尾的:


  由圖可知,海龜畫圖的功力也是一流的。我們再舉 Cantor Set 的例子,在下面的規則格式中,由於我們用不到 + 與 - ,所以 Angle 也可以省略,同時也用到了兩條規則字串。

步驟 Cantor Set 的符號字串
第零步驟 F
第一步驟 FGF
第二步驟 FGFGGGFGF
第三步驟 FGFGGGFGFGGGGGGGGGFGFGGGFGF

  當海龜看到了字母 G 時,海龜會用跳躍的方式往前移動,所以牠不會在途中留下痕跡。我們可以在下面的圖形中,看到 Cantor Set 如何被海龜連爬帶跳地創造出來。


  L-Systems Method 的應用並不只於此,我們將在下個單元介紹更多的符號定義,這些符號定義能夠幫助我們繪製更複雜的碎形圖案。


  上一層