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…
ここでは、繰り返し関数システム、略して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…