地図/力学/エージェント

場と点の合流点 — 節線

場が点の動きを決める。膜が振動すると、揺れない線(節)と大きく揺れる腹に分かれる。各点で揺れの強さを場から読み、その強さぶんだけ点をランダムに揺さぶると、よく揺れる場所からは弾き飛ばされ、揺れない節線にだけ点が溜まる。

クラドニ図形。板や膜の固有振動の節(揺れが 0 の線)に砂が集まる現象で、Ernst Chladni が 18 世紀末に板へ砂を撒いて示した。正方形膜の固有モードは u(x,y) = sin(aπx)·sin(bπy)。二つのモードを引いた sin(aπx)·sin(bπy) − sin(bπx)·sin(aπy) は対角対称が崩れ、整数の組 (a, b) ごとに違う節線の図形になる。u = 0 の点が節線で、|u| が大きいほど腹。

場そのものを先に見る。u(nx, ny) は正規化した座標 nx = gx/nny = gy/n を取り、二つのモードの積を引き算する。|u| を明るさに写すと、u = 0 の節線が明るく、腹が暗く出る。モードの組 (a, b) を時間でずらすと、節線の図形が別の図形へ移り変わる。

明るい筋が u = 0 の節線、暗い面が腹。ab がずれると節線が織り替わる。u をモード一枚 sin(aπx)·sin(bπy) に戻すと、節線が縦横の格子に戻って図形が出ない。差を取って対角対称を崩すと、組ごとに違う模様になる。

その節線へ点を集める。点をランダムに撒き、各点の足元で |u| を読む。揺れの強さ jitter = 0.4 + |u|*7 ぶんだけ、毎フレーム乱数で位置を散らす。腹(|u| が大きい)では大きく跳ねて散り、節線(|u| がほぼ 0)では 0.4 のわずかな揺れしか起きず、点がそこに留まる。

散らばっていた点が腹から弾かれて、節線に沿って細い筋に集まる。モードの組が morph で次の組へ滑ると、点はいったん崩れて新しい節線へ並び直す。揺らし方は酔歩に近い(毎フレーム乱数で位置をずらす)のに、揺れの強さを場が握っているので、サイコロだけの点とは似ても似つかない模様に落ち着く。jitter の係数 7 を下げると弾く力が弱まって筋が太く滲み、上げると点が節線へきつく押し込まれて線が締まる。

動く点の決め方を、運・力・場・標的・仲間・痕跡と替えてきて、節線では場が点を選り分ける。近所探索を速くする空間分割、未来位置を読む pursue/evade、振る舞いを木で組むビヘイビアツリーは、まだ踏んでいない決め方になる。