山里ぽん太

The Algorithmic Beauty

of Plants Part 1

02 September 2018

  山里ぽん太は The Algorithmic Beauty of Plants をダウンロードしました。


Chapter 1 The Algorithmic Beauty of Plants
というわけで、「The Algorithmic Beauty of Plants」を読むことにします。
まじっすか?。
英語ですけど?(笑)。
英語が苦手で嫌いで授業中は睡眠学習をしていてテストの点はいつも10点とか20点とかだったんですけど。(笑)。
睡眠学習の成果が出るでしょうか?(笑)。
「The Algorithmic Beauty of Plants」は、ポーランド人の「Przemyslaw Prusinkiewicz」さんが書いた本です。
PDF版をネットで読むことができます。
というわけで、今回も地味です(笑)。
Chapter 2 最初の5ページ
というわけで、早速読み始めました。
表紙から5ページ目まではこんな感じです。
2ページ目の写真の人は、リンデンマイヤーさんです。

表紙から数えて5ページ目に、D’Arcy Thompson さんが17世紀の終わりころに残したというコメントが引用されています。
こんなコメントです。

英語赤点の僕が訳してみましたー(笑)。
有機体(生物)の形状は、数学的に言うなら、時間の関数として見出される。ひとつの(それぞれの)有機体の形状は、宇宙規模の時間(宇宙が生まれてから現在までの壮大な時間)の中で培われたものと言うべきかもしれない。宇宙の中にあるひとつのちっぽけな構造と呼ぶべきものではない。
信じちゃダメですよー(笑)。
Chapter 3 目次
目次はこんな感じです。

いやー、全部読み切るのは、たいへんそうです。
ということで、作例だけ、さらっ、とやってみましょう。
作例のところは、L-System の「premise」と「rule」が書いてあるだけだから、英語がわからなくても、できちゃうと思います。
甘いっすか?(笑)。
Chapter 4 1 Graphical modeling using L-systems 1.1 Rewriting systems
最初は、書き換え規則です。
1905年に、コッホさんとマンデルブロさんが提案した「雪の結晶曲線」のことが書かれています。

これを、Houdini の「L-System」ノードで描いてみましょう。
premise と rule はこんなのです。

描いた結果はこんなのです。


いわゆるひとつの、フラクタルです。
Chapter 5 1.2 DOL-systems
「This section presents the simplest class of L-systems, those which are deterministic and context-free, called DOL-systems.」なのだそうです。
「simplest」とはつまり「もっとも簡単」です!!(笑)。
この section で登場するのは「a」と「b」だけです。
ルールは、「a」を「b」に書き直す、とか、「a」を「ab」に書き直す、とかだそうです。
なーんだ!、簡単じゃーん。
というわけで、作例にあったものを、Houdini の「L-System」ノードで描いてみました。
作例の絵はこんなのです。

で、ルールはこんなのです。

Houdini の「L-System」ノードに書いたルールはこんなのです。

描いた結果はこんなのです。



合ってんだか合ってないんだか、さっぱりわかりません(涙)。
そのうちわかるでしょう(笑)。
というわけで、次行ってみましょうw。
Chapter 6 1.3 Turtle interpretation of strings
「Turtle」です。
亀さんです。
作例は「コッホ曲線」です。


Houdini で描いてみましょう。



コッホ曲線は、premise が「F-F-F-F」のようです。
Chapter 7 1.4.1 Edge rewriting
「エッジの書き換え」だそうです。
作例はこんなのです。
「FASS curves」と言うのだそうです。

Houdini の L-System で描いてみましょう。
左右が逆になっていますが、ご愛嬌ということで(笑)。


それにしても、こんな絵を描くルールをどうやって発見するのでしょうね?(凄)。
Chapter 8 1.4.2 Node rewriting
次は「ノードの書き換え」だそうです。
作例はこんなのです。
これも「FASS curves」と言うのだそうです。


Houdini の L-System で描いてみましょう。




4つ目の絵が乱れました。
ちょっと調べてみたところ、ルールの中の、赤く色をつけたところが間違っていることに気がつきました。

この箇所をL-F-R+F+と書き直して試したら、正しく描いてくれました。
ラーメンのドンブリの文様ですね。


