社区
数据结构与算法
帖子详情
如何判断一个点是否在一个不保证为凸的多边形内呢??
nandizhu
2009-10-01 05:08:17
如题。。。。。。
...全文
458
15
打赏
收藏
如何判断一个点是否在一个不保证为凸的多边形内呢??
如题。。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chj_2003
2009-10-02
打赏
举报
回复
如果我们计算出这个非凸多边形的面积,那么问题更容易求解。
我们可以计算这个点与非凸多边形的任意两个顶点所围成的三角形面积之和。如果这个面积等于非凸多边形面积,则这一点在多边形内部。如果大于,则属于多边形外部。(很容易证明)
gamedragon
2009-10-02
打赏
举报
回复
[Quote=引用 7 楼 arong1234 的回复:]
无论什么多边形,分割很容易啊?
以邻接三点为一组,可以构成三角形,这样(1,2,3), (3,4,5),(5,6,7)...分别构成三角形
这些三角形去了以后,内部又是一个多边形,采用上述方法再抽取三角形。
而下一次多边形的顶点数等于上一次多边形顶点数减去这一轮已经去掉的三角形的个数,因此这个算法是收敛的。
[/Quote]
一个“凹”字形就是个反例了。邻接三点构成的三角形,不一定就位于多边形内部。
最简单就是扫描线算法,也就是4楼5楼说的算法,跟顶点相交是作为一种特殊情况处理。
arong1234
2009-10-02
打赏
举报
回复
你说的对,我方法是错误的
[Quote=引用 12 楼 chj_2003 的回复:]
引用 2 楼 arong1234 的回复:
多边形首先分割成三角形,然后用这些三角形判断是否在内部
凸多边形可以这样解决,非凸多边形就未必了。因为在多边形的凹口的顶点和邻近两个顶点的三角形是在多边形外部的。所以,这个点既是在三角形内部,也不能说明在多边形内部。
方法1:先对非凸多边形进行补形,使之成为凸多边形,然后进行判断。如果在凸多边形外部,则一定非凸多边形外部。如果在凸多边形内部,再判断这个点是否在所补的这个图形内部,如果是,则表示这个点在非凸多边形外部,如果不是,则在内部。
这样,可以将这个问题转化成多个“ 判断一个点是否在一个凸多边形内??”的问题。
方法2:先判断非凸多边形的凹点是否相邻或唯一。如果凹点相邻或者唯一,则将凹点与任意一个不相邻的顶点连接,将非凸多边形转换成两个凸多边形。如果凹点不唯一且不相邻,则所有的邻近的凹点连接,构成一个新的多变形,和多个三角形。如果新的多变心仍然是非凸多边形,则重复上述步骤,直到新的多边形为凸多边形。这样,也可以将这个问题转化成多个“ 判断一个点是否在一个凸多边形内??”的问题。
[/Quote]
zeroieme
2009-10-02
打赏
举报
回复
奇偶性
wenzheng38
2009-10-02
打赏
举报
回复
题目都说是凸多边形了
用该点顺序链接多边形的定点,组成多个三角形
用面积公式判断,所有三角形面积之和大于凸多边形面积之和,说明该点在凸多边形外
否则就在凸多边形上或者里面
ACgirl
2009-10-02
打赏
举报
回复
你的所谓拆分三角形的办法不但编写复杂并且效率还低,还要向量叉乘判方向
ACgirl
2009-10-02
打赏
举报
回复
那个是特殊情况,不是极端情况,不是反例,谢谢
chj_2003
2009-10-02
打赏
举报
回复
[Quote=引用 2 楼 arong1234 的回复:]
多边形首先分割成三角形,然后用这些三角形判断是否在内部
[/Quote]
凸多边形可以这样解决,非凸多边形就未必了。因为在多边形的凹口的顶点和邻近两个顶点的三角形是在多边形外部的。所以,这个点既是在三角形内部,也不能说明在多边形内部。
方法1:先对非凸多边形进行补形,使之成为凸多边形,然后进行判断。如果在凸多边形外部,则一定非凸多边形外部。如果在凸多边形内部,再判断这个点是否在所补的这个图形内部,如果是,则表示这个点在非凸多边形外部,如果不是,则在内部。
这样,可以将这个问题转化成多个“ 判断一个点是否在一个凸多边形内??”的问题。
方法2:先判断非凸多边形的凹点是否相邻或唯一。如果凹点相邻或者唯一,则将凹点与任意一个不相邻的顶点连接,将非凸多边形转换成两个凸多边形。如果凹点不唯一且不相邻,则所有的邻近的凹点连接,构成一个新的多变形,和多个三角形。如果新的多变心仍然是非凸多边形,则重复上述步骤,直到新的多边形为凸多边形。这样,也可以将这个问题转化成多个“ 判断一个点是否在一个凸多边形内??”的问题。
arong1234
2009-10-01
打赏
举报
回复
无论什么多边形,分割很容易啊?
以邻接三点为一组,可以构成三角形,这样(1,2,3), (3,4,5),(5,6,7)...分别构成三角形
这些三角形去了以后,内部又是一个多边形,采用上述方法再抽取三角形。
而下一次多边形的顶点数等于上一次多边形顶点数减去这一轮已经去掉的三角形的个数,因此这个算法是收敛的。
[Quote=引用 3 楼 gamedragon 的回复:]
引用 2 楼 arong1234 的回复:
多边形首先分割成三角形,然后用这些三角形判断是否在内部
那还要先解决非凸多边形分割问题。
[/Quote]
arong1234
2009-10-01
打赏
举报
回复
一个极端的情况:射线交于几个边以后交于一个顶点,这就错了
[Quote=引用 5 楼 acgirl 的回复:]
完全没必要搞这么复杂!!
只要以那个点向X方向做一条射线,看这条射线和那个多边形的边有多少个交点,奇数个则在里面,偶数个则在外面
[/Quote]
ACgirl
2009-10-01
打赏
举报
回复
完全没必要搞这么复杂!!
只要以那个点向X方向做一条射线,看这条射线和那个多边形的边有多少个交点,奇数个则在里面,偶数个则在外面
butwang
2009-10-01
打赏
举报
回复
以闭合直线多边形内一点为坐标原点,则x,y轴和多边形交点数都为偶(在一般情况下,),不考虑边,边的交点的情况。
gamedragon
2009-10-01
打赏
举报
回复
[Quote=引用 2 楼 arong1234 的回复:]
多边形首先分割成三角形,然后用这些三角形判断是否在内部
[/Quote]
那还要先解决非凸多边形分割问题。
arong1234
2009-10-01
打赏
举报
回复
多边形首先分割成三角形,然后用这些三角形判断是否在内部
gamedragon
2009-10-01
打赏
举报
回复
扫描线算法
凸
多边形
的三角剖分
在这个问题中,我们关注的是如何在
一个
具有n个顶点的
凸
多边形
内找到一种剖分方式,将
多边形
分割成(n-2)个三角形,同时使得所有分割弦(即连接非相邻顶点的线段)的总长度达到最小。这种剖分被称为最优三角剖分。 ...
opencv 随机
凸
多边形
构建源代码
在几何学中,
凸
多边形
是
一个
多边形
,其中任意两点之间的线段完全位于
多边形
内部或边界上。在OpenCV中,我们可以使用点集来表示
多边形
,并通过一系列的点连接形成封闭的图形。 创建随机
凸
多边形
通常涉及以下几个步骤...
一种简单的
凸
多边形
三角形网格生成
Delaunay三角剖分是一种特殊的三角网划分方式,它
保证
了任意
一个
三角形的内切圆不包含其他顶点。这个特性使得Delaunay三角网在视觉上更均匀,且在数学和工程应用中具有很多优点,如避免细长或尖锐的三角形,这在物理...
射线法
判断
点在
多边形
内[可运行源码]
射线法是一种直观且易于理解的算法,通过从点出发沿
一个
方向发射射线,并计算这条射线与
多边形
各边的交点数量来
判断
点
是否
在
多边形
内。在射线法中,如果交点的数量是奇数,那么点在
多边形
内部;如果交点数量是偶数,...
【在
凸
多边形
的图像中查找顶点】估计具有已知顶点数的像素化
凸
多边形
角点研究附Matlab代码.rar
本研究通过Matlab平台实现了
一个
有效的
凸
多边形
顶点查找算法,并通过参数化编程、清晰的代码结构和详细的注释,为广大学生和研究人员提供了
一个
实用的实践工具。该研究的代码和数据对于计算机视觉和图像处理的教育和...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章