存储那些不是三角形的点

时间:2010-11-18 04:42:47

标签: java geometry

我已经编写了一个代码,首先得到一些点(有x,y),然后我会用这些点检查所有可能的三角形,我会检查特定点是否在三角形中(有确定)但是我这部分代码有问题,找到了外部点和内部点。它不能正常工作。请帮助我谢谢。

    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 个答案:

答案 0 :(得分:1)

你能解释为什么效果不好吗?

似乎你的迭代点的方法有点狡猾。例如,如果n == 5,你的程序将评估isPointInTriangle为i = j = k = m = 4,这意味着它试图弄清楚Point 4是否在由顶点4,4,4形成的三角形内。如果你在你的链接中使用第一个方法,isPointInTriangle(4,4,4,4)将返回true,即使你给它的形状实际上不是一个三角形...你可能想断言你的顶点是不同的点。