2
this wikipedia article에 설명 된 기술을 사용하여 쿼드 트리를 만듭니다. 좌표를 2 차원 또는 3 차원 배열에 저장하고 있습니다.다음 순서의 z- 순서 곡선
boost::array<unsigned int, 2 /* 3 */> coord;
다음 상자의 좌표를 z 순서로 계산하는 방법이 필요합니다. 비트를 인터리빙하여 하나씩 증가시키고 디 인터리빙을 수행하면 작동하지만 매우 복잡해집니다. 비트를 인터리브하지 않고 작동하는 기사의 cmp_zorder (...) 메톤과 비슷한 구현이 있기를 바랍니다.
정확히 무엇을 원하니? 인터리빙 및 디 인터리빙을하지 않고 Z 순서로 (x, y) 옆에있는 (x ', y')? – harold
정확히 맞습니까? – Smittii
확실히, 그러나 나는 어떤 트릭을 들어 보지 못했고, 그래서 내가 생각할 수있는 유일한 방법은 비트 추가 알고리즘을 수정하여 다른 좌표에 캐리를 추가하는 것입니다 (캐리가 x를 y에 더해야 함). , 그리고 carry in y가 x에 추가되어야 함). 비슷한 기술을 3D Z 커브에 사용할 수 있습니다. 그것은 나에게 특히 빠르다고 들리지 않는다. 어쨌든 그런 식으로 관심이 있습니까? – harold