앞서 우린 어떤 2d 벡터와 각 변이 축과 직사각형의 Collision 판정을 위해 Line-AABB Intersection이라는 방법을 사용할 수 있음을 배웠다.
이전엔 이 방법을 보다 넓은 범위로 확대해, 3차원 직육면체와 선의 충돌을 계산할 수 있도록, 또 물체가 축과 평행한 변을 가진 AABB(Axis Aligned Bounding Box)가 아닌 일반적인 직육면체이더라도 계산할 수 있도록 확장해보자.
일단 2D line aabb intersection을 3D로 변환하는 과정은 다음과 같다.
https://sudhamr.wordpress.com/2019/05/01/week-12/
이렇게 얻은 line AABB Intersection 방식은 여전히 직육면체의 각 변이 축과 평행해야 한다는 문제를 가지고 있는데, 때문에 우리는 line AABB Intersection 연산을 하려는 직육면체에 그 직육면체의 TRS Matrix의 역행렬을 곱해주어 각 변이 x,y,z축과 평행한 상태로 만들어야 한다.
(TRS) ^ -1 = S^-1 * R^-1 * T^-1이므로 구하는 과정은 어렵지 않다.
이때 한가지 유용한 참고할 만한 점은
Scaling Matrix는 대각행렬이므로 쉽게 역행렬을 구할 수 있고,
Rotation Matrix는 역행렬이 Transposed와 동일하다는 성질을 가지고 있어 역행렬을 쉽게 구할 수 있으며,
Translation Matrix 역시 이동시킨 방향으로 다시 이동시키면 되므로 역행렬을 쉽게 구할 수 있다는 점이다.
'mathematics > game mathematics' 카테고리의 다른 글
[Mathematics] 17. Axis-Angle Rotation (Rodrigues formula) (0) | 2022.04.08 |
---|---|
[Mathematics] 16. Plane Intersection & Frustum Culling (0) | 2022.04.03 |
[Mathematics] 14. Line-Plane Intersection (0) | 2022.04.03 |
[Mathematics] 13. 선형변환의 기하학적 의미 (0) | 2022.02.21 |
[Mathematics] 12. TRS Matrix (0) | 2022.02.21 |