怎么判断一个点是不是在多边形区域内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么判断一个点是不是在多边形区域内相关的知识,希望对你有一定的参考价值。

怎么判断一个点是否在多边形区域内
最好办法不要太复杂因为要写成代码

参考技术A

这个问题有点复杂啊。。。想了一会才有答案。不过也还有点复杂。

先假设需要判断的点为px

首先,思路是这样的。你先在多变形polygon中选取一个点pa,然后,连接pa和px,并且以px为顶点做一条足够长的射线段line。如果px在多边形内,line只会穿过一次polygon的边。如果px在多边形外边,则会穿过两次polygon的边。好,这就是我们判断的依据了。

 

在说说实现思路方面。

首先,我是这样想的,让画板中所有的点都拥有一个值。

多边形的边上的点的值为-1,其余的都为1.

这样,我们的射线段上所有点值的积如果为-1,在line穿过一次polygon,则px在polygon内部。

积值为1则line穿过两次polygon,px在polygon外部。

 

 

代码方面。

你可能需要这样的一个类

class PointExt

POINT pt;//保存点值

int  value;//保存值

 

这个程序的计算量可能会有点大。

建议:

    尽量不要使用迭代

    如果你能相处更好的办法来保存点值,就更好了。

 

还有个简单的方法:

你在画图的时候,就让polygon边上的点值为0,多边形内部的点值为1,外部的点值为-1.

那么通过,你那个点就可以直接查看px的点值,就知道了。

 

但这个方法较为复杂的是初始化,当多边形较为简单的时候还好,当多边形比较复杂的时候,初始化点值就是个比较麻烦的事情了。。。

 

不过好像windows有一些这样的api函数,不过我还没用过。。。

以上是关于怎么判断一个点是不是在多边形区域内的主要内容,如果未能解决你的问题,请参考以下文章

如何判断一个指定的经纬度点是不是落在一个多边形区域内

在百度地图上手绘了一个多边形,随便用鼠标点击地图获取改点坐标,并判断是不是属于在手绘的多边形内

如何判断点在一个区域内?用户绘制区域(射线法)判断点在多边形区域,报警区域

如何判断点在一个区域内?用户绘制区域(射线法)判断点在多边形区域,报警区域

判断点是否在多边形内

opencv如何读取多边形区域内的像素值?