多边形 怎么计算当前点在 区域内 还是区域外
比如我在地图上  画一个      五角星 (  还可能是 不规则多边形, 有凹进, 也有凸出 ),在给一个点的 经纬度 ,怎么知道这个点在 五角星内 还是五角星外?

解决方案 »

  1.   

    有3种方法,楼上这种属于计算量最小的
    其他两种
    1,面积法。就是看所有边和目标点组成的三角形面积和是否等于总的多边形面积,如果相等,则在内部。反之在外部。这种方法计算量较大,用到的主要计算是查乘。
    2,夹角和法。判断所有边和目标点的夹角和是否为360度。计算量比上面这种方法稍微小点,用到主要是点乘和求模计算。
    参考http://hi.baidu.com/caokyo/item/972178891e879b57e73d19eb
      

  2.   

    本帖最后由 caozhy 于 2012-10-31 11:49:16 编辑
      

  3.   

    我猜ssp2009 想表达的是 在计算之前 我们是无法知道顶点是否在图形内 这一个条件吧
      

  4.   

    本帖最后由 caozhy 于 2012-10-31 12:18:23 编辑
      

  5.   


    对于闭合的图形,有n个点,(x0, y0) (x1, y1) (x2, y2) ... (xn, yn)
    那么点 (max(x0, x1, x2, ... xn) + 1, max(y0, y1, y2, ... yn) + 1) 必然在图形外。
      

  6.   

    例如图形是五角星  可以把五角星放在一个x y 坐标的平面图中  想通过循环统计出在这个图形是由多少个点组成,一个点了可以定义一个像素标准 例如(1,1) 让后再用for循环 查找你的点 是不是在这个统计的点里面,或者是范围 因为可能有小数。
      

  7.   

    Mark一记。。楼上的求∩。都知道~
      

  8.   

    一样成立你注意,中间这部分是多边形的外部。参考:http://zh.wikipedia.org/wiki/多边形#.E7.B0.A1.E5.96.AE.E5.A4.9A.E9.82.8A.E5.BD.A2
      

  9.   


    那这种算法 具体如何实现呢Chinajiyong 给出的连接中的给出的射线法实现方案说只支持简单多边形
      

  10.   

    本帖最后由 caozhy 于 2012-10-31 16:38:36 编辑