저는 여가 시간에 거의 순전히 학습 경험으로 "게임"을 진행하고 있으며 플레이어 엔티티와 적군 엔티티 간의 충돌 감지가 발생해야하는 시점에 있습니다.사각형 배열에서 겹침을 찾는 가장 빠른 방법은 무엇입니까?
플레이어와 모든 적 모두 기본 클래스 인 Entity
을 공유하므로 x, y, height 및 width 속성에 액세스 할 수 있습니다. 이를 사용하여 각 엔티티에 대해 사각형을 만들고 겹침을 찾으려고합니다. 겹치는 부분이 있으면 충돌이 발생했습니다. 이들 개체 (사각형) 중 하나가 교차하는 경우를 결정하는 가장 빠른 방법은 무엇
X Y HEIGHT WIDTH
------------------------
0 0 25 50
0 50 25 25
0 100 25 30
50 200 25 50
150 250 25 25
150 50 25 30
:
그래서, 위의 논리와 함께, 우리는 다음과 같은 데이터는 사각형의 배열에 척 수 다른? 간단하게 배열을 반복하고 각 요소를 서로 다른 요소와 비교하는 것은 충분히 성능이 없습니다 (O (n^2)). 더 좋은 방법이 있습니까?
나는 코스 그레인 된 "배경 격자"를 만들 것입니다. 객체는 겹쳐 진 코스 격자 셀에 자체를 "등록"합니다. 그런 다음 각 코스 그레인 격자 셀에 O (n^2)를 수행 할 수 있습니다. (일반적으로 각 셀에 두 개 이상의 객체가 없어야하므로 실제로 O (n)에 "가까이"있게됩니다. – aioobe
충분히 수행하지 못합니까? 얼마나 많은 직사각형이 있습니까? – dasblinkenlight
어떤 것이 교차하는지 또는 어떤 것이 intersceting만으로 충분하다는 것을 알아야합니까? –