
这个问题有点复杂啊。。。想了一会才有答案。不过也还有点复杂。
先假设需要判断的点为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的边上的问题!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)