x와 y의 속성을 가진 객체가있는 경우 거리 공식을 사용하지 않고 배열의 어느 점이 가장 가까운 지점인지 어떻게 알 수 있습니까?Java에서 거리 공식을 사용하지 않고 객체에 가장 가까운 점 찾기
1
A
답변
3
일부 변형 수식을 사용하지 않으면 정확한 결과를 얻을 수 없습니다. 하지만 당신은 수 있습니다 사실 후에 제곱근을 복용하지 않음으로써 몇 사이클을 저장합니다; 비교는 유효합니다.
R = DX 2 + DY 2
1
당신이 정확한 거리를 걱정하지 않는 경우, 당신은 아마도 x와 소스의 y 좌표의 차이를 취할 수 있으며, 목적지 지점을 통해 주문을 할 수 있습니다.
//The following code does not return the closest point, //but it somewhat does what you need and complies with //your requirement to not use the distance formula //it finds the sum of x and y displacements Point destination=... Point nearestPoint= points.get(0); for (Point p : points){ closenessCoefficient= Math.abs(destination.x-p.x) + Math.abs(a.destination-p.y); nearestPoint=Math.Min(closenessCoefficient, nearestPoint); } return nearestPoint;
0
가장 가까운 이웃을 정확하게 찾아야하는 경우 거리 공식을 평가할 방법이 없습니다. 몇 가지 포인트가 있습니다. 이미 지적했듯이 거리의 제곱을 비교할 때 대부분의 시간 동안 비싼 sqrt를 평가하지 않아도됩니다. r^2 = x^2 + y^2.
그러나 넓은 범위의 거리에 많은 수의 포인트가 분산되어있는 경우 여기에 표시된 것과 같은 근사를 사용할 수 있습니다. http://www.flipcode.com/archives/Fast_Approximate_Distance_Functions.shtml 그러면 근사치에 의해 가장 가까운 점에 대해서만 실제 거리 공식을 계산할 수 있습니다. 곱셈이 비싼 아키텍처에서도 큰 차이를 만들 수 있습니다. 현대의 x86/x86-64 아키텍쳐에서는 이것은별로 중요하지 않습니다.
관련 문제
- 1. 균등 그리드의 점 구름에서 가장 가까운 점까지의 거리 찾기
- 2. 노드 사이의 가장 가까운 거리 찾기
- 3. 다른 점에 가장 가까운 점 찾기
- 4. 모든 점의 가장 가까운 점 찾기 (가까운 이웃)
- 5. 지도에서 선과 점 사이의 거리 찾기
- 6. 가장 가까운 CCSprite 찾기
- 7. 가장 가까운 XY 좌표 찾기
- 8. 숫자 배열에서 가장 가까운 두 요소 사이의 거리 찾기
- 9. 주어진 점에 가장 가까운 점
- 10. 데이터베이스에서 가장 가까운 (거리) 레코드를 효과적으로 선택합니다.
- 11. 가장 가까운 컨트롤 찾기
- 12. 주어진 좌표에 가장 가까운 점 찾기 - 데이터 구조
- 13. 라빈의 가장 가까운 이웃 (가장 가까운 점 쌍) 알고리즘?
- 14. OpenGL에서 점까지의 거리 찾기
- 15. PostGIS의 각 위치 점 사이의 거리 찾기
- 16. 주어진 주소에 가장 가까운 위치 찾기
- 17. 선체와 상자 사이의 가장 가까운 거리
- 18. Google지도 가장 가까운 유틸리티 찾기
- 19. 가장 가까운 블록 범위 찾기
- 20. 사용자로부터 가장 가까운 지점 찾기
- 21. 포인트에서 가장 가까운 원 찾기
- 22. Google지도에서 가장 가까운 핀 찾기
- 23. iPhone에서 가장 가까운 장소 찾기
- 24. GeoDjango가있는 두 점 사이의 가장 먼 거리
- 25. 두 점 사이의 거리 계산
- 26. 구체에서 가장 가까운 점 쌍을 찾는 방법
- 27. 가장 가까운 격자 점 유형 질문
- 28. 3D의 선 4 세트에 가장 가까운 점
- 29. 점을 그리드에서 가장 가까운 점 얻기
- 30. MySQL을 사용하지 않고 현재 시간을 가장 가까운 분으로 가져 오기
x 거리와 y 거리를 더할 수 없습니까? –
No. dx가 1이고 dy가 1 인 점의 거리가 1.414입니다. dx가 1.5이고 dy가 0 인 점의 거리가 1.5입니다. –
O.K. –