ねこでじ(Nekodigi)

Nekodigi’s diary

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

【Processing】Power Diagramを実装する

成果物

www.youtube.com
Convex Hullの中でVoronoi図を計算できるので、Voronoi Treemapを作るときに便利です。また、各頂点(円)に重み(半径)を設定できるのが特徴です。

仕組み

円の交点や、間の点を通る直線で仕切っていきます。
Power diagram - Wikipedia
初めに頂点を求めて繋いでいくのではなく、大きなConvex Hullを用意して、直線から、はみ出た部分を削り取るように処理しています。こうすることで、複雑なPolygon Clippingを使うことなく、Convex Hullの形に切り取られたVoronoi図を計算できます。

コード

Simple Power Diagramという名前で追加しています。
github.com
今回は、こちらのLua(LOVE)での実装をもとにしています。非常にシンプルなのでおすすめです。
GitHub - elemel/empower: Power diagrams in Lua