예전 포스트에서 우리는 선형사상/선형변환의 본질적인 의미는 좌표축을 변경하는 것이라는 것을 다뤘다.
즉 선형사상을 했을 때 벡터가 변하는 이유, 즉 점이 이동하는 이유는 기준이 되는 좌표축이 변했기 때문이다.
그런데 만약 어떤 벡터/점이 선형변환을 했음에도(=기준이 되는 좌표축이 변했는데도)
이전 위치와 동일 선상에 있다면(=원래 벡터의 span 직선 위에 있다면)
해당 좌표는 eigenvector(고유벡터)이다.
이때 동일 선상에 있더라도 벡터의 크기는 변할 수 있는데, 변화 전후의 벡터는 동일직선상에 있으므로 상수배로 표현할 수 있다. 이 상수값을 eigenvalue(고유값)이라고 하며, 기호로는 람다(λ)로 나타낸다.
고유벡터들은 이 직선 위의 무수히 많은 모든 점(=벡터)들이며, 이러한 직선은 여러 개 있을 수 있다.
이 때 서로 다른 직선들은 서로 다른 상수값(=고유값 =람다)을 가질 수 있다.
고유값은 음수가 될 수도 있으며, 음수가 될 경우 이동 전의 벡터는 이동 후 방향이 직선 상에서 반대로 뒤집히게 된다.
고유벡터와 고유값을 게임에서는 어떻게 쓸 수 있을까?
3차원 물체를 회전시킬 때 해당 회전운동의 eigenvector(고유벡터)를 찾는다면 그 고유벡터가 해당 회전의 회전축이 된다.
이는 3x3행렬식을 이용한 회전보다 어떤 회전운동을 직관적으로 이해할 수 있는 방법이기도 하다.
단 회전운동의 경우 eigenvalue(고유값)는 반드시 1이어야 하는데, 이는 물체가 회전을 한다고 해서 물체의 크기가 늘어나거나 줄어들지 않기 때문이다. (벡터의 크기가 변하지 않아야 한다)
고유값을 계산하는 방법과 그 수학적 이유에 대해서는 위 영상의 중반부 및 이 포스트를 참고하는 걸 권장한다.
계산 결과만 살펴보면, 고유값 람다를 구하기 위해서는 det(A - λI) = 0 방정식의 해 람다를 구하면 된다.
행렬은 고유벡터가 없을 수도 있다.
회전행렬(e.g. [[0 -1] [1 0]] : 90도 회전행렬)이 대표적인 예시이다.
만약 위 행렬을 계산해서 고유값(=람다)를 구하려고 시도하면 람다가 허수가 나오는 것을 알 수 있다.
또 행렬은 고유벡터가 하나만 있을 수도 있다.
[[1 1] [0 1]]을 계산하면 식의 해(=고유값)가 1 하나밖에 없는데, 이는 고유벡터가 하나이기 때문이다. (x축 위의 점들이 고유벡터들의 집합이다)
또 행렬은 고유값은 하나지만 고유벡터가 무수히 많을 수도 있다.
크기를 키워주는 행렬 [[2 0] [0 2]]의 경우 고유값은 2 하나지만 평면상의 모든 좌표가 고유벡터이다. (크기만 변하고 회전하지 않기 때문에 모든 점들이 이동 전의 자신의 span 위에 위치한다)
'mathematics > game mathematics' 카테고리의 다른 글
[Mathematics] 25. Local vs Global Coordinate System(3D) (0) | 2022.06.23 |
---|---|
[Mathematics] 24. Fast TR Matrix Inversion (0) | 2022.06.23 |
[Mathematics] 22. Euler angle vs Matrix vs Quaternion (0) | 2022.05.28 |
[Mathematics] 21. Quaternion Slerp (Spherical Linear Interpolation) (0) | 2022.05.28 |
[Mathematics] 20. Quaternion을 이용한 정점 회전 (0) | 2022.05.18 |