问题:
我无法生成一条穿过多边形(不一定是凸面)的随机线。这些线应该与完全随机的线(随机位置,随机角度)具有相同的分布,忽略那些完全错过多边形的线。
到目前为止我的想法:
在多边形内选择一个随机点(我已经有那个算法)并选择一个随机角度是行不通的,因为锤形物体会更频繁地穿过头部(它的面积比手柄大),其中一个完全随机的线更有可能穿过手柄。此外,角度肯定不会均匀分布。
出于同样的原因,不可能在表面内部或表面上选取两个点并生成一条穿过这两个点的线或任何类似方法。
编辑:我有两种方法可以使用,但我对其中任何一种都不完全满意。
找到一个包含多边形的圆。通过圆圈选择随机线,直到找到一条也穿过多边形的线。这基本上是我上面写的定义,只有更高的机会击中多边形。
在 n 个方向(例如 0°、10°、20° 等)上投影多边形。投影的大小与从该方向受到打击的可能性成正比。然后我选择一个方向(使用投影大小作为加权概率)。最后,我可以在角度上添加 360/n° 抖动。这应该足够近似分布,但我想知道是否有更好的方法。
Edit2 : -deleted-
我写了很多,但是在考虑了更多并发现了一些错误之后,我意识到这已经超出了我的想象。这个想法是在几个特定的方向上投影多边形的凸包,并找到一个函数,通过混合已知的投影来为我们提供所有其他投影。但事实证明,细节非常复杂,对我来说太多了。