ユーザーが円を描くことができるXNAのプログラムがあります(完全な円ではなく、マウスでフリーハンドで円を描く)。結果の「円」は、Vector2 ポイント (スクリーン スペース) のリストとして保存されます。それらを 3D 空間に変換するのは簡単ですが、変換後にやりたいことは、円で囲まれた領域 (すべて Z:0 にある) を平らなボリュームとして扱い、完全に均一ではない方法で粒子で満たすことです。これを実現するには、選択した領域内のランダムなポイントにパーティクルの位置を割り当てる必要があります。どうすればこれを達成できますか?
1 に答える
1
まず、ポイントのリストを調べて、各軸に沿ってmin
とのポイント (すなわち、、、 )を検出することにより、ポイントのバウンディング ボックスを見つけます。次に、とのような数値のペアを生成することにより、その境界ボックス内にいくつかのランダム ポイントを生成し、 Point in Polygon アルゴリズムを使用して、各ランダム ポイントがユーザーの「円」(技術的にはpolygon )内にあるかどうかを確認します。ポイントが「円」の内側にある場合は、それを保持します。それ以外の場合は、別のランダム ペアを生成します。これにより、ランダムなポイントが得られるはずです。max
minX
minY
maxX
maxY
(x, y)
minX < x < maxX
minY < y < maxY
N
于 2013-09-28T11:14:58.950 に答える