バーニー龍(Barnsley Dragon)
バーニー龍(Barnsley Dragon)は、数学的なフラクタルであり、フラクタルジオメトリの一例です。
これは、1988年にマイケル・バーンズリー(Michael Barnsley)によって提案されました。
バーニー龍は、確率的な方法で生成されるフラクタル図形であり、自己相似性を示します。
バーニー龍の生成は、$2$つの確率的な変換に基づいています。
これらの変換は、$4\times4$の行列で表され、点を新しい位置に移動させます。
その後、ランダムに変換が選択され、次の位置に点が移動します。
このプロセスを繰り返すことで、複雑なフラクタル図形が生成されます。
バーニー龍は、ジュリア集合の一種であり、幾何学的に美しいパターンを持ちます。
多くの場合、計算機グラフィックスや美術、数学の教育などの分野で使用され、その視覚的な魅力と数学的な興味深さから広く注目されています。
ソースコード
以下は、Pythonを使用してバーニー龍を生成し、matplotlib
を使用してグラフ化する例です。
1 | import numpy as np |
このコードは、指定された数の点を生成し、それらの点をmatplotlib
を使用してプロットします。
[実行結果]
ソースコード解説
ソースコードを説明します。
1. NumPyとMatplotlibのインポート:
1 | import numpy as np |
この部分は、NumPy
とMatplotlib
をインポートしています。NumPy
は数値計算のためのライブラリであり、Matplotlib
はグラフの描画や可視化のためのライブラリです。
2. バーニー龍の生成関数:
1 | def barnsley_dragon(n_points): |
この部分は、バーニー龍を生成する関数です。
バーニー龍は確率的な方法で生成されるため、初期点から始めてランダムな変換を繰り返し適用します。
3. バーニー龍の描画関数:
1 | def plot_barnsley_dragon(points): |
この部分は、バーニー龍を描画する関数です。matplotlib.pyplot.scatter
を使用して、生成された点をプロットし、matplotlib.pyplot.show
でグラフを表示します。
4. バーニー龍の生成と描画:
1 | # ポイントの数 |
この部分では、指定された数の点を生成し、barnsley_dragon
関数でバーニー龍を生成し、plot_barnsley_dragon
関数で描画しています。
結果解説
[実行結果]
以下は、グラフに表示される内容の詳細です。
1. バーニー龍の生成:
barnsley_dragon
関数は、指定された数の点を生成します。
この関数は、バーニー龍の確率的な変換を実行し、各変換に基づいて点を移動します。
バーニー龍は、$2$つの確率変換からなり、各変換には$6$つの変換行列のパラメータがあります。
これらのパラメータは、バーニー龍の形状と配置に影響します。
2. グラフの描画:
plot_barnsley_dragon
関数は、生成された点をmatplotlib
を使用してプロットします。
各点は緑色の小さな円で表示され、その位置はバーニー龍の形状を反映しています。
グラフのタイトルは「Barnsley Dragon」となっています。
3. グラフの設定:
plt.figure
関数によって、図のサイズが設定されています。plt.title
関数によって、グラフにタイトルが追加されます。plt.scatter
関数は、点を散布図としてプロットします。plt.axis('equal')
によって、$x$軸と$y$軸の比率が等しくなります。plt.axis('off')
は、$x$軸と$y$軸の目盛りや枠線を非表示にします。
4. 表示される内容:
グラフに表示される内容は、生成されたバーニー龍の形状です。
バーニー龍は、幾何学的に複雑なフラクタル構造を持つ図形であり、ランダムな変換を繰り返すことで生成されます。
このグラフは、そのようなフラクタル図形の一例を示しています。