Front-end_dev

SAT collision (Separating Axis theorem) 본문

Algorithm

SAT collision (Separating Axis theorem)

Eat2go 2017. 12. 19. 03:15



2차원에서의 경우는, 노멀벡터를 다음과같이 구할수있다.

x = y

y = -x

이렇게 좌표를 바꿔준뒤, 꼭 정규화를 해주어야한다. 그래야 투영축은 무한해지고, 내적으로 얼마나 투영됬는가를 파악할수있기때문이다


2D에서 이 알고리즘의 중요한 이슈는 '원'과의 충돌에있다. 3차원에서 원을 드로잉할떄는 수많은 버텍스로 이루어져있기때문에 그에따라 노멀벡터가 수백개수천개가된다. 하지만 2D(HTML5 canvas)에서는 버텍스버퍼를 기반으로 드로잉하지않기때문에 원에서의 투영축은 하나로만 제한한다.



3차원에서의 적용하기위해선, 위의같은방식으로는 노멀벡터를 구할수없다 (이전포스트를 참고)

원리는 똑같고, 축을 구하기위해 노멀벡터의 구하는방식이 틀릴뿐.