
개요본 장에서는 이전에 포스팅한 SAT 이론 및 구현 스터디(1) 한 개념들을 SFML 환경의 코드로 구현한 내용들을 다룬다. 코드 구현전에 전반적인 흐름을 파악하기 위해서 플로우 차트를 작성해 보았다. 1. Convex Polygon의 Edge Vector 구하기먼저 Edge Vector를 구하기 위해서는 두 개의 정점의 x, y 성분을 알아야 한다. 두 정점은 좌표가 아닌 벡터 성분이고 벡터 뺄셈을 통해서 Edge Vector를 구하게 된다. 연산은 존재하는 Convex Polygon의 정점의 갯수만큼 반복된다. 해당 코드는 다음과 같다. sf::Vector2f Collision::DetermineEdgeVector(sf::Vector2f* vertices, uint32_t index, uin..

SAT 는 무엇인가?SAT(Separating Axis Theorem)는 두 개의 볼록 다각형 또는 볼록 다면체가 충돌하지 않는지를 확인하는 데 사용되는 알고리즘이다. SAT(Separating Axis Theorem)두 개의 볼록 다각형 또는 볼록 다면체가 충돌하지 않는지 확인하는 로직이다.SAT는 유명한 강체 충돌 탐색 알고리즘 중 하나이다.SAT는 오직 볼록 다면체(convex polygons)에서만 작용한다. SAT에서 "충돌했다" 의 정의 위 이미지의 내용을 풀이하자면, 두 개의 도형을 분리할 수 있는 적어도 하나의 축이 주어진다면 SAT 관점에서 두 도형은"충돌하지 않았다." 상태로 정의할 수 있다. 즉 두 도형을 분리할 수 있는 축이 하나도 존재하지 않을 때, 비로소 "충돌 했다"..