2017-11-02 1 views
-1

저는 3 차원 공간에 수천 개의 희소 한 점으로 구성된 P과 고정 된 반경으로 움직이는 구체 S을 가지고 있습니다. 매 순간마다 t은 구체 (球)가 차지하는 공간의 볼륨 인 S_t을 알고 있습니다. 나는 어느 방향으로 S가 다음에 움직일 것인지 미리 모른다. S_t에 포함 된 모든 점수의 하위 집합 Q_t을 어떻게 찾을 수 있습니까? 다음과 같이 움직이는 구에 포함 된 모든 점의 집합을 찾으십시오.

나는 할 생각 :
  1. 는 R-트리에있는 모든 점을 넣고 계산 Q_0
  2. 을 모든 t> 0의 경우, 계산 상대적 보완

    N_t = S_t \ S_(t-1)M_t = S_(t-1) \ S_t

  3. 그런 다음 상대 보완 물인 P(N_t)과에 포함 된 모든 점을 R- 트리에 쿼리합니다

    Q_t = Q_(t-1) + P(N_t) - P(M_t)

이 일을합니까 :

  • 마지막으로, 나는 같은 결과를 업데이트? 이것을 계산하는보다 효율적인 방법이 있습니까?

    또한 효율적으로이 문제를 해결할 수있는 라이브러리가 있습니까?

  • +0

    일부 경계가 증가하는 구가 있습니까? 주기적으로 큰 구 (다음 n 증분 ..을 포함 할만큼 충분히 큰) 내의 모든 점을 찾을 수 있으므로 몇 가지 후속 증분 검색을 줄이십시오. – agentp

    +1

    3D에서 ** 스파 스 ** (?) 점은 무엇입니까? 매번 S_t를 쿼리 할 수없는 이유는 무엇입니까? 보완 물은 질의를위한 구체보다 훨씬 복잡한 지오메트리를 산출합니다. 또한 효율성은 검색 트리의 구현 품질에 따라 크게 달라집니다. –

    +0

    구 안쪽에 몇 개의 점이 있습니까? 이것은 큰 차이를 만들 수 있습니다. –

    답변

    0

    포인트를 kD 트리 (k = 3)에 저장하고 고정 반경 근처 인접 검색을 수행합니다.

    작은 증분을 활용하고 이전 위치를 사용하여 한 위치에 대해 해결하려는 전략이 실제로 지불하게 될지 확신하지 않습니다.

    관련 문제