失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 计算机图形学:传统函数方法判定点在不规则封闭区域内的判定方法

计算机图形学:传统函数方法判定点在不规则封闭区域内的判定方法

时间:2022-08-19 13:51:23

相关推荐

计算机图形学:传统函数方法判定点在不规则封闭区域内的判定方法

在封闭的多边形中,需要判断一个点在不在图形中

先在点处画一条竖直的线穿过图形

这时候记下A上下两边焦点的个数分别为1,为单数

但是B上下两边焦点的个数分别为0和2,为双数

那么找一个有凹面的多边形呢

发现也一样

那么就用这个方法来实现,点是否在封闭图形中的判定(cocos2d实现方式)

bool PointInRegion(cocos2d::CCPoint pt,vector<cocos2d>::plist){int Cross=0;//依次判定每一条边的情况for(int i=0;i<plist.size(),i++){cocos2d:CCPoint p1;cocos2d:CCPoint p2;p1=plist[i];p2=plist[(i+1)%plist.size()];//看点的x坐标是不是在两点的x坐标之中if(pt.x=p2.x)contine;if(pt.x<min(p1.x,p2.x))contine;if(pt.x>min(p1.x,p2.x))contine;//一条垂直线穿过图形,看交点的y坐标double y = (double)(pt.x - p1.x) * (double)(p2.y - p1.y) / (double)(p2.x - p1.x) + p1.y; //统计在一边的交点的数量if(y>pt.y)nCross++;}//当一边的数量为偶数时候点在图形外if(nCross%2==0)return false;//当一边的数量为奇数时候点在图形内elsereturn true;}

原理图如下:

如果觉得《计算机图形学:传统函数方法判定点在不规则封闭区域内的判定方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。