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

来源:互联网 发布:做网站java还是php 编辑:程序博客网 时间:2024/06/16 23:57

题目链接在这儿

大致意思就是输入一些坐标值均为int的点,且前一个与后一个相连, 最后一个点与第一个相连.这些点组成了一个凸多边形.
然后给一个查询点, 让我们判断该点在这个多边形的 边界上,内部 还是外部

  1. 首先判断testPoint是否在边界上 是很简单的,只需要对多边形的每一条进行判断,或者判断testPoint 到每条边的距离,如果有至少一条为0, 则在边界
  2. 如果不在边界 上, 那就需要判断是在外部还是内部. 对于这种情况的判断稍微难一些,采用的是topcoder上的tutorial里的算法,算法分析如下:
    • 如果从一个多边形内部选取一个点向外做一条射线, 那么该射线与所有边的交点个数之和一定为奇数,不然该点就在多边形外部
    • 还有实现的细节, 就是一条射线应该如何确定及表示呢? 算法中采用的是一种所谓dirty的方法,那就是选取无穷远处一点,用random*1000 来近似得到,然后代入进行运算
0 0
原创粉丝点击