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

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

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

先假设需要判断的点为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函数,不过我还没用过。。。

这个没有快捷键的貌似在nurbs建模按下c键可以……吸附到曲线(按下/释放) C 要想c键吸附到曲线:先把鼠标点放到曲线上然后按下c键,如果先按再放是不行滴。

以上就是关于怎么判断一个点是否在多边形区域内全部的内容,包括:怎么判断一个点是否在多边形区域内、MAYA请教点吸附到polygon的边上的问题!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9612149.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存