社区
数据结构与算法
帖子详情
判断一个点是否落在一个图形内
dreamseekers
2000-05-03 05:21:00
假如有一个不太规则的图形(该图形的边缘的点能知道),我用鼠标点击一下,我该如何
去得知该点中的点是在图形内还是在图形外?
...全文
1094
18
打赏
收藏
判断一个点是否落在一个图形内
假如有一个不太规则的图形(该图形的边缘的点能知道),我用鼠标点击一下,我该如何 去得知该点中的点是在图形内还是在图形外?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
prefix
2000-08-08
打赏
举报
回复
我看你要先得到该点的x,y,然后在x,y上查找你已知那个不规则图形的点看看有没有一个点的x大于(或小于,看你的x,y方向如何定义)该点的x,另一个点(或还是上一个点都行)的y大于该点的y(或小于,看你的x,y方向如何定义)就可以知道了
trivita
2000-07-10
打赏
举报
回复
前面的算法都很对,
我只是想说如果你是写游戏,
不是必须精确判断的,可以用简单图形近似该区域。
但如果你是作图象处理,那就不得不采用前面的算法了
Bobby
2000-06-21
打赏
举报
回复
我还有个方法,原理大同小异,对凸多边形特别快,对凹多边形无效。以三角形为例:
v1,v2,v3,三个顶点
算出直线 v1,v2 为 Ax+By+C=0; 得到函数f(x,y)=Ax+By+C
v2,v3为 Ex+Fy+G=0; 得到函数f(x,y)=Ex+Fy+C
v3,v1为 Hx+Iy+J=0; 得到函数f(x,y)=Hx+Iy+J
注意f(x,y)=Ax+By+C 和 f(x,y)=-Ax-By-C是不同的函数,虽然他们对应的直线方程相同,符号取值要看两顶点的先后顺序,也就是说求三个直线函数时取点要按同一方向(顺时针或逆时针),琢磨一下就能解决。
把待测点代入三个函数,若任一结果为零,或三值同号,则测点在多边型内部。
bobby
netkid
2000-06-19
打赏
举报
回复
若是椭圆(知道其外接矩形)又如何判断?
geofee
2000-06-19
打赏
举报
回复
如果你需要判断的图形目标很少,你可以采用Window 的 Region 来判断。
但是如果你需要判断的图形目标很多,Region判断就会很慢,且浪费内存。
一般采用垂线法,在垂线法中要注意处理垂线恰好通过区域顶点的情况。另外
是角度法,即判断从点到顶点的角度和是否为360度。两者均可。
算法的快慢在于交叉计算的量,以及角度的计算方法。
在进行判断前先因该进行区域最外围矩形包含判断。这样省去许多没有必要的计算。
ad
2000-06-14
打赏
举报
回复
我的程序中恰好有这样的算法,我是这样做的:
1、要判断的区域是一个封闭多边形,凹多边形也可以;
2、计算多边形的正规外接矩形;
3、若点在矩形外,肯定不在多边型内,判断结束;
4、从点向矩形任一顶点作射线,求该射线与多边形所有边的相交情况,焦点是多边形顶点时要考虑顶点关联的两条边与射线的关系:在射线同侧不认为相交,在射线两侧认为相交;
5、有奇数个焦点则点落在多边形内,否则在多边形外。
sxldl
2000-05-31
打赏
举报
回复
使用Windows API吧
YYboy
2000-05-26
打赏
举报
回复
计算多边形的最大尺寸范围m*n, 以该点为起点引出一长度为2*max(m, n) 的线段
计算该线段与多边形的交点总数(注意, 必须处理线段刚好通过该多边形端点和
与多边形一边重叠情况, 如当线段刚好通过该多边形端点时, 如果相邻两端点在
线段异侧, 记交点数为1, 同侧则记交点数为0或2, 最后计算总交点数, 如果为奇数,
则点在多边形内. 注意, 线段的延伸方向应进行优化以提高效率和精确度. 该算法
精确度极高, 效率也不错, 已成功运用与CAD
mjyf
2000-05-26
打赏
举报
回复
YYboy是对的
茂奇软件
2000-05-25
打赏
举报
回复
Make a polygon rgn by CreatePolygonRgn.
test it by PtInRegion
mjyf
2000-05-24
打赏
举报
回复
从该点引向任意方向引一条射线,求出该射线同不规则闭合图形边缘交点数,偶数在图形外,奇数在图形内.
x86
2000-05-24
打赏
举报
回复
计算机图形学中就有好几个算法,大学学过的,不过忘了
找本书看看吧
zroc
2000-05-19
打赏
举报
回复
99年某一期《电脑爱好着》《请你编程》里有一题是求一个点是否在一个多边形内,原理与回复人 jll 的第二种方法的原理一样。里面有原理、方法和具体实现的C代码。如果你找不到,可以与我联系(zroc@163.net)。
还有一种方法,有点类似回复人 zoulijun 的方法,但却是用矢量原理:一个闭合多边形所有边按同一方向(顺时针或逆时针)的矢量和为零。实现方法是:先求出待求点与多边形 n 个顶点的按顺序的矢量(顺时针或逆时针)s0、s1、s2 ---- s(n-1),如果表达式(s1-s0)+(s2-s1)+(s3-s2)+ ---- +(s(n-1)-s(n-2))+(s0-s(n-1)) 的值为零,说明点在多边形内。
两种方法判断速度都非常快,足以满足游戏对速度的需求,老兄要用更不因该有问题。
zroc
2000-05-19
打赏
举报
回复
99年某一期《电脑爱好着》《请你编程》里有一题是求一个点是否在一个多边形内,原理与回复人 jll 的第二种方法的原理一样。里面有原理、方法和具体实现的C代码。如果你找不到,可以与我联系(zroc@163.net)。
还有一种方法,有点类似回复人 zoulijun 的方法,但却是用矢量原理:一个闭合多边形所有边按同一方向(顺时针或逆时针)的矢量和为零。实现方法是:先求出待求点与多边形 n 个顶点的按顺序的矢量(顺时针或逆时针)s0、s1、s2 ---- s(n-1),如果表达式(s1-s0)+(s2-s1)+(s3-s2)+ ---- +(s(n-1)-s(n-2))+(s0-s(n-1)) 的值为零,说明点在多边形内。
两种方法判断速度都非常快,足以满足游戏对速度的需求,老兄要用更不因该有问题。
always
2000-05-17
打赏
举报
回复
If you can use api,then you can create a region with the edge points,
then you use PtInRgn to justify the point is in or out.
LD
2000-05-13
打赏
举报
回复
非凸多边形有办法吗?
小弟的凸多边形被大卸八块后已经惨不忍睹了。
zoulijun
2000-05-10
打赏
举报
回复
如果外边用多边形近似的话, 刚可用:
将此点与多边形的各顶点连线, 然后求和线12, 23, 34, ..., n1夹角.
若和为360度, 则点在多边形内. 若为0 , 则在多边形外.
jll
2000-05-03
打赏
举报
回复
判断该鼠标点击处的点的颜色是否和图形外一致,如果一致就在图形外,否则就在图形内。
如果图形内外颜色是一致的,就必须用图形学中的方法了!
从该点画两条直线,互相垂直,如果从该点向四个方向(上下左右)的直线与图形的边缘有奇数个(通常是1个)焦点就说明该点在图形内,否则就在图形外……
判断
一个
点
是否
在不规则
图形
中
本文转自https://www.cnblogs.com/anningwang/p/7581545.html(转载只为保存方方便之后查看)
判断
一个
点
是否
在多边形内部 - 射线法思路 比如说,我就随便涂了
一个
多边形和
一个
点
,现在我要给出一种通用的方法来
判断
这个点是不是在多边形内部(别告诉我用肉眼观察……)。 首先想到的
一个
解法是从这个点做一条射线,计算它跟多边形边界的交点个数,如果交点个数为奇数,...
Android
判断
一个
点
是否
在封闭的Path内或不规则的
图形
内
最近在写画板程序,要
判断
一个
点
在
一个
闭合的path内或者是
一个
不规则的
图形
内,这个可不好解决网上查了一堆有算法云云的,直到看到
一个
大神的帖子 其实可以相当的简单几句话的是 核心代码: //------关键部分
判断
点
是否
在
一个
闭合的path内--------// if(event.getAction()==MotionEvent.ACTION_DOWN){
【算法】
判断
点
是否
在平面
图形
内!
判断
点
是否
在某平面
图形
内
判断
某个点
是否
在不规则
图形
内
输入:一些点的坐标;
一个
测试点 输出:
是否
在多边形内部 思路: (1)面积和判别法:
判断
目标点与多边形的每条边组成的三角形面积和
是否
等于该多边形,相等则在多边形内部。 (2)夹角和判别法:
判断
目标点与所有边的夹角和
是否
为360度,为360度则在多边形内部。 (3)引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明...
判断
一个
点
是否
在
一个
不规则
图形
内
项目中遇到的问题,这里粘贴老总写的方法.学习一下...以备以后遇到时使用. package com.vanda.economic.common.utils; import java.util.List; public class SpatialRelationUtil { private SpatialRelationUtil() {} public static cla...
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章