C #에서 분리 축 정리를 구현하려고합니다. 두 다각형 사이의 최소 변환 벡터를 계산할 수있는 함수가 있습니다. 그러나 하나의 다각형과 다른 여러 다각형 사이의 최소 변환 벡터를 계산하는 함수를 만들 수없는 것 같습니다. 솔직히, 나는 몇 달 동안이 일을 해왔고 솔루션에 더 가깝지 않고 온라인으로 솔루션을 찾을 수 없었습니다. 항상 정확한 결과를 반환하지 않는 몇 가지 최첨단 사례가있어 게임에서 우선 순위가 높은 버그가 발생합니다.
올바르게 작동하지 않는 일반적인 경우는 다음과 같습니다.
이 문제에 대한 잘 알려진 해결책이 있습니까? 내가 찾을 수있는 것은 "각 다각형마다 SAT 만 수행"이라고 말하는 사람들이지만 최소 번역 벡터 는 거의 생성하지 않습니다 .
도움을 주시면 감사하겠습니다.
실제로 테스트를 해 본 적이없는 한 가지 아이디어는 옆에있는 다각형으로 옆으로 이동하는 분리 축을 최소값으로 간주하지 않는 플래그 일 수 있다는 것입니다. 그런 다음 일종의 반복 테스트를 통해 좋은 결과를 얻을 수 있습니다 (루프에 걸리지 않도록 일종의 FIFO 및 / 또는 반복 제한이있을 수 있음).
—
Andrew Russell
이 버전을 해결하기가 더 어려운 것은 모양의 가장자리가 부분적으로 다른 부분으로 덮여있을 때입니다. 예를 들어 오른쪽 상단 이미지에서 중간 정사각형이 오른쪽으로 확장 된 경우 더 큰 사각형이됩니다. 이것은 내가 사용하는 일부 코드의 출력과 유사합니다. 수십만 개의 점유 / 점유되지 않은 셀을 가져와 수백 개의 더 큰 충돌 형태로 줄입니다.
—
Richard Tingle