您的位置:首页 > 运维架构

ACM-计算几何 #Topcoder #SRM187-DIV2 PointInPolygon

2015-05-24 08:44 337 查看
题目链接在这儿

大致意思就是输入一些坐标值均为int的点,且前一个与后一个相连, 最后一个点与第一个相连.这些点组成了一个凸多边形.

然后给一个查询点, 让我们判断该点在这个多边形的
边界上
,
内部
还是
外部


首先判断
testPoint
是否在
边界上
是很简单的,只需要对多边形的每一条进行判断,或者判断
testPoint
到每条边的距离,如果有至少一条为0, 则在
边界


如果不在
边界
上, 那就需要判断是在外部还是内部. 对于这种情况的判断稍微难一些,采用的是topcoder上的tutorial里的算法,算法分析如下:

如果从一个多边形内部选取一个点向外做一条射线, 那么该射线与所有边的交点个数之和一定为
奇数
,不然该点就在多边形外部

还有实现的细节, 就是一条射线应该如何确定及表示呢? 算法中采用的是一种所谓dirty的方法,那就是选取无穷远处一点,用random*1000 来近似得到,然后代入进行运算
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息