간격의 2D 그리드가 있다고 가정합니다. x 축을 따라 간격을 설정하고 y 축을 따라 간격을 설정합니다. 이제 x 축과 y 축에서 새 객체가 두 개가 속하는 간격을 결정해야합니다. 새로운 물체가 숫자에, 하나는 x 좌표이고 다른 하나는 y 좌표라고 가정 해 봅시다. 객체가 들어 맞는 x와 y의 간격을 결정하여 저장된 데이터를 검색하고 싶습니다.C++에서 2D 간격 검색을 구현하는 가장 좋은 방법은 무엇입니까?
나는 std::map<IntervalX, IntervalY, DataToStore> map
또는 std::multimap<IntervalX, IntervalY, DataToStore> map
유사한 것을 생각했다. 이를 구현하는 방법에 대한 제안 사항이 있으므로 간격 쌍에 저장된 데이터를 검색하는 것이 매우 효율적이며 빠르며 O(n²)
이 아닙니다.
편집 : 간격은 두 개의 부동 소수점 값으로 결정됩니다. 예 : x 축을 따라있는 간격 [0.5, 3.0]. 따라서 0.5가 포함되고 3.0은이 간격에 포함되지 않지만 양의 x 방향으로 다음 간격에 포함됩니다.
간격 해체와 중복되지 않고 중첩됩니다. 간격의 조합은 선의 일부분입니다. 저는 평면을 사각형 세트로 타일링했고 점이 속하는 사각형 영역을 알고 싶습니다.
예를 들어, x 축 방향의 간격은 간격 크기가 0.5이고 y 방향으로 0에서 10까지입니다. -axis는 간격 크기가 1.0 인 2에서 15로 시작합니다. 간격이 떨어지는 점 P (x = 0.7, y = 3.0)? x 축에서 간격 2이고 y 축에서 간격 2입니다. 이제 해당 간격 쌍에 대해 저장된 데이터를 검색해야합니다.
필자는 각 축을 따라 약 10000 개의 간격을 가지며 2 초마다 (약 또는 그 이하) 약 500 개를 검색해야하므로 개체 간격의 결정이 빨라야합니다.
'간격'이란 무엇입니까? 간격 (사이의 간격) 무엇과 무엇? 시간 간격? 2 차원 값의 – matiu
주문 스토리지는 같은 비트가 [쿼드 트리 (https://en.wikipedia.org/wiki/Quadtree) – jaggedSpire
당신이 얼마나 많은 "간격"이 있습니까 소리? 얼마나 많은 "객체"입니까? "최고"에 대한 측정 기준은 무엇입니까? – Drop