マンデルブロ集合描画スクリプト

ブラウザ上で手軽にマンデルブロ集合を描画して画像を生成できる当サイトオリジナルのプログラムです。

特徴

マンデルブロ集合描画スクリプト

本プログラムは、HTML5のCanvasとJavaScriptによってブラウザ上で動作しますので、以前のJavaアプレット版とは異なり、最新のブラウザ(Chrome、Firefox、IE11、Edge等)であれば特別なプラグインや設定等無しにどなたでもすぐにご使用いただけます。

マンデルブロ集合を描くソフトは既に世界中に数多く存在するのですが、それでも自ら製作に至ったのは、やはり描画に関して、色付けや機能などで譲れない点があるためです。主な特徴は、数列の初項の値、関数の指数、発散半径などを自由に変更できるところです。多くのソフトは、これらが固定されていて変更できません。また、8つのカラースケールを用意し、周期と位相を変えることで、さまざまな色付けを可能にしました。前ページで紹介した格子模様の色付けも可能です。

さらに、コンピュータが自動的にベストポイントを見つけ出す「おまかせ描画」機能(旧称「ランダムドロー」機能)を搭載しています。今すぐマンデルブロ集合の世界を体験したい人や、きれいな画の描き方が分からない人におすすめです。そして、気に入ったイメージが得られたら画像としてダウンロードすることもできます。

ご利用の前に

この「マンデルブロ集合描画スクリプト」は、必ずご自身の責任においてご利用下さい。本プログラムが原因で何か問題が生じたとしても、一切責任は取れません。特に、CPUの性能やメモリが不足していると、ブラウザやPCがフリーズしてしまうことがありますので、ご注意下さい。

ブラウザは、最新版をご利用下さい。Windows7環境下のChrome最新版で動作確認をしています。なお、携帯電話やスマートフォンでの閲覧には対応していません。携帯電話やスマートフォンで閲覧すると、大量の計算が行なわれることで端末が発熱したり電池が急激に減少したりする可能性がありますのでご注意下さい。

各パラメータに、不適切な値やあまりに極端な値を入れると、ブラウザやPCがフリーズしてしまうなどの問題を起こす可能性がありますので、このページの説明をよくお読みになってご使用下さい。

当サイトに以前掲載していたJavaアプレット版とは一部機能が異なります。以前のJavaアプレット版で保存した画像や座標と同じものを描きたいという場合は、お手数ですが、そのファイルを添付の上、メールにてお問い合わせ下さい。

基本的な操作方法

それでは、以降の説明を読みながら、実際に使ってみて下さい。以下のボタンで起動します。マンデルブロ集合がすぐに表示されれば、正常に動作しています。

拡大/縮小
画面のお好きな位置をクリックすると、左の描画パラメータに座標が自動で入力されます。その後、上の拡大縮小ボタンを押すと、クリックした位置を中心に画面が拡大/縮小されます。
色付けの変更
色を変更するには、右の「カラースケール」「周期」「位相」の3つの値を変更します。詳細は次の「各部の説明」の節をお読み下さい。値を変更するとすぐに画面に反映されます。
パラメータの変更
左側のパラメータは自由に変更できます。詳細は次の「各部の説明」の節をお読み下さい。変更した場合は、「×1.0」ボタンを押すことで画面に反映されます。
おまかせ描画
右下の「おまかせ描画」ボタンを押すと、コンピュータが自動的にベストポイントを探し出して描画します(以前のJavaアプレット版では「ランダムドロー」機能と称していました)。今すぐマンデルブロ集合の世界を体験したい人や、きれいな画の描き方が分からない人におすすめです。
画像のダウンロード
右下の「画像を保存…」ボタンを押すと、表示中の画面をPNG画像として保存できます(以前のJavaアプレット版で提供していた、PNGファイル内に座標を記録する機能はありませんのでご注意下さい)。

各部の説明

描画パラメータ

描画する範囲に関するパラメータです。

横幅画面の横幅です。拡大縮小ボタンを押すと自動的に変更されます。直接数値を入力した場合は、「×1.0」ボタンを押して下さい。10^{-12}程度までは問題なく拡大できますが、それ以上は本プログラムでは正確に計算できなくなりますので、拡大しすぎにはご注意下さい。
中心のx
中心のy
画面の中心のx座標(複素数の実部)とy座標(複素数の虚部)です。画面をクリックするとその点の座標がここに自動的に入力されます。通常のマンデルブロ集合はxyともに-22の範囲に収まります。
中心を表示画面の中心を表示します。

計算パラメータ

マンデルブロ集合の計算に関するパラメータです。

