응애맘마조
221215 강의 본문
어제 말했던대로 오늘은 행렬을 했습니다. 행렬은 어렵기도 하지만 굉장히 중요한 부분입니다. 여기서 이해를 못한다면 그 다음부터 전부 이해하기 힘들어져서 많이 집중 좀 했습니다.
행렬은 행(가로)과 열(세로)로 이루어져 있습니다.
여기서 단위행렬은 E라고 표기하겠습니다.
행렬에 곱셈을 했을 때 자기 자신이 나오게 하는 행렬을 단위행렬이라고 합니다.
단위행렬을 식으로 표현하면 A × E = A가 나옵니다.
주대각선이 1이고 나머지가 0인 행렬입니다.
행과 열이 같은 행렬을 정사각 행렬이라고 합니다.
어떤 수를 곱해도 0이 나오는 행렬을 영행렬이라고 합니다.
영행렬을 식으로 표현하면 A × 0 = 0이 나옵니다.
자신과 어떠한 행렬을 곱했을때 1이 나오게 하는 행렬을 역행렬이라고 합니다.
역행렬을 식으로 표현하면 A ^ -1 = A × A^ -1 = E입니다.
행과 열이 뒤바뀌는 행렬을 전치행렬이라고 합니다.
전치행렬을 식으로 표현하면 At입니다.
행렬에서도 가장 중요한건 곱연산입니다.
과제에서도 작성했지만 해당되는 행과 해당되는 열을 곱한 행렬을 행렬의 곱연산이라고 합니다.
반드시 해당되는 행과 해당되는 열의 원소 수가 같아야만 곱셈이 가능합니다.
다르면 다른 방법이 있는게 아니고 곱셈 자체가 불가능합니다.
방법은 행렬 과제의 게시물을 참고하시면 될 것 같습니다.
https://keisukeaso.tistory.com/31
행렬을 전치행렬로서 바꾸면 행과 열의 원소 위치가 바뀌게 됩니다.
따라서 행렬은 교환법칙이 성립되지 않습니다.
행렬에는 행 우선, 열 우선으로 하는 방법이 있습니다.
프로그램자체에서는 열 우선으로 되어 있습니다.
하지만 강의에서는 행 우선으로 하게 되고 전치행렬을 함으로써 열 우선으로 바꾸는 방식으로 하게 됩니다.
정점(Vertex)을 찍는 데에는 크기(Scale), 회전(Rotation), 변환(Translation)이 있습니다.
줄여서 각각 S, R, T를 사용하며 그래픽으로 구현 할 때는 S × R × T가 공식입니다.
S, R, T 말고도 W가 있는데 동차이며 지금은 1로 하고 프로그래머가 직접 채우는 값은 아니라고 합니다.
자세한건 추후에 한다고 했습니다.
크기행렬은(Scale Matrix)라고 하며
공식은 Vertex * SM = (x * Sx, y * Sy, z * Sz, w)입니다.
회전행렬은(Rotation Matrix)라고 하며
왼손 좌표계의 z축을 사용합니다.
공식은 Vertex * RM = (θ만큼 회전된 x, θ만큼 회전된 y, z, w)입니다.
변환행렬은(Transform Matrix)라고 하며
공식은 Vertex * TM = (x + Tx, y + Ty, z + Tz, w)입니다.
내일은 벡터에 대해서 합니다.
STL에 있는 벡터가 아니고 크기와 방향에 관련된 벡터입니다.
읽어주셔서 감사합니다.