java – 选择多边形线上的随机点

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

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

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

解决方法:

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

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

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

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

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

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

上一篇:平滑连接圆心


下一篇:JDOJ 1929: 求最长不下降序列长度