我已经编写了一个代码,首先得到一些点(有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
答案 0 :(得分:1)
你能解释为什么效果不好吗?
似乎你的迭代点的方法有点狡猾。例如,如果n == 5,你的程序将评估isPointInTriangle为i = j = k = m = 4,这意味着它试图弄清楚Point 4是否在由顶点4,4,4形成的三角形内。如果你在你的链接中使用第一个方法,isPointInTriangle(4,4,4,4)将返回true,即使你给它的形状实际上不是一个三角形...你可能想断言你的顶点是不同的点。