世界を動かす技術を、日本語で。

Show HN: 奇妙なアトラクタ

概要

  • Three.js を使った Strange Attractors の可視化体験談
  • 力学系カオス理論 の基礎解説
  • ストレンジアトラクター の性質とバタフライ効果の紹介
  • GPU活用 による効率的な描画手法(Ping-Pongレンダリング)
  • ブログやGitHub でのフィードバック募集とプロジェクト裏話

ストレンジアトラクターに魅せられて

  • 数ヶ月前、 Three.js で遊んでいるときに Strange Attractors に出会い、計画が大きく変わった体験
  • 最初は一つだけ描画して終わるつもりが、 美しいパターン の無限の可能性に夢中
  • 単純な数式 から生まれる複雑さと秩序の発見
  • 何時間も パターンの生成 を眺めてしまう満足感
  • ランダム性から秩序が現れる 現象への深い魅力

力学系とカオス理論の基礎

  • 力学系 とは、時間とともに変化する現象を数式で記述する枠組み
  • フェーズ空間 :システムが取りうる全ての状態の集合
  • ダイナミクス :現在の状態から次の状態への移り変わりを決めるルール
  • 例:振り子、天候、鳥の群れ、ウイルス拡散、株式市場など多様な応用
  • 物理学・生物学・経済学 などで広く研究される対象

カオス理論の世界

  • カオス理論 は、予測困難な振る舞いを示すシステムを研究する分野
  • 非カオス系 は決定論的で予測可能だが、 カオス系 は初期条件に敏感で予測困難
  • バタフライ効果 :初期条件のわずかな違いが大きな結果を生む現象
  • 自然界の多くの現象 (天候、液体の拡散、経済行動など)はカオス的
  • 完全なルールを得られない複雑系では予測に不確実性が増幅

アトラクターとストレンジアトラクター

  • アトラクター :システムが時間とともに引き寄せられる状態や集合
  • 例:振り子は最終的に下で静止し、その状態がアトラクター
  • アトラクターの特徴
    • 安定性 :到達後はそこに留まる傾向
    • エネルギー散逸 :エネルギー損失による低エネルギー状態への収束
    • 収束性 :近い状態同士が徐々に集まる性質
  • ストレンジアトラクター の特徴
    • フラクタル構造 :スケールを変えても繰り返される複雑なパターン
    • 初期条件への極端な感度 :バタフライ効果
    • 非周期的軌道 :決して同じ軌道をたどらない
    • カオスの中の秩序 :無秩序の中に現れるパターン

バタフライ効果の実演

  • ストレンジアトラクター の核心は「バタフライ効果」
  • 小さな初期値やパラメータの違いが 全く異なる軌道 やパターンに
  • Thomas Attractor を例に、パラメータaの微小な変化で粒子の軌道やアトラクターの形状が大きく変化
  • 初期状態 をキューブと球面で切り替えて軌道の違いを観察可能
  • 最終的には同じアトラクターに収束するが、経路が大きく異なる現象

Three.jsとGPUによる効率的な可視化

  • 大量のパーティクル をGPUで効率的に描画するため、 Ping-Pongレンダリング 手法を採用
    • 2つのFBO(フレームバッファオブジェクト)を交互に使用し、CPU-GPU間の転送を最小化
    • 一方で現在の状態を描画し、もう一方で次の状態を計算
  • シェーダープログラム でアトラクター方程式を適用し、パーティクル位置を更新
  • 各フレームごとにFBOをスワップし、効率的な描画を実現

まとめ・フィードバック募集

  • GitHub Discussions でコメントやフィードバックを歓迎
  • 近い将来、ブログ本体との統合も予定
  • 参考文献やインスピレーション元として Wikipedia、WebGLFundamentals、各種ブログ・コミュニティ を挙げている

