社区
C++ 语言
帖子详情
新手询问两个多边形相交的检测
beginera
2008-04-17 10:33:26
新手,想不出来啊,数学好烂,最好能给段关键代码,不要用API实现的。
搜了一下,好像都没有代码,都是理论,还是希望能看到理论和代码一起的东西啊,另外看到好像提到什么效率的问题,要先做box做检测,然后再检测多边形是么?不太懂,2D游戏学习新手,所以这第一关多边形检测就卡住了,请大家帮忙!
...全文
281
18
打赏
收藏
新手询问两个多边形相交的检测
新手,想不出来啊,数学好烂,最好能给段关键代码,不要用API实现的。 搜了一下,好像都没有代码,都是理论,还是希望能看到理论和代码一起的东西啊,另外看到好像提到什么效率的问题,要先做box做检测,然后再检测多边形是么?不太懂,2D游戏学习新手,所以这第一关多边形检测就卡住了,请大家帮忙!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kratos
2008-04-18
打赏
举报
回复
2d游戏没这么多检查吧,就是测矩形重叠状况,2L已经讲了。。
liveforme
2008-04-18
打赏
举报
回复
最简单就是判断点了,多边形每个点去判断下,要是不要求很高的效率的话,还是很实在的方法
Unknowm
2008-04-18
打赏
举报
回复
http://blog.csdn.net/Unknowm/archive/2006/05/08/713666.aspx
http://blog.csdn.net/Unknowm/archive/2006/05/14/728735.aspx
http://blog.csdn.net/Unknowm/archive/2006/05/15/740106.aspx
http://blog.csdn.net/Unknowm/archive/2006/05/18/743418.aspx
http://blog.csdn.net/Unknowm/archive/2006/05/23/752102.aspx
http://blog.csdn.net/Unknowm/archive/2006/06/04/773197.aspx
xbt746
2008-04-18
打赏
举报
回复
可以查一下地理信息算法
上面基本上都有
Dancing_Sea
2008-04-18
打赏
举报
回复
检测两组线是否相交。
平面线段相交就可以。
不必要判断凹凸性
ryfdizuo
2008-04-17
打赏
举报
回复
可以去Google一下:AABB2
判断多边形的凹凸性,
凹的还要分解,
andy_cai
2008-04-17
打赏
举报
回复
噢,我的方法居然也有人说
我是临时想到了...
帮你想想也是蛮费脑的呢
编写能用的代码的话要考虑各种情况,太烦
beginera
2008-04-17
打赏
举报
回复
6楼,您说的那个我有代码,也是做法线的,不过是鸟语的,不能完全看懂,其实根本原因是我数学有点烂...所以才发的这贴希望有人能理论和代码都讲一下。
7楼,您说的那个是点包含在多边形内吧?这个我也有代码,不过我想要的是两个多边形的判断,如果是多边形各点已经,比如五边形就要算和另一个多边形进行5次判断么?
beginera
2008-04-17
打赏
举报
回复
啊,另外二楼说的是rect是矩形吧,我想要多边形的,矩形的那个我理解,也有代码了。
beginera
2008-04-17
打赏
举报
回复
谢谢,我去搜搜计算几何一书,忘了说了,这个多边形就是突多边形就行。谢谢回复,我试试先。
haohaisen
2008-04-17
打赏
举报
回复
同意2楼,有空可看看《计算几何》——周培德
tgh621
2008-04-17
打赏
举报
回复
直接判断相互判断一个多边行的关键点是否在另一个多变兴中赛
andy_cai
2008-04-17
打赏
举报
回复
题目好大,多边形有各种方式的
个人觉得从相交点处理比较好,顺时针或者逆时针方向处理
从点出发顺着各自边走,判断各自边的法向分量(总结下规律)判断是不是重叠区域
如果多边形都未知的话,那就要先找出多边形的各点坐标了
有理论就已经很不错,有源代码估计大家也不会去怎么理睬理论
oo
2008-04-17
打赏
举报
回复
晕,想简单了
我说的是特例
tsst
2008-04-17
打赏
举报
回复
晕,楼上OO说的我怎么看不明白
tsst
2008-04-17
打赏
举报
回复
除去一些特殊情况的抽离外,基本的方法都是判断边与另一个多边形的关系了!
这样问题就转化为edge和poly的关系了嘿嘿!
具体实现有空探讨一下了,嘿!
oo
2008-04-17
打赏
举报
回复
更正一下,如果都为0,则相交于一个点。
oo
2008-04-17
打赏
举报
回复
left为两个rect最大的
right为两个rect最小的
top为两个rect最大的
bottom为两个rect最小的
width为right-left
height为bottom-top
如果width和height都为正则相交,如果一个为0,另一个为正则一条边重合,如果有负数则不相交
都为0?除非原来的不是rect
一种实用性较强的求IOU的算法(任意
多边形
之间的IOU)
PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 环境说明 无 前言 提到IOU,如果接触过目标
检测
,应该是很熟悉的,这个东西简直就是标配了。但是我之前见到的求IOU都是求
两个
矩形的IOU,由于矩形的特殊性,其IOU可以很简单的求。 突然有一天,我要求一个矩形和一个
多边形
的IOU,这就让我突然有点懵,参考原来求
两个
矩形的IOU方式,完全无解。经过了
询问
大佬以及网上冲浪后,在某不起眼的地方发现了一个思路,一个匿名网友貌.
69、计算几何中的点定位、
相交
检测
与装箱问题
本文深入探讨了计算几何中的三个核心问题:点定位、
相交
检测
与装箱问题。点定位关注查询点所在区域的快速判定,涵盖射线法、平板法及基于三角剖分的方法,并讨论了多维场景下的kd-tree和行走策略;
相交
检测
分析线段或
多边形
之间的交集判断,重点介绍平面扫描线算法及其在虚拟现实、CAD中的应用;装箱问题研究如何用最少箱子容纳所有物品,详述首次适应递减等启发式算法及实际约束处理。文章还总结了各问题的关键算法复杂度、影响因素、实现工具与典型应用场景,为相关领域的算法选择与优化提供指导。
点是否在
多边形
中(数学知识)
思路:判断点p是否在
多边形
中,随机取一个足够远的点p1,以点p为起始点,p1为终点,作射线L,由于
多边形
是有界的,所以射线L的终点一定在
多边形
外,很容易看出当L和
多边形
的交点数目count为奇数时,p在
多边形
内;count为偶数时,p在
多边形
外。 但是有些特殊情况需要处理: 1)p在
多边形
边上; 2)射线与
多边形
的顶点
相交
,将影响count的统计,为避免这种情况,这里 代码
BSP树的简单理解和二叉树空间索引思路的详解
BSP树的简单理解和二叉树空间索引思路的详解
ZOJ1081:Points Within——题解
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1081 题目大意:给定一个点数为 n 的
多边形
,点按照顺序给出,再给出 m 个点,
询问
每个点是否在
多边形
内。 —————————————————————————————— 计算几何开荒期,所以都算是板子吧……既然是板子那么题解自然也都是集网上之大成。 所以以后也就不多...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章