나는 지금 당황 스럽지만 충돌 탐지를 위해 직사각형으로 작업하는 데 익숙하다. 나는 다이아몬드와 같은 모양으로 작업하고 있으며 지난 몇 시간 동안 충돌을 확인하는 방법을 알아 내려고 노력했습니다. 직사각형 이외의 모양으로 충돌 ..?
는 내가 처음 네 개의 점은 두 번째 객체의 점 안에있는 객체 있는지 확인했는데, 그건 그냥 상자 (내 생각)을하게내가 어려움에 봉착 같은 느낌 이유 이것은 각도 때문입니다.
나는 지금 당황 스럽지만 충돌 탐지를 위해 직사각형으로 작업하는 데 익숙하다. 나는 다이아몬드와 같은 모양으로 작업하고 있으며 지난 몇 시간 동안 충돌을 확인하는 방법을 알아 내려고 노력했습니다. 직사각형 이외의 모양으로 충돌 ..?
는 내가 처음 네 개의 점은 두 번째 객체의 점 안에있는 객체 있는지 확인했는데, 그건 그냥 상자 (내 생각)을하게내가 어려움에 봉착 같은 느낌 이유 이것은 각도 때문입니다.
움직이는 볼록 다각형 ("다이아몬드")을 다른 움직이는 볼록 다각형과 충돌 시키려고합니다. 맞습니까? 이런 식으로 뭔가 :
는 그런 다음 이동을 변환 할 수 있습니다
당신의 첫 번째 단계는 다각형 중 하나가 정지되는 동등한 하나에 문제를 변환하는 것 다각형을 이동하는 다각형에 의해 스윕되는 영역을 덮는 "샤프트"로 변환합니다. 이는 원래 폴리곤이 n면을 가진다면 샤프트는 n + 2면을 가지며 여분의 두면은 이동 벡터와 길이 및 방향이 동일합니다. 이동 벡터와 직각 인 구성 요소에 따라 정점을 정렬하고 새 변을 최대 점에 삽입하여 이러한 새면을 삽입 할 위치를 찾습니다.
이제 정적 다각형에 대한 정적 다각형 문제를 감소했습니다. realtimerendering.com의 편리한 table of collision algorithms을 살펴보고 참조를 따르면, 분리 축 검사를 사용해야 함을 알 수 있습니다 (예 : this paper, 3 절, David Eberly).:
이차원개의 볼록 다각형은 우리가 분리 축 같은 하나 다각형 라인의 한쪽에 해당하는 라인 및 기타의 다른 다각형을 찾을 수 있다면 교차하지
방향이 주어지면 그 방향으로 진행하는 분리 축이 있는지, 두 폴리곤을 그 방향에 수직 인 선에 투영하고 투영이 있는지 확인하여 쉽게 발견 할 수 있습니다 분리형 :
분리 축이 어느 방향으로 실행되는지 어떻게 알 수 있습니까? 음, 분리 축이있는 경우 볼록 다각형 중 하나의면 중 하나에 평행 한면이 있습니다 (Eberly, 3 페이지 참조). 따라서 검사 할 방향이 조금 밖에 없으며 분리 축을 찾지 않고 모두 확인한 경우 두 개의 다각형이 교차합니다 (따라서 원래의 움직이는 물체가 충돌합니다).당신은 거부 할 수 있도록
쉬운 케이스 빨리.
최적화에 대해 너무 걱정하지 마세요. 나중에 속도를 높일 수 있다는 확신을 가지고 올바르게 시작하십시오.
한 모양의 두 점 사이의 선이 다른 모양의 두 점 사이의 선과 교차하는지 확인할 수 있습니다. 도형의 모든 인접 노드를 반복 할 수 있습니다. 모양이 주변에 있지 않으면 가장 정확한 충돌 감지를 제공합니다. – bhavinp
@bhavinp 알겠습니다. 그러면 라인 충돌을 확인하는 가장 좋은 방법은 무엇인지 알아야합니다. 나는 일종의 경사면을 사용해야한다고 생각하고 있나? –
@Robert Fratto 두 점을 사용하여 선분을 만드는 함수를 만듭니다. 그런 다음 해당 선분이 교차하는지 테스트하는 다른 함수를 작성하십시오. 이것은 간단한 선형 대수학이어야합니다 또는 당신은 아마 이것을 도울 온라인 자원을 찾을 수 있습니다. 그런 다음 두 도형의 각 정점에 인접한 점을 테스트하기 만하면됩니다. – bhavinp