게임 개발 자료/DirectX 스터디

행렬(Matrix) 스터디 - 개요, 기초, SRT(Scale, Rotation, Translation) 변환 행렬

원생계 2023. 9. 12. 18:37

행렬에 대한 스터디 노트


항등행렬 (Identity Matrix)

주어진 행렬과 곱했을 때 아무 변화도 주지 않는 정사각 행렬.

 

역행렬 Inverse Matrix)

곱했을 때 항등행렬이 되는 역할을 하는 행렬. 우측 상단에 -1 로 표기.


전치행렬 (Transpose Matrix)

원래 행렬의 행과 열을 바꾼 새로운 행렬. 우측 상단에 T 로 표기. (Transpose)

 

직교행렬 (Orthogonal Matrix)

행렬의 행끼리 또는 열끼리 서로 수직(직교)하고 크기가 1인 행렬.

 

(직교행렬의 역행렬은 전치행렬과 같다)


A 1x4 행렬과 B 4x4 행렬의 곱셈

 

C[1,1] = A[1,1]*B[1,1] + A[1,2]*B[2,1] + A[1,3]*B[3,1] + A[1,4]*B[4,1]
C[1,2] = A[1,1]*B[1,2] + A[1,2]*B[2,2] + A[1,3]*B[3,2] + A[1,4]*B[4,2]
C[1,3] = A[1,1]*B[1,3] + A[1,2]*B[2,3] + A[1,3]*B[3,3] + A[1,4]*B[4,3]
C[1,4] = A[1,1]*B[1,4] + A[1,2]*B[2,4] + A[1,3]*B[3,4] + A[1,4]*B[4,4]

 

결과 행렬 C는 1x4 크기의 행렬


SRT 행렬 알아보기.

Translation

동차 좌표계(Homogenous coordinate)

[x, y, z, w]

 

Translation Matrix

| 1  0  0  0 |
| 0  1  0  0 |
| 0  0  1  0 |
| dx dy dz  1 |

[x, y, z, w] * | 1  0  0  0 |   | x*1 + y*0 + z*0 + w*dx |
              | 0  1  0  0 |   | x*0 + y*1 + z*0 + w*dy |
              | 0  0  1  0 | * | x*0 + y*0 + z*1 + w*dz |
              | dx dy dz 1 |   | x*0 + y*0 + z*0 + w*1  |

 

Scale

Sacle 행렬은 mx, my, mz, 1 이 결과로 나오면 됨.

| Sx  0   0   0 |
| 0   Sy  0   0 |
| 0   0   Sz  0 |
| 0   0   0   1 |

 

Rotation

각 축에 대한 행렬을 각각 구한다.

순서대로

X축 기준 회전 행렬

Y축 기준 회전 행렬

Z축 기준 회전 행렬.

R_x(theta) = | 1       0           0          0 |
            | 0  cos(theta)  -sin(theta)  0 |
            | 0  sin(theta)   cos(theta)  0 |
            | 0       0           0          1 |

R_y(theta) = | cos(theta)   0   sin(theta)  0 |
            | 0            1        0       0 |
            | -sin(theta)  0   cos(theta)  0 |
            | 0            0        0       1 |

R_z(theta) = | cos(theta)  -sin(theta)  0  0 |
            | sin(theta)   cos(theta)  0  0 |
            | 0            0           1  0 |
            | 0            0           0  1 |

 

행렬 연산 순서

스자이공부

스케일, 자전, 이동, 공전, 부모행렬(부모변환)

 

참조

선형대수학 : https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99

행렬 : https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC

 

회전 : https://velog.io/@parksj3205/%EA%B2%8C%EC%9E%84%EC%88%98%ED%95%99%EC%9D%98-%EC%9D%B4%ED%95%B4-%EC%9D%B4%EB%93%9D%EC%9A%B0-%EA%B5%90%EC%88%98%EB%8B%98-%EA%B0%95%EC%9D%98-%EC%A0%95%EB%A6%AC-5.-%ED%9A%8C%EC%A0%84%EC%9D%98-%EC%88%98%ED%95%99-%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98

 

[게임수학의 이해 이득우 교수님 강의 정리] 5. 회전의 수학Ⅰ : 삼각함수

앞에서 다룬 트랜스폼은 크기, 회전, 이동을 순서대로 진행하는 합성 변환임.이 중에서 회전은 별도의 주제로 분리하여 설명해야할 정도로 독특한 변환.image현실 세계에서 회전을 할 경우, 중심

velog.io

 

삼각함수의 덧셈정리

sin(α±β)  = sinα cosβ ± cosα sinβ

cos(α±β) =cosα cosβ ∓ sinα sinβ

 

.


<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas

 

리얼-타임 렌더링 4/e

COUPANG

www.coupang.com

<DirectX 12를 이용한 3D 게임 프로그래밍 입문> 구입 링크
https://link.coupang.com/a/8V4Wq

 

DirectX 12를 이용한 3D 게임 프로그래밍 입문:게임 개발 중심으로 익히는 대화식 컴퓨터 그래픽 프

COUPANG

www.coupang.com

유니티 에셋 스토어 링크

https://assetstore.unity.com?aid=1011lvz7h 

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)


728x90
반응형