パスワードを忘れた? アカウント作成
5944101 journal
スパコン

cyber205の日記: 3D化したマンデルブロート集合はMandelbulbというのか 5

日記 by cyber205

やはりというかなんというか、3Dになってもすんげーグロテスクなのは変わりない。
計算量が膨大だから、計算機の能力が上がらないと3D化は難しかったのだろうけど、
ゴシック様式というか、アントニオ・ガウディの建築物のような感じというか。凄い風景が見られる。

フラクタルは面白いな。
自分が初めてマンデルブロート集合を知ったのは科学雑誌「ニュートン」の特集を見てから。
その異様な姿も、どんだけ拡大しても自己相似性があるのも興味深かったが、
何よりバカバカしいほど簡単な数式であんな複雑な形状を描画できるというのが気になった。

どうやって計算するのか、それこそ先生に聞いたり、図書館で資料を探したりして情報収集し、
BASICでプログラムを組むぐらいの頭はあったので、自分のコンピュータで計算させてみた。
確か、当時のI/Oとかにもフラクタル図形の描画プログラムは掲載されていたような気がする。
ジュリア集合なんかは計算量が少なくてマンデルブロより簡単に描けたんだったかな。

幻影解の部分は適当に打ち切らないと無限ループになるので、そのへんのリミッターを考えたりしながら、
1ドットずつ座標決めて描画するプログラムを作って、実際に自分のMSXで一晩か二晩かけて計算させてみた。

できるだけ全体像が早く見えるように、ドットを飛ばして演算するプログラムとか組んでたっけ。
アセンブラで浮動小数点演算をガッチリ組むほど自分は賢くなかったし、
当時のマシンパワーでインタプリタを動かすのは遅かったから、
ずっと電源入れっぱなしで停電が恐ろしかったけど、ちゃんと計算できた。

ちなみに、BASICからC言語にステップアップした時にもグラフィックライブラリを組んで描画させたのは
やはりフラクタル図形だったりする。マンデルブロート集合ではなくて、タートルグラフィックスのコマンドを実装して
コッホ島とか、シェルピンスキーのギャスケットなんかを描いてたような記憶がある。

大学でもカオス理論やフラクタルを扱った講義を取ったりしてたので学生時代は結構ハマってたのだろう。
最近はかなりご無沙汰な状況になってたけどね。

この議論は、cyber205 (4374)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
  • by parsley (5772) on 2012年08月08日 13時43分 (#2208506) 日記

    これを見てからロマネスコ [google.co.jp]を食べると、人類は神になろうかとしていると思う。

    --
    Copyright (c) 2001-2014 Parsley, All rights reserved.
  • by river (40534) on 2012年08月08日 15時19分 (#2208556) 日記

    先日のTED talkで3Dフラクタルを使った建築の話をしていた人がいましたね(動画 [youtube.com])。
    立方体から初めて、各面を二つ折りにするというステップをコンピューター内で繰り返して色んな形を作ったり、同様に円柱から始めて柱を作ったりしています。
    フラクタルという言葉は出さずに、細胞分裂の繰り返しで形を作る自然に学んだものだと言っていますが。

    単純な規則の反復適用で初期条件がドラマチックに展開するという所ではライフゲームのようなセルオートマトンも面白いですね。
    新しい言語や環境を始めると、つい練習がてらにここらへんを書いてしまう口で。

  • 当時はAthlon64X2 5200+でしたが、並列化しなくても10秒もあれば640x480のMandelbrot集合はスパッと描けました。マシンパワーの向上マジパネェっす。

    もちろん、並列化するときっちりスケールしました。

    • おおっ、スクリプト言語で10秒あれば描けますか!
      一応、pythonはJITコンパイラを含んではいるはずだけど…
      いやはや、信じられないほど早くなったものだ。

      マンデルブロート集合は複素平面座標の指定が決まれば、
      後はリミッター決めて脱出までのループ回数をチェックするだけだから、
      レイトレの演算と似て、分散処理に回してスケールさせやすいですね。

      そういえばDebianにクラスタリングして演算させるアプリがあったような気がします。

      親コメント
      • 最近のJITのあるスクリプト言語は、コンパイラの数倍(2~5倍)しか時間かかりませんよ。
        (Cで書き直して、大して速くならずがっかりすることも多くなりました。)

        科学演算のコア部分をSIMDバリバリのアセンブラで組んだ場合は、さすがに桁1つ2つ違ったりしますが、
        それ以外のちょっとした部分にはかなり使えます。

        スクリプト言語側に型指定が出来るようになれば、コンパイラ級の早さが出るという話もありますね。
        (JITコンパイルするので、もはやコンパイラ級の速度が出るのは当たり前??)
        最近は、JavaScript の実行の早さに驚きました。
        サーバサイドJSって、なんと無駄なことを…と思ったら、実行してみると遅くないんですよね。

        親コメント
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...