奇妙なアトラクタ(Strange Attractors)
(blog.shashanktomar.com)- Three.js を活用して 奇妙なアトラクタ(Strange Attractors) を可視化したプロジェクトで、単純な数学方程式から複雑で美しいパターンが生成される過程を示している
- 力学系(Dynamical Systems) と カオス理論(Chaos Theory) の基本概念を説明し、時間とともに変化するシステムの状態と、その進化を決定するルールを中心に構成されている
- 奇妙なアトラクタ は、フラクタル構造、初期条件に対する鋭敏性、非周期的軌道、カオスの中の秩序という4つの特徴で定義される
- バタフライ効果 を Thomas Attractor の可視化で示し、パラメータ
aのわずかな変化がまったく異なるパターンを生み出す過程を提示 - GPU ベースの ピンポンレンダリング(ping-pong rendering) 技法を使って数千個の粒子を効率よく計算・レンダリングし、リアルタイム可視化を実現
力学系とカオス理論
-
力学系 は時間とともに変化する現象を数学的にモデル化する方法で、惑星の運動、人口増加、株式市場などさまざまな例を含む
- システムの取りうるすべての状態を表す 位相空間(Phase Space) と、ある状態から次の状態へ移す ダイナミクス(Dynamics) で構成される
- たとえば人口成長モデルでは、人口規模と成長率が位相空間の状態を成し、出生率・死亡率・環境収容力などがダイナミクスを決定する
-
カオス理論(Chaos Theory) は予測不可能なシステムを研究する分野であり、自然界の多くの現象がこのような 非線形で鋭敏なシステム に属する
- ルールは存在していても、不完全な情報のために予測が不可能になる現象を説明する
- 初期条件の小さな違いが結果を大きく変える バタフライ効果 が代表的な特徴
アトラクタ(Attractor)と奇妙なアトラクタ(Strange Attractor)
-
アトラクタ(Attractor) は、システムが時間の経過とともに収束する状態の集合で、たとえば振り子の静止点がこれに当たる
- アトラクタへの収束は 安定性、エネルギー散逸(Dissipation)、収縮(Contraction) などの要因によって生じる
-
奇妙なアトラクタ(Strange Attractor) は、複雑な非線形方程式により予測不可能な軌道を示すアトラクタで、次のような特徴を持つ
- フラクタル構造: さまざまなスケールで繰り返される複雑なパターン
- 初期条件への鋭敏性: 小さな変化がまったく異なる結果につながる
- 非周期的軌道: 同じ経路を繰り返さない
- カオスの中の秩序: 無作為に見えても内部に一定の構造が存在する
バタフライ効果と Thomas Attractor の可視化
- バタフライ効果 は小さな変化が長期的に大きな差を生む現象で、「中国の蝶の羽ばたきがカリブ海のハリケーンを引き起こす」という比喩で説明される
- Thomas Attractor のパラメータ
aの値を 0.10、0.13、0.19、0.21 などに変えると、粒子軌道と全体形状が完全に変わる - 初期状態を
cubeとsphere surfaceに変えると粒子は異なる経路をたどるが、最終的には同じアトラクタ状態へ収束する
実装の詳細
- 可視化は Three.js を使用し、多数の粒子を GPU 上で直接計算・レンダリングする
- ピンポンレンダリング(ping-pong rendering) 技法により CPU と GPU 間のデータ転送を最小化し、2つの フレームバッファオブジェクト(FBO) を交互に使用する
pingとpongバッファがそれぞれ現在の状態と次の状態を保存- シェーダープログラムが各粒子の位置をアトラクタ方程式に従って更新
- 毎フレームごとにバッファを切り替え、新しい粒子状態をレンダリングする
参考および追加資料
- 関連資料として Maxim の Attractor 可視化、Wikipedia: Attractor、List of Chaotic Maps、WebGLFundamentals: Ping Pong Rendering などが引用されている
- 追加の例として chaoticatmospheres.com、dynamicmath.xyz、Reddit r/generative などで 3D アトラクタ可視化の事例を紹介
- ブログの GitHub Discussion ページでフィードバックを受け付けており、今後ブログへ統合予定
まだコメントはありません。