μ frac-cast · mathematician's notebook
z_(n+1) = z_n² + c
WebGL2 fragment shader で動く ブラウザ マンデルブロ + Julia 集合 エクスプローラー。 ドラッグで pan、 ホイールで zoom、 6 パレット + 6 ZOOM 名所プリセット + Julia c 動的アニメ。 escape-time iteration を GPU per-pixel 並列実行で 60fps。 計算はすべて あなたのブラウザ内、 サインアップ不要。
[ ./how_it_works ]
step / 壱
μ Mandelbrot (古典) と ζ Julia (パラメータ c で形が変わる) を切替。 起動時は全体ビュー、 Julia は c=(-0.7, 0.27) で複雑な触手が出る初期値で始まる。
step / 弐
ドラッグで pan、 マウスホイールで zoom (1 click ≈ 1.18×)、 ダブルクリックで 2× zoom。 興味深い 6 ZOOM 名所 (Seahorse Valley / 二重渦 / ミニマンデル等) はワンクリック ジャンプ。
step / 参
6 パレット (古典 ink+brass / 火 / 蒼 / 森 / 薄紫 / 墨絵) + 反復回数 (iter) 32〜2048 で深度切替。 深い zoom では iter を上げて 細部を引き出す。 Julia は c をスライド or アニメで形の動きを観察。
[ ./faq ]
複素平面の点 c に対して、 漸化式 z_(n+1) = z_n² + c を z_0 = 0 から繰り返した時に z が無限大に発散しない (= |z| が有限のまま留まる) c の集合のこと。 1980 年に Benoit Mandelbrot が描画して以降、 数学とビジュアル芸術の交差点を象徴する図形。 内部 (集合に属する点) を黒、 外部 (発散点) を 発散までの反復回数で色付けすると、 境界に無限の自己相似構造が現れます。
Mandelbrot は c をパラメータ・z_0=0 から始める。 Julia は c を固定 (1 つ選ぶ)・各点を z_0 として始める。 c がマンデルブロ集合内部 → Julia 集合は連結 (接続された 1 つの形)、 c が境界 → 複雑なフィラメント (繊維)、 c が外部 → Cantor 塵 (粉々)。 FracCast の Julia モードは c をスライドして 「これが connected」 「これが粉々」 を直感で確認できる。
WebGL2 は ブラウザの 3D グラフィックス API、 fragment shader は ピクセル 1 個 ごとに GPU で並列実行される小さなプログラム (GLSL ES 3.00)。 FracCast は 「ピクセル 1 個 = 1 つの複素点 z」 に対応させ、 escape-time iteration (発散判定) を 4096 ループまで GPU 並列で実行。 CPU でやると 100ms かかる描画が GPU では <8ms (60fps) になる。 これが 「リアルタイムで深く zoom できる」 の正体。
GPU の 32-bit 単精度 浮動小数点 の有効桁が 7〜8 桁。 zoom 10^7 倍を超えると ピクセル間隔が浮動小数点誤差を下回り、 「ブロック状の粗いパターン」 が見え始めます (= zoom の限界)。 真に 10^15 以上の zoom には double-double / quad-double 演算が必要で、 IMPROVE 候補。 一方 浅い zoom (〜10^5) は完全に滑らか。
マンデルブロ集合の境界には、 探索家コミュニティが命名した 「名所」 があります。 (1) Seahorse Valley = タツノオトシゴ型のミニマンデル列、 (2) 二重渦 (Double Spiral) = 二重螺旋構造、 (3) ミニマンデルブロ = 全体と相似な小さなコピーが集合のあちこちに無数に存在、 (4) Elephant Valley = ゾウの尻尾のような連続体、 (5) 細い触手 (Tendril) = フィラメント上の小宇宙、 (6) 全体ビュー = 最も有名な ハート + 円のスタンプ図形。 FracCast はワンクリックでジャンプ。
c がマンデルブロ集合の境界をなぞるように 「c = 0.7885 * (cos θ, sin θ)」 で θ を進めると、 Julia 集合の形が連続的に変態 (morph) する様子が見えます。 動的に 「Julia 集合がどう形を変えるか」 を可視化する古典的演出。 スライダーを手動で動かすのと同じ動作ですが、 自動回転で離散→連結→Cantor 塵 の遷移が分かる。
ai-lab.org の シミュレーター thesis 3本目です (1: PilePark = 物理サンドボックス、 2: DoodleDrop = お絵描き物理、 3: FracCast = 数学イテレーション動力学)。 type-forge / astro-cast が Three.js で 3D テキスト + 太陽系を描いたのに対して、 FracCast は raw WebGL2 fragment shader 直書きで 2D 数学を描く。 GPU 計算という共通基盤、 視覚言語は完全に別軸 (warm ivory + sepia + brass + crimson の 17世紀 数学者ノートブック motif)。