リンデンマイヤーシステム、通称L-システムは、「置換システム」です:ある(グラフィック)オブジェクトの部分が、最も単純な場合にはその縮小されたオブジェクト自体に置き換えられます。これが繰り返され、例えば再帰的に行われます。これにより、非常に複雑なフラクタル構造が生まれ、同時に非常にシンプルに定義されることがあります。 最も単純な例はコッホ曲線で、スノーフレーク曲線とも呼ばれます。知らない人は、Wikipediaのリンクをフォローしてください。:-) ここでは説明するつもりはありませんが、TikZを使って最も簡単に生成する方法を簡単に示します。 基本となるのは、線を引いたり角度を変えるなどの単純なグラフィック操作のためのシンボルです。これらのシンボルは文字列に指定され、この文字列の一部は「生産ルール」によって段階的に置換されます。文字列はどんどん長くなり、最後にこの図が描かれます。 TikZマニュアルでは、第55章でこれらのルールが説明されており、それはリンデンマイヤーシステム図書館を記述しています。これは、そのようなオブジェクトとルールを簡単に宣言するための構文を提供し、描画を行います。 動機づけとして、以前TeXample.netに書いたいくつかの例が含まれるドキュメントがあります。見るとわかるように、4つの例のそれぞれがシンプルに定義されています。私はさらに、TikZでさらに加工できることを示すために、派手な色やグラデーションを加えました。 \documentclass{article} \usepackage{tikz} \usetikzlibrary{lindenmayersystems} \usetikzlibrary[shadings] \pgfdeclarelindenmayersystem{Koch curve}{ \rule{F -> F-F++F-F}} \pgfdeclarelindenmayersystem{Sierpinski triangle}{ \rule{F -> G-F-G} \rule{G -> F+G+F}} \pgfdeclarelindenmayersystem{Fractal plant}{…
ここでは、繰り返し関数システム、略してIFSについて扱います。ここでは繰り返し変換が行われます。空間が何度も自分自身にマッピングされます。このプロセスにはさまざまなマッピング規則があり得ます。理想的にはこれを無限に行い、すべての間で不変である空間内の集合を考察します。この集合はフラクタルになる可能性があります! 理論はさておき、Wikipediaで基本的な内容を、そして素晴らしい本でより深く理解することができます。では、これをどのように生成するのでしょうか? 最も簡単な方法は「カオスゲーム」と呼ばれるものです。一点を取り、その点に一つの変換を適用します。変換によって不変である点集合に関わるため、目的の点は集合内に落ちなければなりません。この新しい点でプロセスを繰り返し、何千回も繰り返して図が浮かび上がるまで続けます。 それでは、有名なバーンズリー・ファーンでこれを実行しましょう! しかし、どうやって? ループとアフィン変換を計算する能力が必要です。pgfmathでこれは可能ですが、私の見解では読みにくいです。そのため、通常のプログラミング言語を統合できる利点を活かしてLuaを使用します。これにより、コーディングは簡単になります。パラメータは行列に書き込まれます。つまり、変換パラメータとカオスゲームの変換選択の確率です。点を走らせましょう! 翻訳にはLuaTeXと忍耐が必要です。試行錯誤やパラメータの調整をするときは、最初は反復回数を少なくしてください。 % !TEX lualatex \documentclass[tikz,border=10pt]{standalone} \usepackage{luacode} \begin{luacode*} function barnsley(iterations,options) local x = math.random() local y = math.random() local m…