平面中有两个区域A、B,区域A、B边界都是以很多点(数目庞大,约七八百个;每个点坐标已知)连成的闭合折线段,没有边界曲线的方程,所有点坐标知道。折线连线方式明确,不会出现几种边界情况。边界折线段形状任意,可能凸出来也可能凹进去。(B凹进去的地方可能大体上包含A,但B区域又不包含A等等有好几种复杂情况)
   请教高手一个数学方法,怎么判断A区域在B区域里面还是外面(不考虑A、B区域相切或相割)。即B区域包含还是不包含A。

解决方案 »

  1.   

    public void polyContains() {
        int[][] a_points = ....;
        int[][] b_points = ....;
        Polygon A = new Polygon();
        for(int i = 0; i < a_points.length; ++i)
          A.addPoint(a_points[i][0],a_points[i][1]);
        for(int i = 0; i < b_points.length; ++i)
          System.out.print(A.contains(b_points[i][0],a_points[i][1]));
      }
    // You can get detail algorithm in java source.
      

  2.   

    Sorry:
       System.out.print(A.contains(b_points[i][0],a_points[i][1]));
    ====>
       System.out.print(A.contains(b_points[i][0],b_points[i][1]));:-)