행렬은 변화를 나타낸다. S R T 포탈
SRT를 통합한 포탈로 만들 수도 있다.
1. 행렬의 연산
1) 행렬의 사칙연산
그 중에서 행렬의 곱
mxn * nxp = mxp
여러개의 포털을 합칠 때 사용하는게 행렬의 곱이다.
2)교환법칙, 결합법칙 성립하나?
교환법칙 성립 안함
AxB != BxA
결합법칙은 성립함
(AxB)xC = Ax(BxC)
3) 항등행렬
대각선만 1이고 나머지 0인 행렬
A x I = A
I x A = A
4) 역행렬
AB = I
MAB = M(AB) = MI = M
A가 변화를 줬는데 그걸 상쇄 시키는게 B라는 거
그걸 역행렬이라 한다.
A x (A의 역행렬) = I
(A의 역행렬) x A = I
->증명 A(A의 역행렬xA) = (AxA의 역행렬)xA = IA = A
역행렬 어떻게 구할까?
행렬의 개수가 늘어나면 공식이 복잡해진다. 인터넷 찾아보면 나온다.
D = ad - bc != 0 이러면 역행렬 존재하는 거 0이면 역행렬이 없다는 거
역행렬 구하는 공식
5) 전치행렬
대각선을 기준으로 뒤집는 거
두번하면 당연히 자기 자신이 튀어 나오는 거
의미는 역행렬을 구할 때 도움이 되는 경우가 있다.
행렬 중에서 직교행렬이란 게 있는데
0 0 1
1 0 0
0 1 0
각 행을 벡터로 표현한다 가정을 하면
v1 내적 v2
v2 내적 v3
v3 내적 v1
각각의 연산이 0이 뜬다는 것을 알 수 있다.
이게 무슨 의미일가? 다 직각이란 의미이다.
이처럼 각 성분들이 서로 직각인 걸 직교 행렬이라고 한다.
xyz 축도 서로 수직이다.
재밌는 특징 - 직교행렬인 경우
M x (M의 전치 행렬) = (M의 전치 행렬) x M = I 이렇게 나온다.
M이 직교일 때 역행렬 구하고 싶으면 공식 쓸 필요 없이 transpose(전치행렬)를 해버리면 그게 바로 역행렬이다.
2. 벡터에 행렬을 곱하는 것의 의미
게임에서 vector를 이용해서 좌표나 방향을 표현한다.
크기와 방향을 갖고있는 개념의 벡터가 있다면, 벡터를 행렬로 표시한다면 1x4 행렬로 표현 가능해.
x,y,z,1 에서 왜 1을 추가했느냐는 다음 시간에 알아 볼 것이다.
(행렬) x (행렬)을 이용해 벡터에 어떠한 변화를 (4x4 행렬)로 표현할 수 있다는 말이 된다.
4x4의 행렬을 채우면 1x4 벡터에 관련된 연산을 간단하게 표현할 수 있다.
x,y,z의 벡터가 4x4 행렬 포탈을 만나서 들어가 나오면 x,y,z에 변화가 이루어진다.
새부적으로 각 위치에 어떤 숫자 넣을지만 골라주면 S,R,T 뭔가가 변화가 되는 포탈 만들 수 있다.
지난 시간에 offset이란 개념으로 넣어줬는데 그건 벡터와 벡터끼리 덧셈을 해준거
회전 같은 거 행렬의 값들만 지정해 주면 의도하는 변화를 줄 수 있다.
다음 시간부터 세부적 값을 어떻게 채우는지 본다.
'DirectX' 카테고리의 다른 글
11. 좌표계 변환 (0) | 2023.12.19 |
---|---|
10. SRT 변환 행렬 (0) | 2023.12.18 |
8. 행렬 OT (0) | 2023.12.17 |
7. RasterizerState, SampleState, BlendState (0) | 2023.12.14 |
6. ConstantBuffer (0) | 2023.12.13 |
댓글