문제

나의 집합체(이것을 points)을 포함하는 x-y-z 구성 요소의 자신의 위치에서 확실한 공간입니다.하고 싶 모델 간의 상호 작용체에서 points, 그러나 나는 그렇게 할 수 없지 않는 한 나는 빠르게 찾을 수 있습에서 객체를 설정하는 것보다 적은 어느 거리에서 멀리 하나의 객체에서 이 설정합니다.

이 의심 할 여지없이 소리지 않,그래서 나는 그것을 다른 방법을 넣어:는 경우 첫 번째점 points 좌표 <x, y, z>, 고 싶을 파악하는 개체의 points 는 거리는 더[일부를 임의의 값]에서는 점이다.

었을 고려의 구현 R-트리를 이렇게 자바에서,아직은 느낌으로만 이것은 일반적인 충분히 문제하는 간단한 솔루션이 존재합니다.이 없는 경우에는 하나 감사하겠의 간단한 설명하는 방법 중 하나는 쿼리를 R-트리를 찾기 위해서는 객체 내에있는 약간의 거리 x 객체에서 트리에서 어디서 x 는 이미 알고 있습니다.

편집:참고는 위치 값의 이러한 객체를 변경하는 것.

도움이 되었습니까?

해결책

R*-나무는 아주 좋은 데이터 구조에 대한 이 할 경우에는 지점은 변화하고 있다.그것은 설계에 대한 변경 사항입니다.

K-d-트리가 간단하지만,그것은 지원하지 않 변경습니다.그것은 디자인에 대한 중간 벌크 건축.

그러나,데이터와 같은 세 가지 입체:는 경우에 데이터에 맞게 충분히 작은 메모리,최대값과 최소값의 x,y,z 알려져 있고, octree 이나 간단한 그리드 이 될 수 있는 단점 단순하고 성능 해야 합니다.

에서 특정한 경우 수정하는 쿼리 반경을 사전에,그리드-파일을 이길 수 있습니다.R*-나무에 매력을 얻을 때 당신이 지원하는 데 필요 여러 반경,창 쿼리는 가장 가까운 이웃 쿼리와 모든이다.

다른 팁

편집:장=브(그러나 상상에서 그것을 2D 공간 것 아마 더 나은,그 후로 변환할 수 있습 3D 쉽)

나는 생각하고 있었고 나는 그것을 해결했다.그러나 이것은 그냥"내"솔루션가 없습니다.

당신은 클래스 만들기"사각형",은 위치,폭고 목록에 포인트는 개체입니다.

모든 사각형에 저장됩니다 또는 배열 hashmap 에 따라 자신의 위치,그래서 그들은 빠르게 액세스할 수 있습니다,당신이 알고 있는 경우 위치를 찾을 것입니다.

모든 사각형으로 분산됩 정기적으로,그의 관점에서의"점 인스턴스"-당신이 알고있는 모든 기존 사각형을 그림에서 일정한 시간에 하나 당신에 속한다.(예를 들어:내가 알고있는 사각형으로 폭이 40 으로 서비스를 제공할 의무가 있는 거리에 의해 20.난에 위치 10001,그래서 나는 속으로 광장에 위치 9980 10000)

사각형이 교차하여 각각 기타,따라서 하나의 지점이 될 수 있습에서 더 많은 사각형입니다.

당신이 뭔가를 할 때,각 지점,당신은 단지 포인트를 확인에 저장되는 사각형이 그 지점에 속한다.물론 사각형 충분한 공간을 갖고 있어야 합니다.고 교차를 달성하기에 충분의 목표입니다.

할 때 점,그에 대한 책임은 등록과 등록으로 사각형입니다.


1D 를 들어:

클래스: Line segmentPoint

Attrributes:

Line segment : int position, List<Points> points

Point : int position, List<LineSegment> lineSegments

내가 원하는 상호 작용으로만 점에서 거리의 20.

그래서 내가 만들의 인스턴스 Line segments 으로 폭이 40 그리고 나는 그들을 하나 하나에 거리의 20.

그래서 그들은 위치 0, 20, 40, 60 ....

프리스트 중 하나를 커버 지역 0-40,두 번째 20-60etc.

나는 그들을 배열로 알려진 위치에,나는 빠르게 액세스할 수 있습니다: arrayOfLineSegments[position/20]

를 만들 때,내가 그를 추가 line segments 그것은 그리고.

면을 업데이트,각 지점에서만 상호작용으로 포인트에서 lineSegments.

때 나는 이점,그것을 등록하거나 등록을 취소 lineSegments 게 됩니다.

당신이 사용할 수 있는 루프를 확인해의 배열 개체입니다.

사용한 수식은 다음과 같습니다. d = sqrt[(x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2]

x1,y1,z1 되는 첫 번째점 Points 과 x2,y2,z2 되는 포인트의 객체를 검사하고 있다.이 확인합니다 당신의 알려진 지점에 대한 모든 다른 점이다.인 경우(d)보다 적은 원하는 거리 x 다음 당신이 원하는 무엇을 할 수 있는 프로그램.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top