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

_Always 2015-04-24 09:08:09
就是已知多边形 点集p{}; 求p的内点,是大量,随机的,求算法代码、原理啊,困扰我好久了啊,求大神来解决 啊,若ok了,我的分全给你!急急急急急急啊
...全文
769 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
如果是凸多边形,我觉得可以基于凸集的一些性质来做。比如,首先得到边界点集合,然后连接任意的两个边界点,边界线段上的点都是多边形内点。
目录 目录 1 Graph 图论 3 | DAG 的深度优先搜索标记 3 | 无向图找桥 3 | 无向图连通度(割) 3 | 最大团问题 DP + DFS 3 | 欧拉路径 O(E) 3 | DIJKSTRA 数组实现 O(N^2) 3 | DIJKSTRA O(E * LOG E) 4 | BELLMANFORD 单源最短路 O(VE) 4 | SPFA(SHORTEST PATH FASTER ALGORITHM) 4 | 第 K 短路(DIJKSTRA) 5 | 第 K 短路(A*) 5 | PRIM MST 6 | 次小生成树 O(V^2) 6 | 最小生成森林问题(K 颗树)O(MLOGM). 6 | 有向图最小树形图 6 | MINIMAL STEINER TREE 6 | TARJAN 强连通分量 7 | 弦图判断 7 | 弦图的 PERFECT ELIMINATION 点排列 7 | 稳定婚姻问题 O(N^2) 7 | 拓扑排序 8 | 无向图连通分支(DFS/BFS 邻接阵) 8 | 有向图强连通分支(DFS/BFS 邻接阵)O(N^2) 8 | 有向图最小点基(邻接阵)O(N^2) 9 | FLOYD 最小环 9 | 2-SAT 问题 9 Network 网络流 11 | 二分图匹配(匈牙利算法 DFS 实现) 11 | 二分图匹配(匈牙利算法 BFS 实现) 11 | 二分图匹配(HOPCROFT-CARP 的算法) 11 | 二分图最佳匹配(KUHN MUNKRAS 算法 O(M*M*N)) 11 | 无向图最小割 O(N^3) 12 | 有上下界的最小(最大)流 12 | DINIC 最大流 O(V^2 * E) 12 | HLPP 最大流 O(V^3) 13 | 最小费用流 O(V * E * F) 13 | 最小费用流 O(V^2 * F) 14 | 最佳边割集 15 | 最佳点割集 15 | 最小边割集 15 | 最小点割集(点连通度) 16 | 最小路径覆盖 O(N^3) 16 | 最小点集覆盖 16 Structure 数据结构 17 | 某天是星期几 17 | 左偏树 合并复杂度 O(LOG N) 17 | 树状数组 17 | 二维树状数组 17 | TRIE 树(K 叉) 17 | TRIE 树(左儿子又兄弟) 18 | 后缀数组 O(N * LOG N) 18 | 后缀数组 O(N) 18 | RMQ 离线算法 O(N*LOGN)+O(1) 19 | RMQ(RANGE MINIMUM/MAXIMUM QUERY)-ST 算法 (O(NLOGN + Q)) 19 | RMQ 离线算法 O(N*LOGN)+O(1)解 LCA 19 | LCA 离线算法 O(E)+O(1) 20 | 带权值的并查集 20 | 快速排序 20 | 2 台机器工作调度 20 | 比较高效的大数 20 | 普通的大数运算 21 | 最长公共递增子序列 O(N^2) 22 | 0-1 分数规划 22 | 最长有序子序列(递增/递减/非递增/非递减) 22 | 最长公共子序列 23 | 最少找硬币问题(贪心策略-深搜实现) 23 | 棋盘分割 23 | 汉诺塔 23 | STL 中的 PRIORITY_QUEUE 24 | 堆栈 24 | 区间最大频率 24 | 取第 K 个元素 25 | 归并排序逆序数 25 | 逆序数推排列数 25 | 二分查找 25 | 二分查找(大于等于 V 的第一个值) 25 | 所有数位相加 25 Number 数论 26 1 |递推欧拉函数 PHI(I) 26 |单独欧拉函数 PHI(X) 26 | GCD 最大公约数 26 | 快速 GCD 26 | 扩展 GCD 26 | 模线性方程 A * X = B (% N) 26 | 模线性方程组 26 | 筛素数 [1..N] 26 | 高效小范围素数 [1..N] 26 | 随机素数测试(伪素数原理) 26 | 组合数学相关 26 | POLYA 计数 27 | 组合数 C(N, R) 27 | 最大 1 矩阵 27 | 约瑟夫环问题(数学方法) 27 | 约瑟夫环问题(数组模拟) 27 | 取石子游戏 1 27 | 集合划分问题 27 | 大数平方根(字符串数组表示) 28 | 大数取模的二进制方法 28 | 线性方程组 A[][]X[]=B[] 28 | 追赶法解周期性方程 28 | 阶乘最后非零位,复杂度 O(NLOGN) 29 递归方法解排列组合问题 30 | 类循环排列 30 | 全排列 30 | 不重复排列 30 | 全组合 31 | 不重复组合 31 | 应用 31 模式串匹配问题总结 32 | 字符串 HASH 32 | KMP 匹配算法 O(M+N) 32 | KARP-RABIN 字符串匹配 32 | 基于 KARP-RABIN 的字符块匹配 32 | 函数名: STRSTR 32 | BM 算法的改进的算法 SUNDAY ALGORITHM 32 | 最短公共祖先(两个长字符串) 33 | 最短公共祖先(多个短字符串) 33 Geometry 计算几何 34 | GRAHAM 凸包 O(N * LOGN) 34 | 判断线段相交 34 | 多边形重心 34 | 三角形几个重要的点 34 | 平面最近点对 O(N * LOGN) 34 | LIUCTIC 的计算几何库 35 | 平面上两点之间的距离 35 | (P1-P0)*(P2-P0)的叉积 35 | 确定两条线段是否相交 35 | 判断点 P 是否在线段 L 上 35 | 判断两个点是否相等 35 | 线段相交判断函数 35 | 判断点 Q 是否在多边形内 35 | 计算多边形的面积 35 | 解二次方程 AX^2+BX+C=0 36 | 计算直线的一般式 AX+BY+C=0 36 | 点到直线距离 36 | 直线与圆的交点,已知直线与圆相交 36 | 点是否在射线的正向 36 | 射线与圆的第一个交点 36 | 点 P1 关于直线 LN 的对称点 P2 36 | 两直线夹角(弧度) 36 ACM/ICPC 竞赛之 STL 37 ACM/ICPC 竞赛之 STL 简介 37 ACM/ICPC 竞赛之 STL--PAIR 37 ACM/ICPC 竞赛之 STL--VECTOR 37 ACM/ICPC 竞赛之 STL--ITERATOR 简介 38 ACM/ICPC 竞赛之 STL--STRING 38 ACM/ICPC 竞赛之 STL--STACK/QUEUE 38 ACM/ICPC 竞赛之 STL--MAP 40 ACM/ICPC 竞赛之 STL--ALGORITHM 40 STL IN ACM 41 头文件 42 线段树 43 矩形并的面积(线段树+离散化+扫描线) 43 矩形并的周长(线段树+离散化+扫描线) 44

4,499

社区成员

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

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