새소식

인기 검색어

게임 개발/그래픽스

행렬

  • -

핵심

어떤 벡터를 이동, 회전, 스케일링 등등 Transformation 을 가하고 싶으면, 그 벡터에 행렬을 곱하면 된다.

행렬 표기법

row, column

행, 열

그림에서 행렬 B는 3x2 행렬 

directX 에서는 u와 같은 row vector를 선호

Row Vector

Column Vector

행렬 더하기

주의: 크기가 다른 행렬끼리는 더할 수 없다. 예) C+D=? 불가능

컴퓨터에게 연산을 시킬때, r(A+B)라고 계산을 시키는 쪽이 rA+rB 계산 시키는 쪽 보다 빠를것이다.

r(A+B): 덧셈4번, 곱셈4번

rA+rB: 덧셈4번, 곱셈8번

같은 이유로 (r+s)A 가 rA + sA보다 더 빠름

행렬 곱하기

행렬끼리도 크기가 맞아야 한다.

예를들어 다음과 같은 AB의 곱셈은 불가.

AB와 BA는 다르다.

벡터-행렬 곱하기

선형 결합 (Linear Combination)

결합 법칙

주의: AB != BA 다.

저 위의 결합 법칙은 AB C 와 A BC가 같다는 의미. (엄연히 다르다)

전치 행렬 (Transpose)

단위 행렬 (Identity Matrix)

일반 숫자에서 1이라는 숫자의 존재와 비슷함.

소행렬 (Minor Matrix)

역행렬을 구하기 위해 소행렬을 배운다.

어떤 물체를 30도 회전, 5만큼 이동 등 Transformation을 가하고, 다시 원래대로 돌리고 싶으면, 역행렬을 구하면 됨.

다만, 그래픽스에서는 역행렬을 구하는 것 보다 역변환을 하는것이 더 빠르기 때문에 역변환을 더 자주 사용함.

행렬식(Determinant)

어떤 행렬의 Determinant를 구할때 Minor Matrix 형태로 적을 수 있다.

어떤 행렬의 판별식, 어떤 행렬의 절댓값이다.

쁠마쁠마 교차하면서 나옴.

재귀적으로 det을 구하는 방식.

여인수 행렬 (Cofactor Matrix)

수반 행렬 (Adjoint Matrix)

역행렬 (Inverse Matrix)

주의: A^-1 이라고 표기했다고 1/A 한다고 구해지는것이 아님.

일반적인 행렬연산에서 역행렬은 매우 비싸고 복잡한 연산.

그러나 그래픽스에서는 좀 직관적으로 생각할 수 있음.

 

예) 오른쪽으로 10걸음 걸어간 것을 행렬로 표현했다.

그 행렬의 역행렬은 무슨 의미?

왼쪽으로 10걸음 걸어간 행렬.

 

컴퓨터 프로그래밍에서는 제한적인 상황에서 역변환을 통해 역행렬을 효과적으로 구할 수 있다.

 

모든 정방행렬이 역행렬을 가질 수 있는 것은 아니다:

0행렬은 역행렬 못구함 det 안됨

'게임 개발 > 그래픽스' 카테고리의 다른 글

선형 변환 (Linear Transformation)  (0) 2023.11.18
변환 (Transformations)  (1) 2023.11.17
벡터  (0) 2023.11.12
조명  (0) 2023.11.11
블린-퐁 쉐이딩 (Blinn-Phong Shading)  (0) 2023.11.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.