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

怎么判断一个点是否在多边形区域内最好办法不要太复杂因为要写成代码... 怎么判断一个点是否在多边形区域内
最好办法不要太复杂因为要写成代码
展开
 我来答
汤林雄
2013-11-29
知道答主
回答量:20
采纳率:0%
帮助的人:15.2万
展开全部

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

先假设需要判断的点为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;//保存值

 

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

建议:

  1. 尽量不要使用迭代

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

 

还有个简单的方法:

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

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

 

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

 

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式