ポリゴン内の一様にランダムなポイントをサンプリングしたい...
多数をサンプリングする場合、同じ面積の場合、2つの地域に分類される可能性が等しくなります。
[0,1]の2つの乱数を座標として取るので、正方形の場合、これは非常に簡単です。
私が持っている形状は正多角形ですが、どの多角形でも機能したいのですが。
/programming/3058150/how-to-find-a-random-point-in-a-quadrangle
ポリゴン内の一様にランダムなポイントをサンプリングしたい...
多数をサンプリングする場合、同じ面積の場合、2つの地域に分類される可能性が等しくなります。
[0,1]の2つの乱数を座標として取るので、正方形の場合、これは非常に簡単です。
私が持っている形状は正多角形ですが、どの多角形でも機能したいのですが。
/programming/3058150/how-to-find-a-random-point-in-a-quadrangle
回答:
簡単な方法の1つは、ポリゴンのバウンディングボックスを見つけてリジェクションサンプリングを使用することです。バウンディングボックスからサンプリングし、それがポリゴン内にあるかどうかを受け入れます。これは少なくとも確率で起こります(私は思う)。
もう1つの可能性は、ポリゴンを三角形分割することです。まず、比例して三角形をサンプリングし、次に三角形のランダムな点をサンプリングします。後者は単純です。アフィン変換まで、すべての三角形はの形式です。その分布からサンプル均一ポイントに、最初のサンプルが密度に応じて(すなわち、均一なサンプルR ∈ [ 0 、1 ]と計算X = 1 - √)、次いで試料Y∈[0、1-X]均一(すなわち、均一なサンプルS∈[0、1]と計算Y=(1-Xを)S)。より簡単な方法は、試料であるX、Y∈[0、1]、および場合、X+Y>1で置き換える(X、Y)with 。
これは少しおかしなことですが、ポリゴンが非常に奇妙な場合でもうまく機能するはずです。
http://siam.org/pdf/news/1297.pdf
次に、ディスク上の均一密度のプッシュフォワードをMetropolis-Hastings MCMCサンプリングの提案密度として使用します。