12

Fortune のボロノイ アルゴリズムに基づいていることが望ましい (乗算的および/または加算的に) 重み付けされたボロノイ図を作成する方法に関する参照実装を教えてもらえますか?

私の目標:ポイントのセット(各ポイントには重みがあります)と境界エッジのセット(通常は長方形)が与えられたら、pythonまたはprocessing.orgフレームワークを使用して重み付きボロノイ図を作成したいと思います。ここにがあります。

これまでに取り組んだこと: これまでのところ、Fortune のアルゴリズムと、 Michael Balzer の論文で提示されている「重心ボロノイ テッセレーション」を実装しました。アルゴリズム 3 は、重みを調整する必要がある方法を示していますが、これを実装すると、ジオメトリが機能しなくなります。これを修正するには、重みを考慮してスイープライン アルゴリズムを更新する必要がありますが、これまでのところ、これを行うことができませんでした。したがって、他の人がこの問題をどのように解決したかを知りたいです。

4

4 に答える 4

10

加算的に重み付けされたボロノイ図の場合:次元 n のべき乗図は、次元 n+1 の (n の重み付けされていない) ボロノイ図にすぎないことに注意してください

そのためには、点集合のボロノイ図は、座標に定数を追加すると不変であり、加重ボロノイ図は座標を使用して非加重ボロノイ図として記述できることを思い出してください。 3D:
(x_i, y_i, sqrt(C - w_i))
ここで、w_i はシードの重みで、C は任意の大きな定数 (実際には、C-w_i が正になるように十分小さい定数) です。
ダイアグラムが計算されたら、最後のコンポーネントを破棄します。

したがって、基本的には、問題と比較して n+1 次元のボロノイ図を処理できるライブラリを見つけるだけで済みます。それができるのがCGALです。これにより、実装も非常に簡単になります。

于 2013-04-16T01:07:59.590 に答える