🐟 水槽シミュレータ — ネオンテトラ (C++ / WASM)

泳ぎを「アニメーション」ではなく物理で出しています。魚は体を進行波で送って進み (振幅は尾に向かって増大)、尾の振り数は遊泳速度から決まります (ストローハル数 St = f·2A/U ≈ 0.3。速く泳げば勝手に速く振れる)。 群れは分離・整列・結合+壁からの反発。青緑のラインは色素ではなく構造色なので、 見る角度で明るさと色相が変わります。
クリックしたところに餌が落ちます。計算も描画もすべて C++ → WASM。F キーで全画面。
水槽の大きさは画角から作っています(奥行きだけ 0.30m 固定)。床・水面・左右のガラスが 画面に入らない大きさに、魚が画面の外へ出入りできるぶんの水を足したもの。だから 画角を 1.5m まで広げても「水の中を覗いている」ままです。匹数ではなく密度で持つので、 寄っても引いても混み具合は同じに見えます(いまの容量と匹数は下に出ます)。

読み込み中…

ソース: github.com/yomei-o/suisou_emu_cpp