社区
新手乐园
帖子详情
如何判断一个点在那个四边形内?
hellolegend
2008-05-28 09:00:15
一个平面由很多个小四边形组成,知道每个小四边形的4个顶点坐标
另外有一个点,知道其坐标,如何判断他在那个四边形内部?
因为要频繁的判断,所以计算的速度最好快一点。
...全文
1170
17
打赏
收藏
如何判断一个点在那个四边形内?
一个平面由很多个小四边形组成,知道每个小四边形的4个顶点坐标 另外有一个点,知道其坐标,如何判断他在那个四边形内部? 因为要频繁的判断,所以计算的速度最好快一点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jj8113414
2009-06-22
打赏
举报
回复
楼上的,如果按你的办法的话计算量很大的哦,有没有更好的办法呢
kuotiansky
2009-03-02
打赏
举报
回复
判断点P是否在多边形中是计算几何中一个非常基本但是十分重要的算法。以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。
csxrzeng
2008-12-30
打赏
举报
回复
凸四边形好办,
hellolegend
2008-05-29
打赏
举报
回复
to mwx285
是
“哪个”
mwx285
2008-05-29
打赏
举报
回复
“如何判断他在
那个
四边形内部?”
是"
哪个
"吗??
是要求取他所在四边形的话,直接计算
zyb_debug
2008-05-29
打赏
举报
回复
BOOL PtInRect(
CONST RECT *lprc, // rectangle
POINT pt // point
);
搂主MSDN一下这个函数
微软提供 能不自己写就不自己写 自己写的效率不高 除非你想研究算法 提高技术
zhangbin_115
2008-05-29
打赏
举报
回复
复杂
zwspider
2008-05-29
打赏
举报
回复
前提: 凸四边形
顺时针方向,设点为p0, p1, p2, p3
而点和向量的关系只有3种,点在向量左侧, 点在向量右侧, 点在向量所在直线上
问题转化为,判断点px在向量p0p1, p1p2, p2p3, p3p4的左侧或直线上。
现在要解决的问题是:如何判断点在向量左侧或直线上。(下面以p0p1为例)
1.求p0p1的法向量v,(可知方向是垂直p0p1指向四边形的外面)
2.求v和向量p0px的夹角,锐角表示px在p0p1的右侧,钝角表示在左侧, 直角就不必说了
问题解决~~~
hellolegend
2008-05-29
打赏
举报
回复
都是凸四边形
假设从p0点出发,顺时针方向,点的顺序可能是p0-> p1 -> p2 -> p3 -> p0,也有可能是p0 -> p2 -> p1 -> p3 -> p0
xiao_dang
2008-05-29
打赏
举报
回复
我想最简单的办法应该是:
对任意的一边,四边形的余下两个点位于这个点(相对于那条边)的同一侧,则点在四边形内部。
hellolegend
2008-05-29
打赏
举报
回复
准备用该点和4条边(每条边2个点)来判断,这样比较简单
qmm161
2008-05-29
打赏
举报
回复
考虑不规则四边形的情形,似乎比较复杂!
mark
fallening
2008-05-29
打赏
举报
回复
[Quote=引用 9 楼 zwspider 的回复:]
前提: 凸四边形
顺时针方向,设点为p0, p1, p2, p3
而点和向量的关系只有3种,点在向量左侧, 点在向量右侧, 点在向量所在直线上
问题转化为,判断点px在向量p0p1, p1p2, p2p3, p3p4的左侧或直线上。
现在要解决的问题是:如何判断点在向量左侧或直线上。(下面以p0p1为例)
1.求p0p1的法向量v,(可知方向是垂直p0p1指向四边形的外面)
2.求v和向量p0px的夹角,锐角表示px在p0p1的右侧,钝角表示在左侧, 直角…
[/Quote]
呵呵,这样的话,还不如通过四个小三角形面积与四边形面积的判断来得快
hellolegend
2008-05-28
打赏
举报
回复
to fallening
如果已知一个四边形和一个点可以这么判断
这样做的话,要将该点附近的所有四边形都判断一遍的
fallening
2008-05-28
打赏
举报
回复
[Quote=引用楼主 hellolegend 的帖子:]
一个平面由很多个小四边形组成,知道每个小四边形的4个顶点坐标
另外有一个点,知道其坐标,如何判断他在那个四边形内部?
因为要频繁的判断,所以计算的速度最好快一点。
[/Quote]
用余弦公式判断这个点与四条边的构成的三角形的角度,如果这四个角度相加是2PI,那么就是在里边,否则是在外边
比较慢的做法,让我再想想
fallening
2008-05-28
打赏
举报
回复
[Quote=引用 1 楼 k2eats 的回复:]
直接比较点的坐标和四边形的右上顶点和左下顶点坐标即可。
点的坐标应该分别小于四边形的右上顶点
点的坐标应该分别大于四边形的左下顶点
[/Quote]
这个有问题
K行天下
2008-05-28
打赏
举报
回复
直接比较点的坐标和四边形的右上顶点和左下顶点坐标即可。
点的坐标应该分别小于四边形的右上顶点
点的坐标应该分别大于四边形的左下顶点
判断
点在
四边形
内,内有main函数,可直接测试
判断
点在
四边形
内,内有main函数,可直接测试
判断
质点在
四边形
之内
在做图像处理的时候,有时候要求
判断
某兴趣点是不是中某
四边形
之内,这个小程序提供了一个算法。输入是
四边形
的四个顶点a[4]和兴趣点fi;如果返回值是true表示fi在a[4],否则不在
四边形
之内。
判断
质点在凸
四边形
之内
常会遇到
判断
一个质点是不是在
四边形
之内的问题。这是一个小方法,供参考。
计算坐标点是否在不规则
四边形
内-易语言
思路是,计算坐标点到四条边的对角的角度,然后4个角度大于等于360度就是在矩形内。 用到的知识点:计算两个坐标点之间的距离和计算三角形的对角角度 虽然数学差,但这并不阻碍我百度到对应的公式。。。
基于opencv 的
四边形
轮廓跟踪
跟踪图像中的
四边形
轮廓,并且标记出来。跟踪图像中的
四边形
轮廓,并且标记出来。
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章