2010-11-18 9 views
-3

最初にいくつかの点(x、y)を取得したコードを書いた後、これらの点で可能なすべての三角形をチェックし、特定の点が三角形であることを確認しますそうではありません(確定して)しかし、私は外部のポイントと内部points.itを見つけるコードのこの部分に問題があります。三角形以外の点を格納しています

public void externalPoints(List<Point> pointList) { 
// this method will check that a point is in a (n-1)(n-2)(n-3)/6 triangles or not 
    int n = pointList.size(); 
    if (n <= 2) { 
     System.out.println("null"); 
    } else if (n == 3) { 
     drawingLine(); 
    } else { 

     for (int i = 0; i < n; i++) { 
      for (int j = 1; j < n; j++) { 
       for (int k = 2; k < n; k++) { 
        for (int m = 3; m < n; m++) { 
         if (isPointInTriangle(pointList.get(i), pointList.get(j), pointList.get(k), pointList.get(m)) == true) { 
          System.out.println("is in the triangle"); 
          break; 
         } else { 
          System.out.println("is not in a triangle"); 
          newList.add(pointList.get(i)); 



         } 
        } 
       } 

      } 

     } 


    } 

} 

またisInTriangle方法は、このサイトのようなものです:それはうまく機能しない理由link text

答えて

1

あなたは説明できますか?

ポイントを反復する方法は少しばかげているようです。たとえば、n == 5の場合、プログラムはi = j = k = m = 4のisPointInTriangleを評価します。つまり、点4が頂点4,4,4から形成された三角形の内側にあるかどうかを調べようとしています。あなたのリンクで最初のメソッドを使用している場合は、あなたが与えたシェイプは実際には三角形ではありませんが、isPointInTriangle(4,4,4,4)はtrueを返します...おそらくあなたの頂点明確な点です。

関連する問題