在多边形的线上选择一个随机点

Mat*_*att 3 java geometry awt polygon computational-geometry

我正在使用Java Polygon对象,它存储一组点,这些点定义构成形状的线.

我如何选择其中一条线上的随机点?Polygon类中是否有任何方法可以使这更容易?

为了澄清,我想从多边形边缘的任何位置选择一个随机点,而不是从定义顶点的集合中选择一个随机点.

cor*_*iKa 5

您要做的第一件事是找到多边形的周长.

现在找到0到perimiter范围内的随机数.

然后,迭代多边形的线段,从值中减去线段的长度,直到下一个线段的长度超过当前值.

假装你沿着段的"走那段距离"等于你的剩余值,你会在周长上有一个随机点.

================================

另一个可行的选择是选择一个由长度偏移的随机片段(您可以缓存每个多边形的阈值),然后在随机选取的片段上选择一个随机点.对于大型多边形(缓存阈值后的顺序为1)会更快,但会经过两倍的随机数.

  • +1 - 这些方法在周长上提供*均匀分布的*随机点. (2认同)