Chapter 9 1.4.3 Relationship between edge and node rewriting
次は、「エッジの書き換えとノードの書き換えの関係」です。
こんなことが書かれています。

「エッジとノードの書き換えの関係」が、こんな重要なことの実現に有用なんですね。
ぜんぜんわかりません(笑)。
とりあえず先に進みます。
Chapter 10 1.5 Modeling in three dimensions
3D キター!!w。
作例はこんなのです。
「ヒルベルト曲線」と言うらしいです。

Houdini で描いてみましょう。

Chapter 11 1.6 Branching structures 1.6.1 Axial trees
「分岐構造」だそうです。
というわけで作例です。

ルールが書かれていないので、次のページの絵から、テキトーにルールを作って、描いてみました。


作例とは違うけれど、なんか、らしくなったような?(笑)。

Chapter 12 1.6.2 Tree OL-systems
「OL-Systems」だそうです。
「DOL-Systems」の「DO」は、「deterministic and context-free」だそうですから、これから「D」つまり「deterministic」を取った、ということで、「context-free」でよいのでしょうか?。
Chapter 13 1.6.3 Bracketed OL-systems
ここで、「Bracket」の「[ ]」が登場します。
作例はこんなのです。カッコイイです。


Houdini で描いてみましょう。
ほんの少し違うだけで、こんなにいろんな木になるんですねー。






あとふたつあります。


Houdini で描いてみましょう。


なーんか感動します。
Chapter 14 1.7 Stochastic L-systems
「確率的 L-System」だそうです。
生やした木や草の形を少しずつ変える、というアレです。
作例はこんなのです。




Houdini で描いてみましょう。

2番目の作例です。

Chapter 15 1.8 Context-sensitive L-systems
「文脈依存型 L-System」だそうです。
難しいことはすっとばして、要するに、簡単なパターンマッチングのようなものと言っていいのかな、と思います。
もとのパターンの「baaaaaaaa」の「a」を「b」に置き換える、という置換をすると、「bbbbbbbbb」となるところですが、「左側にbがあるa」というパターンを指定して置換をすると、「bbaaaaaaa」と、ひとつだけ置き換えてくれます。

作例はこんなのです。


というわけで、Houdini で描いてみましょう。
左上の木です。
ちがうじゃんwww。

どうやらパターンマッチングがうまく機能していない感じです。
ちょっといろいろ試してみたのですが、こんな感じでした。
*<A>*マッチしない
F<A>Fマッチしない
B<A>Cマッチする

というわけで、ワイルドカード文字「*」やタートルコマンド「F」やなんかは、パターン文字に使えない感じです。
それから、パターン文字列は、タートルコマンドを無視してスキップするようです。
こんな感じです。
PremiseAFBFC
RuleA<B>C=+
結果AF+FC

というわけで、ルールを少し変更してみました。
変更前変更後

これで描いてみました。

残りの4つも、同じように変更して描いてみました。




現状の僕の限界ということで、次行ってみましょう(笑)。
Chapter 16 intermezzo
ちょっとつかれたので、ひとやすみします(笑)。
次のようなルールで1回置き換えをしたら、どうなるでしょうか?。
PremiseF
Rule 1F=FF
Rule 2F=FF
Rule 3F=FF

Houdini で描いてみましょう。
「F=FF」が3回ですけど、結果は「FFFFFFFF」とはならなくて、「FF」になりました。
ひとつのシンボルが置き換えられる回数は、1回だけのようです。


もうひとつやってみます。
ルールは3つありますが、どうなるでしょうか?。
PremiseF
Rule 1F=FFF
Rule 2F=FFFF
Rule 3F=FFFFF

Houdini で描いてみましょう。
結果は「FFF」となります。
シンボルが置き換えられるのは、一番さいしょにマッチしたルールだけのようです。


Chapter 17 1.9 to 1.10.3
1.9 Growth functions
1.10 Parametric L-systems
1.10.1 Parametric OL-systems
1.10.2 Parametric 2L-systems
1.10.3 Turtle interpretation of parametric words

Chapter 1 はここまでです。
Chapter 2 以降は、長くなるので、次の ponticle に書きます。