Make Unreal REAL.
article thumbnail
이득우의 게임 수학

 

벡터는 한 줄로 구성된 행렬로 표현되며, 행 벡터 또는 열 벡터로 나타낸다.

 

 

선형 변환을 표현할 때는 행과 열의 크기가 같은 정방행렬(Square Matrix)을 사용한다.

 

아래의 회전 변환 행렬의 경우, 각각 행 벡터와 열 벡터로 나타내면 다음과 같다.

 

행 벡터 cosθ, sinθ -sinθ, cosθ
열 벡터 cosθ,
-sinθ
sinθ,
cosθ

 

 

행렬의 덧셈, 뺄셈은 두 행렬의 크기가 같은 경우에만 성립한다.

 

 

행렬의 스칼라배 연산은 다음과 같다.

 

 

행렬의 전치 연산은 위 첨자 T로 표시하며, 행과 열을 바꾸는 연산이다.

  • m x n 크기 행렬에 전치 연산을 수행하면, n x m 크기의 행렬이 된다.

 

 

정방 행렬 중에 주 대각선(Principal diagonal) 원소들을 제외하고, 나머지 원소가 모두 0인 정방 행렬을 대각 행렬(Diagonal Matrix)이라고 한다.

 

 

이산 수학에서 가장 중요하다고 할 수 있는 행렬의 곱셈 연산은 다음과 같다.

  • 앞 행렬의 열의 개수와 뒤 행렬의 행의 개수가 같아야 수행할 수 있다.
  • 교환 법칙이 성립하지 않는다.
    A·B ≠ B·A
  • 결합 법칙은 성립한다.
    A·(B·C) = (A·B)·C

 

 

행렬 곱은 전치 연산에 대해 다음의 특징을 갖는다.

  • T(A·B) = T(A)·T(B)

 

 

행렬과 벡터의 곱셈을 수행하는 방식으로, 열 기준 행렬(Column major matrix)과 행 기준 행렬(Row major matrix)이 있다.

  • 열 기준 행렬 방식
    유니티
    OpenGL
  • 행 기준 행렬 방식
    언리얼 엔진
    DirectX

 

보통은 열 기준 방식을 많이 사용하고, 각 방식은 행렬과 벡터의 순서가 다르며 서로 전치되어 있다.

 

 

행렬 곱에 결합 법칙이 성립한다는 점을 이용해 그래픽 연산에서 최적화에 활용할 수 있다.

 

100개의 점으로 구성된 물체가 모니터에 출력되기 위해 거치는 선형 변환의 수가 A, B, C, D, E 총 5개라고 해보자.

  • 그냥 수행하면 100개 * 5번으로 해서 총 500번의 곱을 수행해야 한다.

 

하지만, 결합 법칙이 성립한다는 점을 활용하면 변환 F = E·D·C·B·A를 미리 계산할 수 있다.

  • 이때는 4번 + 100개 * 1번이 되므로, 104번의 곱으로 최적화할 수 있다.

 

보통 가상 공간에 하나의 캐릭터를 표현하는 데 약 10만 개의 점(Vertex)이 사용되므로, 최적화는 아주 중요한 요소이다.

'게임 수학 > 이득우의 게임 수학' 카테고리의 다른 글

역행렬  (0) 2023.04.13
행렬의 설계  (0) 2023.04.12
선형성과 선형 변환  (0) 2023.04.10
극좌표계  (0) 2023.04.09
삼각함수의 역함수  (0) 2023.04.08
profile

Make Unreal REAL.

@diesuki4

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

검색 태그