マンデルブロ・ダイブ(2020.02.20)

作者からのコメント

 これは 2 つ目に「つぶやきProcessing」できた作品です。 私自身、つぶやきProcessing という活動(?)に衝撃をうけ、 1 つ目の作品を投稿した翌日に本作を投稿してます。

 この頃は Python のテクニックも良く知らず(今もか?)、 また、その出来栄えになかなか納得がいかず、 ついつい熱中してしまい、 なんやかんやで 10 時間ぐらいコードと格闘していたように記憶しています。

 そのかいもあってか、海外からも初めて反応をもらったりして、 非常に嬉しかったです。

 まだこの頃は colorMode 関数なども活用しておらず、 RGB モードでの fill 関数による色指定で苦労している様子が ソースコードから見てとれます。

 この作品を作った動機については、マンデルブロ集合のちょっとした説明と共に 後述しております。

非圧縮版のソースコード

 つぶやき Processing では、文字数削減のために 必然的に code golf をしなければなりません。 そのため、ソースコードは時として読みづらくなってしまいます。

このページでは、code golf していない、 素のままのソースコードを提示します。 初学者の方、もしくはこれから つぶやき Processing に参加しようと 思っている方の参考になれば幸いです:

def setup():size(500,500)
s=1.0e3
def draw():
    global s
    s+=30
    for v in range(-250,+250,8):
        for u in range(-250,+250,8):
            c=complex(u/s-.7,-v/s+.3)
            z=0
            for t in range(33):
                z=z*z+c
                if abs(z)>1: break
            t-=32
            fill(t%8*48,t%7*47,t%9*46)
            rect(u+250,v+250,8,8)

Python では複素数を取り扱うことができるので、 complex 関数を使って、より自然にマンデルブロ集合の 計算を行っています。

マンデルブロ集合については、最後のセクションを参考にして下さい。

海外の方からの反応

 上で書いたように、自分のつぶやきProcessing に関して、 初めて海外の方から評価をいただいたのもこの作品でした。

映像とコードからなる「つぶやきProcessing」は 言語の壁を超えるんだなぁ、と思った瞬間でした。

 プログラムが書ける人であれば、Processing はそんなに難しいものではないので、 小さなプログラムで十分なので、 作品を作ってツィートしてみることをおすすめします。

マンデルブロとは

 この作品に付けた名前「マンデルブロ・ダイブ」のマンデルブロとは、 言わずも知れたマンデルブロ集合のことです。 マンデルブロというのは数学者の名前で、 詳しくは http://ja.wikipedia.org/wiki/マンデルブロ集合 をご覧になって下さい。

 マンデルブロ集合はフラクタルと呼ばれる図形であり、 細部を拡大してみてみると全体とよく似た形が現れてきます。 つまり、像全体がそのものの縮小版のような図形により構成されているという、 なんとも不思議な図形です。

 1980 年代半ばから 1990 年あたりにかけて、 コンピュータグラフィックス(CG)により、 マンデルブロ集合を始めとするフラクタル図形の描画が流行っていました。

また、nVIDIA の GPU を用いた汎用計算(GPGPU = General Purpose GPU)の道が拓けると GPU の並列性を生かして超高速にマンデルブロ集合等を描くプログラムも登場しました。

マンデルブロ集合をはじめとするフラクタル CG は、 ある意味、コンピュータの世界で何か出来事があると、 計算されるものではないかと感じています。

つぶやきProcessing という新しいムーブメントに対しても、 歴史にのっとり由緒正しく(?)マンデルブロ集合を計算させるべきだろうと思い、 このような作品を作ってみました (本当に由緒正しいのか否かは、取り敢えずおいておいて)。