これはスタック オーバー フローの最初の投稿です。最近、「植物のアルゴリズムの美しさ」という本を読み始めました。その第 1 章では、L システムについて説明しています。(この章はこちらで読むことができます)。
つまり、L システムには 2 種類あるということです。エッジの書き換えとノードの書き換え。
エッジの書き換えは比較的簡単です。初期スターター ポリゴンとジェネレーターがあります。初期ポリゴンの各エッジ (側面) がジェネレーターに置き換えられます。
しかし、このノードの書き換えは非常にややこしいです。私が収集したものから、2 つ以上のルールがあり、各反復でルール内の変数を対応する定数に置き換えます。
タートルの解釈では、これらは標準的なルールです
F : Move turtle forward in current direction (initial direction is up)
+ : rotate turtle clock wise
- : rotate turtle anti clock wise
[ : Push the current state of the turtle onto a pushdown operations stack.
The information saved on the stack contains the turtle’s position and orientation,
and possibly other attributes such as the color and width of lines being drawn.
] : Pop a state from the stack and make it the current state of the turtle
したがって、このWebサイトに示されている例を検討してください。http://www.selcukergen.net/ncca_lsystems_research/lsystems.html
Axiom : FX
Rule : X= +F-F-F+FX
Angle : 45
そうat n=0
(公理の X は無視してください)
ちょうど上向きの直線を意味する F です。
at n=1
公理の X をルールに置き換える
F+FF-F+F (最後の X を再び無視)
出力はこれです
http://www.selcukergen.net/ncca_lsystems_research/images/noderewrite.jpg
ルールが 1 つの単純な例で問題ありません。しかし、本「植物のアルゴリズムの美しさ」の 25 ページには、解釈方法がわからないルールがいくつかあります。
X
X = F[+X]F[-X]+X
F = FF
この画像を参照してください。
https://lh6.googleusercontent.com/g3aPb1SQpvnzvDttsiiBgiUflrj7R2V29-D60IDahJs=w195-h344-no
at n=0
ちょうど「X」。これが何を意味するのかわからない
at n=1
ルール 1 を適用 (X->F[+X]F[-X]+X) : F[+]F[-]+ すべての X を無視します。これは単なる直線です。
ルール 2 (F->FF) を適用: FF[+]FF[-]。これはただの直線です。
私の理解では、最終的な出力はタートルが上方向に4回移動するはずです。または、多くても最終出力には 4 行しか含まれません。
これをよりよく理解するのに役立つと思われるオンラインLシステムジェネレーターを見つけたので、同じ値を入力しました.n = 1での出力は次のようになります
https://lh6.googleusercontent.com/-mj7x0OzoPk4/VK-oMHJsCMI/AAAAAAAAD3o/Qlk_02_goAU/w526-h851-no/Capture%2B2.PNG
出力は間違いなく直線ではなく、最悪の部分には 5 つの線があります。つまり、最終的な出力方程式には 5 つの F が必要です。
このノードの書き換えを理解するのを手伝ってください。これを理解しないと本を読み進めることができません。
長い投稿と、タグ付け前のリンクで申し訳ありません。2 つ以上のリンクを投稿することはできません。上から下まで辛抱強く読んでいただきありがとうございます。