怎么在已知任意多边形内大量生成内点?求代码 + 算法原理,难道都没人吗?一直等啊

_Always 2015-04-24 09:08:09
就是已知多边形 点集p{}; 求p的内点,是大量,随机的,求算法代码、原理啊,困扰我好久了啊,求大神来解决 啊,若ok了,我的分全给你!急急急急急急啊
...全文
658 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Trent1985 2015-06-12
  • 打赏
  • 举报
回复
这个太简单了,我告诉你如何判断一个点在多边形内好了,有了这个在生成点还不容易?http://blog.csdn.net/hjh2005/article/details/9246967
u011084430 2015-05-05
  • 打赏
  • 举报
回复
存的只是索引,不在区域内的像素省略,小于960*640*4,再随机不重复这个整数索引数组,找到索引对应的坐标。
zhoujk 2015-05-05
  • 打赏
  • 举报
回复
这是个很小的数组,只有X*Y个下标,因为要存两个坐标值,实际上的空间也就只相当于两个图片而已
__Always 2015-05-04
  • 打赏
  • 举报
回复
上述就是世界地图的俄罗斯,描边的点是已知的,也就是多边形边点集合已知,要随机在其内部生成大量随机点,按照大家所说采用第二种方法,提前把点存入数组中,是不是太大?也是就是我的数组大小960*640?
__Always 2015-05-04
  • 打赏
  • 举报
回复
u011084430 2015-05-02
  • 打赏
  • 举报
回复
引用 1 楼 relaxisland 的回复:
我觉得可以这么做,不知道对不对,仅供参考 我觉得可以根据点集,生成一个点阵图(0,1图, 多边形外部0, 内部1), ---》如何画多边形, 是有算法的。 然后,有2个方法生成随机点 方法1 在多边形的外接矩形内生成随机点,然后与点阵图进行判断,如果不属于多边形部分,重新在生成 方法2 对点阵图内属于多边形内部的点 进行编号0 到m 然后生成0到m的随机数 (仅限于 坐标是整数)
觉得他的方法二还是挺好的,为了速度,牺牲2M左右内存还是值得的。楼主贴个图上来或附点地图坐标 出来,更直观点。
zhoujk 2015-05-01
  • 打赏
  • 举报
回复
我觉得你的思路有问题,或者没有把问题说完整。任何加入随机数的方法都会减速。要随机的扫描所有的点,会导致性能急剧下降。 我们假设一共有10,000个点需要扫描,刚开始的时间,随机数问题不大,但越到后面,随机生产的坐标刚才是需要运算的概率越来越低,最后一个点,通过随机坐标来取得的概率是1/10,000。所以建议不要使用随机数,而是在外接矩形里遍历,如果是有效点则计算,否则跳过。 如果非要随机处理,建议这样: 1.生成有效点的坐标数组,长度为A 2.在这个数组里选择随机下标,范围为0~A-1。 3.读取这个下标; 4.从这个点开始,使用下一个数据将它覆盖,直到A-1; 5.A--;并在算法之后 goto(2) 这样可以保证每次都选择有效点,并且每个点只被选择一次。
_Always 2015-04-30
  • 打赏
  • 举报
回复
引用 2 楼 prfans1 的回复:
如果是凸多边形,我觉得可以基于凸集的一些性质来做。比如,首先得到边界点集合,然后连接任意的两个边界点,边界线段上的点都是多边形内点。
你这对于凸多边形使用,但是我的任意简单凹凸多边形,也就是世界地图的布局,要细致描内点(甚至要把所有像素都描点),其次是能一次性随机内点获取成功,而不是随机了之后又去判断是否在多边形内……泪奔啊……
_Always 2015-04-30
  • 打赏
  • 举报
回复
引用 1 楼 relaxisland 的回复:
我觉得可以这么做,不知道对不对,仅供参考 我觉得可以根据点集,生成一个点阵图(0,1图, 多边形外部0, 内部1), ---》如何画多边形, 是有算法的。 然后,有2个方法生成随机点 方法1 在多边形的外接矩形内生成随机点,然后与点阵图进行判断,如果不属于多边形部分,重新在生成 方法2 对点阵图内属于多边形内部的点 进行编号0 到m 然后生成0到m的随机数 (仅限于 坐标是整数)
你好,我目前是用的你说的第一种方案,但是这种方案有概率性,看脸的,而且不能用递归,因为运气不好一直随机不到内点就栈溢出,所以在面对大量密集的任意简单多边形时 不会百分之百得到内点 我使用它做地图,按概率描点还可以。但是我要取得一个确定的随机内点时很困难 你说的第二种方案貌似是可行的的,但是在之前就必须编好号所有点,如果是一张960 * 600的地图,若要细致的话,这个数组岂不是太大? 总之我想要的就是随机多边形内描点是非常细致的(可以精确到像素级别),取点时 可以不这么细,但要保证百分之百能取到,且递归在可预算次数内才行,还有没有别的办法啊?跪求啊…………………………
relaxisland 2015-04-27
  • 打赏
  • 举报
回复
我觉得可以这么做,不知道对不对,仅供参考 我觉得可以根据点集,生成一个点阵图(0,1图, 多边形外部0, 内部1), ---》如何画多边形, 是有算法的。 然后,有2个方法生成随机点 方法1 在多边形的外接矩形内生成随机点,然后与点阵图进行判断,如果不属于多边形部分,重新在生成 方法2 对点阵图内属于多边形内部的点 进行编号0 到m 然后生成0到m的随机数 (仅限于 坐标是整数)
prfans1 2015-04-27
  • 打赏
  • 举报
回复
如果是凸多边形,我觉得可以基于凸集的一些性质来做。比如,首先得到边界点集合,然后连接任意的两个边界点,边界线段上的点都是多边形内点。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