flow-vector
Published 2023. 11. 22. 12:33
게임 수학 - 행렬 Math/Game Math

“이득우의 게임수학” 책을 읽고 중요하다고 생각하는 부분을 정리한 내용들입니다!

 

책에서는 행렬을 가상세계의 변환 도구라고 소개하고 있는데 와닿는 말이라고 생각했다. 사용자의 인풋에 따라 빠르게 공간을 변화시켜서 보여줄때 행렬을 사용하여 계산의 이점을 가져간다고 생각한다.

이전에 미쳐 설명하고 넘어 가지 못한 선형성이라는 개념에 대해서 좀 더 자세히 정리를 해보는 것을 목표로 하려고 한다.

나머지 개념들로는 행렬에서의 연산, 각종 변환 행렬 및 역행렬에 대해서 정리해보려고 한다.

행렬

선형성(Linearity) → 선형 대수학에서

  • 어떤 함수가 2가지 명제를 만족할 때 선형성을 가진다고 함
    • 가법성 (Additivity)
      • $f(x_1 + x_2) = f(x_1) + f(x_2)$
    • 1차 동차성 (Homogeneity of degree 1)
      • $f(k \cdot x) = k \cdot f(x)$
  • 대표적인 선형 함수의 예
    • 원점을 지나는 직선
      • $f(x) = ax$
  • 선형성을 가지는 함수가 가지는 장점
    • 복잡한 수식을 쉬운 계산들로 분리하여 계산할 수 있음
      • 단순한 변수들의 합과 상수배만으로 쉬운 계산으로 분리하여 계산이 매우 편리해짐
    • 결과값의 해석이 직관적임
      • 동차성을 보았을 때 특정 변수의 계수에 따라 얼마나 값이 변하게 될지 직관적으로 와닿음

벡터 공간에서 선형 변환

  • 표준 기저벡터의 선형 결합으로 형성된 공간은 선형성을 지님
  • 2차원 벡터 공간을 정의역과 공역으로 가지는 선형 함수 $f(\vec{v})$가 존재할 때
    • $f(x, y) = (ax + by, cx + dy)$
  • 벡터 공간을 선형 함수로 변화시킨 새로운 공간도 기저벡터의 선형 결합으로 형성되기 때문에 선형성을 지님
  • 선형 함수에 의해 변환된 새로운 공간도 변형 전의 공간과 동일한 구조를 지닐 때 두 공간의 대응 관계를 특별히 변환(Transformation)이라고 함
  • 선형을 유지하면서 변환이 되기 때문에 선형 변환이라고 함
  • 위 예시의 선형 함수의 a, b, c, d에 어떤 값을 넣는지에 따라 크기 변환 or 회전 변환을 나타 낼 수 있음

행렬

  • 선형 변환의 계산 과정을 체계화 하여 손쉽게 계산할수있는 도구를 만들었는데 그것이 행렬!
  • 선형 변환에서는 정방행렬을 사용함
    • 정방 행렬 : 행과 열의 크기가 같은 행렬
  • 행렬 연산의 종류
    • 행렬간 덧셈
      • 같은 위치 원소끼리 덧셈
      • 교환, 결합 법칙 성립
    • 행렬 스칼라 곱셈
      • 모든 위치 원소에 스칼라 곱셈
      • 교환 결합 법칙 성립
    • 행렬 전치
      • 행과 열을 바꾸는 연산
      • 정방행렬에서 대각 성분만 대칭으로 바뀜
    • 행렬간 곱셈(중요)
      • 교환 법칙 성립 안됨 → 연산 순서 중요
        • 선형 변환을 위한 연산은 오른 쪽에서 왼쪽으로 진행
      • 결합 법칙 만족
        • 여러번선형 변환을 할때 결합 법칙을 통해 선형 변환 행렬들을 먼저 계산하여 하나의 행렬로 나타 낼 수 있음
        • $(A \cdot B \cdot C) \cdot \vec{v}$
        • 이를 통해 계산량을 확연히 줄일 수 있음
      • 행렬의 곱을 전치한 결과 성질
        • $(A \cdot B)^T = B^T \cdot A^T$
        • 열기준 행렬과 행기준 행렬을 사용하는 프로그램간 변환시 사용됨
          • opengl, 유니티 : 열기준 행렬 사용
          • directx, 언리얼 : 행기준 행렬 사용

변환 행렬의 설계

  • 행렬의 열벡터를 변환하고자하는 공간의 기저벡터로 설정
  • 크기 변환
    • $\begin{bmatrix} a & 0 \\ 0 & b \end{bmatrix}$
  • 회전 변환
    • $\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}$

역행렬

  • 함수의 항등함수와 역함수에 대응하는 행렬 존재함
    • 선형 변환을 수행하는 행렬은 선형 함수의 성질을 지니기 때문에
      • 항등행렬
        • 원공간 변환 없이 동일 공간으로 유지
        • $I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$
      • 역행렬
        • 어떤 선형 변환이 일어났을 때 해당 공간을 다시 원공간으로 돌리는 행렬
        • $A^{-1} \cdot A = A \cdot A^{-1} = I$
  • 역행렬의 존재를 판단하는 판별식
    • 전단사 함수일 때만 역행렬이 존재함
    • 행렬식
      • 두 공간사이의 대응 관계가 전단사임을 판별하는 식
      • $A = \begin{bmatrix} a & c \\ b & d \end{bmatrix}$
      • $det(A) = ad - bc$
      • det 값을 0을 만드는 벡터는 평행함
        • 평행한 2 벡터의 선형 결함으로는 2차원 공간의 모든 벡터를 나타낼 수 없음(선형 종속)
        • 따라서 1차원을 2차원으로 변환시키는 역행렬 존재 하지 않음

'Math > Game Math' 카테고리의 다른 글

게임 수학 - 내적(Dot Product)  (0) 2023.11.30
게임 수학 - 아핀 공간  (0) 2023.11.28
게임 수학 - 삼각함수  (1) 2023.11.21
게임 수학 - 벡터  (0) 2023.11.16
게임 수학 - 수의 구조 및 함수  (0) 2023.11.15
profile

flow-vector

@flow-vector

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!