問題:
多角形を横切るランダムな線を生成するのに問題があります (凸面である必要はありません)。ラインは、完全にランダムなライン (ランダムな位置、ランダムな角度) と同じ分布を持つ必要があり、ポリゴンを完全に見逃しているラインは無視されます。
これまでの私の考え:
多角形内のランダムなポイントを選択し (私は既にそのアルゴリズムを持っています)、ランダムな角度を選択してもうまくいきません。完全にランダムな線は、ハンドルを突き破る可能性が高くなります。また、角度は間違いなく均一に分布しません。
同じ理由で、サーフェス内またはサーフェス上の 2 つのポイントを選択して、両方のポイントを通る線を生成したり、同様の方法で線を生成したりすることはできません。
編集: 使用できる方法が 2 つありますが、どちらにも完全に満足しているわけではありません。
多角形を含む円を見つけます。多角形を横切る線が見つかるまで、円を通るランダムな線を選びます。これは基本的に、ポリゴンにヒットする可能性が高いだけで上に書いた定義です。
ポリゴンを n 方向 (例: 0°、10°、20° など) に投影します。投影のサイズは、この方向からの衝突の可能性に比例します。次に、方向を選択します (投影サイズを加重確率として使用)。最後に、角度に 360/n° ジッターを追加できます。これは分布を十分に近似するはずですが、それを行うより良い方法があるかどうか疑問に思います。
Edit2 : -deleted-
かなり多くのことを書きましたが、それについてもう少し考え、いくつかの間違いを発見した後、これが頭を悩ませていることに気付きました。アイデアは、多角形の凸包をいくつかの特定の方向に投影し、既知のものをブレンドすることによって他のすべての投影を与える関数を見つけることでした。しかし、詳細は非常に複雑で、現時点では私には多すぎることが判明しました.