ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】磁力線を使ってVoronoi図を模倣する

成果物

www.youtube.com
磁石が同じ力の時、磁力線はちょうど二等分するところで(ぶつかります)この性質を利用して、Voronoi図を描けないかということでやってみました。今回のコードでは他の磁石の影響も受けるので、少し曲がったようになっていますが、味があるので敢えてそのままにしています。距離関数がそのままだと影響を受けすぎますが、4乗を使った距離関数()を使うと、なかなかきれいな結果が得られます。きちんと2等分線を描くものはまた今度作ろうと思います。

ガイドなし

f:id:Nekodigi:20200728230451p:plain
塗りつぶしが薄いです。力が釣り合うところで止まってしまい、効率が落ちているのではないかと予測しています。

ガイドあり

f:id:Nekodigi:20200728214848p:plain
別の方法で求めたVoronoi図の頂点に負の磁力を与えて引っ張ると、また違った結果が得られます。線が薄くなり、塗りつぶしが濃くなるのが特徴です。

仕組み

仕組みは上で紹介した通りです。Voronoi図についてさらに知りたい方は、過去記事をご覧ください。
nekodigi.hatenablog.com

コード

Voronoi図をうっすらと表示したり、ガイドとして使うために、Hull Voronoi 3Dを使っているのですが、非常に複雑なコードなので、本質を抜き出したMagnetic Voronoi Simpleというものを追加しています。先にそちらを見ることをお勧めします。
github.com
今回紹介したものを詳しく知りたい方は、Magnetic_Voronoi_with_Ground_Truthをご覧ください。