マンデルブロ集合とジュリア集合

Here’s the Japanese translation for your detailed description: PGFplots.netの開始後、私はpgfplotsでさらに実験をしました。私がいつものように各グラフィックソフトウェアで行うように、フラクタルをどのように表現できるか、そしてそれによって有用または興味深い側面があるかどうかを考えました。ここでは速度やメモリスペースは二次的なもので、時間とともに容量は変わります。 私が興味を持っているのは、例えば 反復的に定義された関数を渡してプロットできるか イテレーション数のように、カラーマップ(colormaps)を利用できるか イテレーション関数システム(IFS、バーンズリー・ファーンなど)のように、幾何学的変換がうまく使えるか 三次元でも可能か 以下では、Luaで実装されたアルゴリズムを使用してマンデルブロ集合をプロットします。LaTeXで表現すると、以下のようになります: 次のコードはLuaとpgfplotsを使用した実装です: %!TEX lualatex \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{width=7cm, compat=1.18} \usepackage{luacode} \begin{luacode} function…

フラクタル風景 – 手続き的世界の生成の基本的なアプローチ

私はフラクタル風景を生成し、LaTeXなどで利用可能な機能を活用したいと考えています。 アプローチ: Luaを使用してダイヤモンド・スクエア・アルゴリズムによる風景の計算 pgfplotsを使用して出力することで、多様な表示オプションが利用できる メッシュを使用したサーフェスプロット Colormapを使用して色付けを行う:海面下は青、山は緑、雪は白、高度によって色が変わる この解決策は、Marc Lepageによる実装でダイヤモンド・スクエア・アルゴリズムを使用しています。Luaコードはもちろん外部に配置することもでき、それが推奨されています。ここでは扱いやすさのためにドキュメント内に残しています。 Luaでの計算 pgfplots Surface-Plotで出力し、colormapを使って色付け(海、山、雪)、viewで視点設定 シード値を変更してバリエーションを加えることができます。これはTerrain関数を呼び出すときの最初のパラメータです。viewだけを変更したい場合はこれを保持します。shader=interpは色を補間しますが、完璧には見えないかもしれません。 計算には時間がかかります。テスト時にはマトリックスの次元やメッシュ行(次元+1)の値を小さくすることがよいでしょう。 \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.15} \usepackage{luacode} \begin{luacode*} function terrain(seed,dimension,options) — inner functions come from…

再帰的フラクタル、非常にシンプル – L-システム

リンデンマイヤーシステム、通称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…