그동안 앞선 글들에서 우린 변환행렬들과 벡터의 행렬곱을 이용한 벡터의 물리적 변환들(회전, 크기변화, 이동)을 살펴보았다.
또한 행렬곱을 이용해 좌표계를 변환하는 법에 대해서도 알아보았다.
이번 글에서는 이 두 내용이 본질적으로는 같은 내용이라는 것을 설명하고자 한다.
우리는 행렬에 벡터를 곱하는 행위를 정의역과 치역이 모두 벡터인 어떤 함수라고 생각할 수 있다. 즉, 행렬곱은 선형변환이고, 선형변환은 행렬곱이다.
(선형변환의 정의는 아래와 같으며, 임의의 행렬 A에 대해 T(x) = Ax가 항상 이를 만족함을 알 수 있다.)
선형사상(=행렬곱)은 기하학적으로 해석이 가능하다.
이를 이해하면 우리는 그동안 다뤄왔던 다양한 종류의 변환행렬들이 왜 그런 형태를 하고 있는지도 이해할 수 있다.
예시를 보면 직관적으로 이해가 가능하다.
위 행렬곱 연산은 자세히 보면 기저벡터가 (1,0),(0,1)이었던 좌표계의 점(벡터) 1,1을 기저벡터가 (2,1),(-3,1)인 죄표계의 점 1,1로 변환한 후 그 좌표를 다시 기저벡터가 (1,0),(0,1)인 좌표계에 대해 나타낸 것이라는 것을 알 수 있다.
즉, 위 행렬곱 연산은 행렬 속의 두 열벡터를 각각 기저벡터로 하는 새로운 좌표계에 대해 x를 나타낸 뒤, 그렇게 해서 얻은 좌표를 다시 원래 좌표계에 대한 값으로 나타낸 것이라는 것을 알 수 있다!
예시를 한 가지 더 살펴보자.
우리는 앞선 글에서 2차원 좌표계에서의 회전행렬의 기본식을 배웠고, 그 회전행렬에 벡터를 곱하면 벡터가 회전한다는 것을 막연하게 배웠다.
그러나 이 또한 내부를 살펴보면 기저벡터를 변화시킨 새로운 좌표계로 점을 이동하는 것에 불과하다.
위 사진과 같이 점을 반시계 방향으로 90도 회전시키려면, 기존 기저벡터(1,0),(0,1)를 90도 회전시킨 (0,1),(-1,0)를 기저로 하는 좌표계로 점을 이동시키면 된다. (이 값들은 결국 앞선 글에서 우리가 구한 일반식의 세타값에 pi/2를 대입한 것에 불과하다)
결국 회전 역시, 실제로 벡터를 회전시키는 것이 아닌, 좌표계를 변환시키는 것에 불과했다는 것이다!
(이걸 이해하고 나면 왜 회전벡터 일반식이 그런 형태로 나오는지 직관적으로 이해할 수 있다. 그 일반식은 결국 기저벡터가 각 세타에 따라 회전하는 것을 삼각함수로 표현한 것에 불과하다는 것도 알 수 있다.)
또한 이러한 행렬곱의 원리를 이해하면, 왜 기본행렬(Identity Matrix)에 벡터를 곱하면 자기자신이 그대로 나오는지, 또 왜 기본행렬은 1이 대각선 방향으로 놓여있는 형태를 하고 있는지를 알 수 있다. 이미 기저벡터가 (1,0),(0,1)인 좌표계에 놓인 벡터를 같은 기저벡터를 갖는 좌표계로 이동하는 것이기 때문에 값이 변하지 않는 것이다.
참고:
https://youtu.be/euMsKPfj_Ss
'mathematics > game mathematics' 카테고리의 다른 글
[Mathematics] 15. 3차원 Line-AABB Intersection (0) | 2022.04.03 |
---|---|
[Mathematics] 14. Line-Plane Intersection (0) | 2022.04.03 |
[Mathematics] 12. TRS Matrix (0) | 2022.02.21 |
[Mathematics] 11. Translation (0) | 2022.02.21 |
[Mathematics] 10. Rotation (1) | 2022.02.16 |