본문 바로가기
DirectX/[Inflearn_rookiss] Part2: DirectX12

8. 행렬

by 헛둘이 2023. 1. 19.

빨간 포탈, 초록 포탈, 파란 포탈이 있고 별이 있다.

별이 빨간 포탈에 들어가면 크기가 커지고,

초록 포탈에 들어가면 위치가 변경되고,

파란 포탈에 들어가면 회전한다

 

포탈은 행렬의 개념을 빗대어 표현한 것이고

별은 벡터를 표현한 것이다.

 

포탈(행렬)은 합쳐짐으로써 가진 속성들이 합쳐지고 별이 합쳐진 포탈에 들어가면 포탈들 각각의 효과를 다 받는다

->합쳐진다는 것은 행렬곱을 의미

 

- 행렬은 쉽게 생각하면 2차원 배열

 

1. 행렬의 스칼라곱

각 요소에 k를 곱해주면 된다

 

2. 행렬의 덧셈, 뺄셈

-> 행렬을 더하거나 빼려면 두 행렬의 포맷이 같아야 한다

-> 그리고 같은 위치에 있는 요소끼리 계산하면 된다.

대응되는 위치에 값끼리 계산

 

3. 행렬의 곱셈

-> 행렬의 곱셈도 정해진 포맷이 있다.

-> m x n = n x p이어야 한다

-> 즉 행렬 A의 과 행렬 B의 의 사이즈가 같아야 한다.

 

*행렬은 교환법칙이 성립하지 않는다

*하지만 분배법칙은 성립한다

 


행과 열이 일치하는 요소를 대각요소라고 한다.

대각요소

 

4. 대각행렬, 단위행렬

->대각요소만 채워지고 나머지는 0으로 밀린 행렬을 대각행렬이라고 한다.

대각행렬이자 단위행렬

->그리고 그 채워진 값들이 1로 이루어진 경우 단위행렬이라고 한다.

 

*단위행렬의 특징

-> 어떤 행렬 A에 단위 행렬을 곱하면 다시 행렬 A가 나온다

*이 단위행렬의 곱은 AI = A = IA가 성립한다 (교환법칙이 성립한다?)

 

 


5. 벡터와 행렬의 곱

 

4차원 벡터 v = (x, y, z ,1); (맨 뒤의 1은 다음에 설명)

 

이 벡터는 1x4 행렬로 볼 수 있다.

그러므로 곱해지는 행렬은 4x4가 되어야 한다

두 행렬이 곱해지려면 앞의 행렬의 열과 뒤 행렬의 행이 같아야 하니까

그런데 뒤 행렬의 열은 왜 4가 되지?

결과물을 1 x 4로 받으려면 4 x 4를 곱해야 하기 떄문

 

벡터 M과 A행렬, B행렬이 있을 때, AB가 I라면,

M X AB는 MI이므로 M이 된다.

그러므로 MA X B는 M이기 때문에 B는 A의 역행렬이다


6. 역행렬

 

어떤 행렬은 역행렬이 존재할 수도 있고 존재하지 않을 수도 있다.

Determinant라는 것을 통해 역행렬이 존재하는지 없는지 확인할 수 있다.

 

- A라는 행렬이 존재할 때 Det가 0이 아니라면 역행렬이 존재한다

- A의 역행렬은 그럼 다음과 같이 구할 수 있다.

 

 


7. 직교 행렬

 

v1, v2, v3는 각각 단위벡터이다

 

v1*v2 = 0

v2*v3 = 0

v1*v3 = 0

 

내적해서 0이 나온다면 두 벡터가 직각이라는 것

 

*전치행렬의 특이한 성질

M*M^T(전치) = I

M^T*M = I가 되는 성질이 있다.

(나중에 카메라 좌표계랑 엄청난 시너지 발휘)

따라서 직교행렬은 M^T = M^-1이 된다.

'DirectX > [Inflearn_rookiss] Part2: DirectX12' 카테고리의 다른 글

10. 좌표계 변환 행렬  (0) 2023.01.22
9. SRT 변환 행렬  (0) 2023.01.21
7. Component  (0) 2023.01.18
6. Material  (0) 2023.01.18
5. Depth Stencil Buffer/View  (0) 2023.01.17

댓글