Graphics/DirectX

Direct 3D - 행렬기초

MOLOKINI 2014. 6. 19. 15:40
대문자는 큰거, 소문자와 숫자는 작은거 (이걸 표현할 방법이 없네요.. 감은 오시죠?)
 



선형 방정식
B = A1X1 + A2X2 + .... + AnXn                   .... [식1]

일반적인 경우, 상수 b를 만족하는 x1, x2, ... , xn의 값을 구하는 문제를 생각해 보자.
n개의 미지수로 이루어진 m개의 선형방정식은 다음과 같이 간단하게 표기할 수 있다.
A11X1+A12X2+....+A1nXn = B1
A21X2+A22X2+....+A2nXn = B2
..........................................
Am1X1+Am2X2+....+AmnXn = Bn                .... [식2]

그러므로, i번째 방정식은 Ai1X1+Ai2X2+....+AinXn = Bi

이제 [식2]를 풀기 위해 행렬이라는 것을 도입한다.
[A11 A12 ... A1n]
[A21 A22 ... A2n]
A =  [ ...   ...  ...  ... ]
[Am1 Am2 ... Amn]

가로로 배열된 행렬을 행이라구 하고, i번째 행은 다음과 같이 표기한다.
[Ai1, Ai2, ..., Ain]

세로로 배열된 행렬을 열이라구 하고, j번째 행은 다음과 같이 표기한다.
[A1j]
[A2j]
[....]
[Anj]

또한, Aij를 원소라 하며, m개의 행과 n개의 열을 갖는 행렬을 MxN 행렬이라고 한다.
특히 NxN행렬을 n차 정방행렬이라고 한다.
[1   2] [A11 A12 A13]
예)  [1 -1]  2차정방행렬 [A21 A22 A23] 3차정방행렬
[A31 A32 A33]

정방행렬 A에서 i = j일 때 Aij = 1이고, i != j일 때 Aij = 0인 행렬을 단위행렬이라고 하며, I또는 In이라 표시한다.
[1 0 0 0]
  [1 0] [1 0 0] [0 1 0 0]
예) I = [0 1], I3 = [0 1 0],  I4 =  [0 0 1 0]
[0 0 1] [0 0 0 1]
이것들은 단위행렬이다.

두 MxN행렬 A = (Aij)와 B = (Bij)의 합은 A + B = (Aij + Bij)와 같이 정의한다.
   [1 2]    [4 3] [1+4 2+3]    [5 5]
예) A = [3 4],   B = [2 1] 일 때, A+B =  [3+2 4+1] = [5 5] 이다.

A = (Aij)가 MxN행렬이고, B=(Bik)가 NxR행렬일 때, 두 행렬의 곱은 AB = [n시그마j=1 AijBjk]인 MxR 행렬이다.
(n이 위, j=1이 아래)
    [1  2]    [2 1]   [2   3]
예) A =[-1 3] , B = [0 1]일 때, AB = [-2 2] 이다.

그러니까, AB(2,2)를 구하고자 한다면, 앞행렬의 두번째행과 뒷행렬의 두번째열을 곱해서 다 더하면 되는거다!

이 행렬의 곱에서는 곱하는행렬과 곱해지는행렬이 다르면 결과가 다르다.

정방행렬 A에 대해 AX = I를 만족하는 정방행렬 X가 존재하면 X를 A의 역행렬이라 하고, X = A-1이라고 표기한다.(-1지수)

정방행렬을 단위행렬로 만들어주는 행렬 : 역행렬

행렬A의 행과 열을 바꾼 행렬을 전치행렬이라 하며, At(t지수)라고 표기한다. (즉 Atij = Aji)
  [A11 A12 A13] [A11 A21]
예) A = [A21 A22 A23]이면, At =  [A12 A22] 이다.
[A13 A23] 

'Graphics > DirectX' 카테고리의 다른 글

Direct 3D - 렌더링 파이프라인  (1) 2014.06.19
Direct 3D - 행렬  (0) 2014.06.19
Direct 3D - 벡터  (0) 2014.06.19
Direct 3D - 프레임워크  (0) 2014.06.19
Direct 3D - *인덱스 버퍼  (0) 2014.06.19