初期値のx
初期値のy
数列の初項となる点のx座標(複素数の実部)とy座標(複素数の虚部)です。共に0の場合が本来のマンデルブロ集合ですが、変更すると形の変化を楽しめます
指数関数f(z) = z^2 + Cの指数です。2の場合が最も有名な形のマンデルブロ集合です。3以上の整数にすると、マンデルブロ集合のこぶの数が増えていきます。非整数にすると、変化の途中のような非常に中途半端で奇妙な形となります。負数にすると全く異なった模様となります。
発散半径|z_k|がこの値以上になったら発散と判定します。2~20程度の数を指定します。大きくすると周囲の模様がなだらかになります。指数が負の場合は、大きくするとより繊細な模様が出現します。格子模様の色付けは、大きくした方がきれいに出ます。ただし、大きくすると計算に時間がかかりますので、大きくしすぎないようご注意下さい。
計算停止判定くり返し計算をこの回数連続して続けても何も変化が起きなかった場合は、計算終了と見なします。描画終了時に右上に「計算を終了しました」と表示されている場合で、途中で描画が止まってしまっていると思われるときは、この数字を大きくしてみて下さい。最大でも100程度にしておくことをお勧めします。
最大計算回数くり返し計算をこの回数まで続けても発散しなかった点は、発散しないと見なして計算を終了します。描画終了時に「計算回数の上限に達しました」と表示されている場合で、途中で描画が止まってしまっていると思われるときは、この数字を大きくしてみて下さい。大きくすると繊細な模様が描けますが、計算に時間がかかりますので、大きくしすぎないようご注意下さい。最大でも数万程度にしておくことをお勧めします。

拡大縮小ボタン

拡大/縮小のためのボタンです。「×1.0」ボタンは、横幅を変更せずに再描画します。描画範囲をずらしたい場合や、描画パラメータや計算パラメータを変更した場合に使用して下さい。

着色設定

色付けに関する設定です。変更するとすぐに画面に反映されます。

カラースケール使用するカラースケールを8種類の中から選らびます。選択すると、すぐ下にカラースケールの見本が表示されます。マンデルブロ集合本体は、レインボー1~新緑は黒、ホット~グレーは白で描かれます。
  • レインボー1 … サインカーブによる単純なカラースケールです。座標や倍率、好みによりますが、周期を比較的小さめの値(50~500程度)にするときれいに描けます。位相を60ずらすと、色相が1つずれます。
  • レインボー2 … 各色相ごとに明暗を付けたカラースケールです。レインボー1よりも模様がくっきり浮かび上がります。座標や倍率、好みによりますが、周期を比較的大きめの値(500~1000程度)にするときれいに描けます。位相を20ずらすと、似た色相で明暗が逆になります。また、位相を40ずらすと、色相が1つずれます。
  • レインボー3 … 6つの色相の間に黒を挟んだカラースケールです。暗闇の中にカラフルな模様が浮かび上がります。位相を60ずらすと、色相が1つずれます。
  • 宇宙 … 深宇宙をイメージした青とオレンジのグラデーションです。
  • 新緑 … 新緑をイメージした緑のグラデーションです。
  • ホット … 黒~赤~黄~白のグラデーションです。ホット・コールド・グレーの3つのカラースケールは、位相を0、周期を最大計算回数のちょうど2倍の値にすると、暗闇の中に光り輝くようなマンデルブロ集合が描けます。その場合、周期が大きい(最大計算回数が大きい)ほど暗くなります。
  • コールド … 黒~青~白のグラデーションです。
  • グレー … 黒~白のグラデーションです。
周期発散に至るまでの計算回数が何回ずれるごとに同じ色を割り当てるかを指定します。小さいとけばけばしく、大きいと滑らかな模様になります。1~50000程度までの整数を指定して下さい。
位相カラースケールを見本からどれだけずらして割り当てるかを指定します。0~360の範囲で指定して下さい。0と360ではちょうど一周分ずれて同じ模様になります。カラースケールの見本をクリックすることでも変更できます(小さな三角印の位置が位相を表しています)。
格子模様発散と判定されたときのz_kの実部と虚部の符号が異なっている場合だけ位相を少しずらすことで放射状の格子模様を描きます。計算パラメータの発散半径の値を大きくすると、きれいに放射方向に繋がった模様が描けます。

操作ボタン

その他の操作のためのボタンです。

全てリセット全てのパラメータや設定を最初の状態に戻します。
座標をリセット描画パラメータのみを最初の値に戻します。
おまかせ描画コンピュータが自動的にベストポイントを探し出して描画します(以前のJavaアプレット版では「ランダムドロー」機能と称していました)。今すぐマンデルブロ集合の世界を体験したい人や、きれいな画の描き方が分からない人におすすめです。このボタンで描画した後も引き続き拡大/縮小の操作や着色設定の変更を行なうことができます。なお、この機能は各パラメータや着色設定を自動で変更しますので、ご注意下さい。この機能は当サイトオリジナルのものです。
画像を保存…表示中の画面をPNG画像として保存できます。なお、以前のJavaアプレット版で提供していた、PNGファイル内に座標を記録する機能はありませんのでご注意下さい。同じ座標を後で再び本プログラムで描きたい場合は、その画面が表示されているときのURL(#以降の部分に座標の情報が入っています)をお控え下さい。
低解像度モード解像度を半分に落として描画します。処理が重たい場合にご利用下さい。