从多边形内随机出点

多边形内随机点原理:

  1. 从多边形所有点里找到上下左右边界

  2. 从X轴的边界之间随机出x坐标

  3. 过x点作一个垂直于X轴的线段,此线段与多边形有n个交点

  4. 这n个交点在Y轴上会有m个区间

  5. 从m个区间中随机一个区间,再从区间内随机一个y

代码截图:
image

注意项:
1、要求传入的多边形相邻的2个点在数组内也是相邻的
image
2、线段相交可能在端点,也可能在线段内,为了处理上的统一,端点的交点会push两个到数组内

多边形源码来源于:图片切割

源码奉上仅供参考有问题望留言沟通:
多边形内随机点.zip (70.9 KB)

2赞

大佬 mark一下

这并不是随机吧。x轴随机一个点,那你是默认y轴方向上各点概率一样。打个比方,你任意垂直于x轴的线与多边形相交的区间之和要一样。在这个条件下,你才能随机x轴再随机y轴的各个段。
说个想法,把多边形拆成三角形,随机点落在各个三角形的概率等同于三角形面积占比,再从三角形中随机一个点。

大佬说的对,当时并没有考虑概率的问题。其次我觉得您的按面积随机的想法比较好,也是比较合理的,当时并没有考虑那么多。

感谢大佬指点。

根据面积权重随机三角形,再从三角形内随机点
知识点:凹三角形切割
效果图:image

源码补充:多边形内随机点.zip (80.4 KB)