arraylist (예 : A, B, C, D)에 2D 점이 있습니다. 함께 엮은 선 문자열을 나타내는 임의의 수의 점을 포함 할 수 있습니다.하나의 점 X가 Java에서 가장 가까운 arraylist의 인접 점 쌍을 찾는 가장 좋은 방법은 무엇입니까?
점 B와 C 사이에있는 점 X가 있다고 가정합니다. 함수의 출력이 점 "B"와 "C"가있는 arraylist인지 어떻게 확인할 수 있습니까 (또는 간단히 pointA 또는 pointB가 할당 됨). 주어진 점 "B"와 "C") 다음 두 건으로 :
Point pointA = null;
Point pointB = null;
int minDistance = Integer.MAX_VALUE;
for(int i = 0; i < pointlist.size(); i++) {
int distance = pointlist.get(i).getDistanceToPoint(xPoint);
if(distance < minDistance) {
if(pointB != null) {
pointB = pointA;
}
minDistance = distance;
pointA = pointlist.get(i);
} else {
pointB = pointA;
pointA = pointlist.get(i);
}
}
: 다음과 같이 pointX을 가정한다
1- Point X is closer to B than C, but still falls between B and C
2- Point X is closer to C than B, but still falls between C and B
3- Point X is closer to C than G (maybe because the line segments from the array list is oddly shaped like a U or something), but the function should return either the points C and D or C and B, depending on whichever is the closest to pointX.
내 현재 코드는 다음 작업을 수행하는 함수에 전달 위의 사례는 # 1 사례를 충족하지만 사례 # 2는 충족하지 않습니다. pointA가 "B"이고 pointB가 "C"와 같도록하는 가장 좋은 방법은 무엇입니까? 이렇게하는 더 좋은 방법이 있다면, 나는 그것에 열려 있습니다.
바로 pointX에 가장 가까운 두 점입니까? 점의 arraylist가 U 모양을 만들었거나 두 점이 가장 가까워 지도록 만든 모양이 있지만 함수가 반환 된 경우 반드시 인접하지는 않는 것은 가장 가까운 점과 두 번째로 가까운 점이 아닙니다. 그 두 점은 틀렸다. 대신 가장 가까운 첫 번째 점을 반환 한 다음 해당 점에 인접한 두 번째 점을 반환해야합니다. UNLESS 사용자가 포인트 "4"또는 특정 인덱스에서 시작하도록 지정할 수 있으므로 6 번째 포인트가 가장 가까운 두 번째 포인트 인 경우 결과는 5 번째 또는 7 번째와 함께 6 번째 포인트를 반환합니다 , 어느 선분에 속하는가에 따라 다릅니다.
'minDistance' 란 무엇입니까? 어디에서 초기화합니까? – RockOnRockOut
오타, OP에서 수정. – Rolando
여기서 뭔가를 놓치지 않는 한, 배열에서 최소 및 두 번째로 낮은 요소를 찾는 것과 다르지 않습니다. –