サイドプロジェクト裏話とSimone Attractor

  • サイドプロジェクトとして Strange Attractors (https://blog.shashanktomar.com/posts/strange-attractors)をThree.jsで構築
  • 初期の「遊びとしての数学」への回帰と、 驚きや発見の楽しさ を再認識
  • Simone Attractor (Threadsで教えてもらった2Dアトラクター)を GPTに3Dへ拡張させて実装
  • 全パラメータを自由に調整可能、 誰でも実験・体験可能なインタラクティブ設計
  • 数学・アート好きの方、特に 数理的な知見 を持つ方からのフィードバックを強く希望

Hackerたちの意見

これめっちゃクール!高校の頃、ジュラ紀の時代にアトラクターで遊ぶのが好きだったんだ。でも、486のパソコンだと、解像度が低くても1つ描くのに20〜30分かかってたんだよね。今はリアルタイムで3Dで描けるなんてすごい!それに、システムの見方にも大きな影響を与えてくれたし、軌道や不安定性とかも考えるようになった。

Fractint4life https://fractint.org/

大学院の頃、フラクタルやアトラクターにハマってた時に、キノコやLSD、DMTにも夢中だったんだ。それがポスドクの研究にもかなり影響を与えて、個別の教育から大学全体やK-12機関の戦略的システム分析に焦点が移ったんだよね。途中で何かスイッチが入って、大学システムのような複雑な階層を頭の中で2次元のフラクタル幾何学として見ることができるようになった。説明するのは難しいけど、今コンサルタントをしていると、データで証明する前に、部門が壊れているのを感じることができるんだ。なんか、組織のメインの構造に合ってない感じがするんだよね。まあ、この道を進むのはあまりおすすめしないけど、大学院のコースを受けるのもいいかも。ちなみに、200人くらいの前で論文を守る時にDMTの影響を感じながらやるのは、パニックアタックを引き起こすいい方法だよ。ソースは私。私がソースです。

趣味でハッキングしてアートを共有してる人たち、インターネットの最高の部分だよね!

こういうビジュアライゼーションは、3Dの位相空間を見ることで得られるものがどれだけあるかを際立たせるけど、3D以上の次元で見逃している豊かさもたくさんあるよね!>「3Dの断面は確実に見れるけど、3D以上のケースを視覚化するスマートな方法があるのかな?」って思う。ラグランジアン粒子を追って、通過する次元に応じて色を変えることができたら面白いかも。たくさんの粒子でそれをやって、位相空間がどれだけ通過されているかを感じ取るために分布をプロットするのもいいかも。このビジュアライゼーションは、統計力学の歴史における初期の議論を思い出させるね。ボルツマンやギブス、エーレンフェスト、ロシュミット、そしてその天才たちが位相空間やマクロなシステムが平衡に達することにどう取り組んだのか、すごいよね。素晴らしい仕事だね、シャシャンク!

ローレンツ方程式とチュア回路をアナログオシロスコープで調べるのは魅了されるよね!アナログスコープでチュア回路を調べた素晴らしい動画もあるし… AUXポートを通してスピーカーに接続するとホワイトノイズが出るよ ;)

「数学的に正しいかどうかわからないけど」っていうのは、必ずしも「正しい」高次元への拡張があるわけじゃないんだよね。たくさんあるかもしれないし、全くないかもしれないし、どちらにしても「十分に近い」ものが自体面白いこともあるよ。具体的に何か触ってみたいなら、3Dマンデルブロを作ろうとした人たちの冒険を探してみるといいかも。そういう冒険についての良い記事をいくつか見たことがあるよ。誰かが「正しい」解にたどり着いたかはわからないけど、最後に見たのは何年も前だから、確かに面白い可能性が見つかったことはあるよ。

いいね :) 25年以上前、ティーンエイジャーの頃に、こんな感じのカオティックアトラクターのビジュアライザーを作ったことがあるんだ — でも2Dだけどね — その時、「視覚化する代わりに音にしてみたらどうだろう?」って思ったんだ。詳細は覚えてないけど、周波数が極座標の角度に、振幅が大きさに関連してたと思う。それがきっかけでWAVフォーマットを書く方法を学ぶことになったんだ — これがエンディアンの最初の紹介だったけど、結果は完全に聞こえないわけじゃなかったよ!昔のSF映画のコンピュータの音みたいな感じで、ランダムだけど不協和音じゃないビープ音やブープ音だった!

こういう感じのモジュールが、ユーロラックには少なくとも2つあるよ。どっちも予測不可能だけどサイクル的な動きを音に加えるのがめっちゃ楽しいんだ。 - Nonlinear CircuitsのHypster - JoranalogueのOrbit 3

デモの端っこがいい感じにスパイラルしてるね。レンダリングのせいで、まるで銀河みたいに見える。大学の頃に考えてた、銀河の形成についての(ちょっとイライラした)妄想を思い出したよ。銀河って、ピザを投げるみたいに広がってるのか、それとも渦に吸い込まれるみたいな感じなのか、みたいな。

数学とか計算、物理なんてどうでもいい。これは今まで見た中で一番美しいものだよ。

今日はこれで生産性が吹っ飛んだわ。最高だね。