축 정렬 경계 상자 (AABB)가 채워진 세계로 구성된 엔진이 필요합니다. 연속 루프는 다음과 같은 일을 실행한다 :AABB 충돌 검사 물리 엔진을위한 최상의 데이터 구조는 무엇입니까?
for box_a in world
box_a = do_something(box_a)
for box_b in world
if (box_a!=box_b and collides(box_a, box_b))
collide(box_a, box_b)
collide(box_b, box_a)
그
의 문제가 분명하고,이 O인지 (N^2). 나는 덩어리의 공간을 분할 훨씬 더 빨리이 루프를 만들기 위해 관리, 그래서이되었다 :
for box_a in world
box_a = do_something(box_a)
for chunk in box_a.neighbor_chunks
for box_b in chunk
if (box_a!=box_b and collides(box_a, box_b))
collide(box_a, box_b)
collide(box_b, box_a)
이 훨씬 빠르게하지만, 약간의 원유. 많은 노력이 필요없는 빠른 알고리즘이 있다는 것을 감안할 때, 내가 알지 못하는 데이터 구조가이 알고리즘에 대해 훨씬 뛰어난 확장 성을 제공하면서 여기서 수행 한 것을 일반화 할 수있을 것입니다.
내 질문은 다음과 같습니다.이 문제의 이름은 무엇이며이를 구현하기위한 최적의 알고리즘과 데이터 구조는 무엇입니까?
EDIT : 나는 후자의 기술을 '공간 해싱'이라고하며 덜 복잡한 덕분에 더 빨리 개발할 수 있습니다. 시나리오 프로필 유도 해싱을 사용한 완벽한 우주 해싱에 대한 문서도 있습니다. –