Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[Direct X] 행렬 본문

DirectX 9

[Direct X] 행렬

Unknowns 2021. 11. 13. 21:43

행렬

D3DXMATRIX = 월드행렬

float 형 16개를 가지고있다

헝가리안 표기법으로 mat을붙인다

 

행렬 : 숫자들의 집합 상태를 행(가로)과 열(세로)로 모아놓은 상태

행렬의 사용 이유 : 객체의 여러 상태 (크기,회전,위치)를 표현하기 위해서 사용한다.

4*4 행렬을 제공한다. 행과 열의 개수를 일치하는 행렬을 가리켜 '정방 행렬' 이라 말한다.

3차원 컴퓨터 그래픽에서 행렬은 공간상의 한 점이나 벡터의 비례나 회전, 이동 같은 기하학적 변환을 이룰 수 있는 수학적 도구이다. mxn 행렬 M은 m개의 행(가로)과 n개의 열(세로)로 이루어진 실수들의 배열이다.

 

 

1. 4 x 4 정방행렬을 사용한다.(연산의 편리성, 결과 값을 같은 형태로 도출)

2. 주로 덧,뺄셈 보다는 곱셈을 사용하게 된다.

3. 행(가로)의 수가 앞, 열(세로)의 수가 뒤.

4. 항등행렬이란 행렬의 크기가 1인 상태를 의미하고, 일반적으로 원소의 대각선 부분들은 1로 채워져있고 나머지는 0으로 채워진 상태를 말한다. 이런 항등행렬 상태를 가르켜 '행렬이 초기화 되었다' 라고 말한다.

 

(주의점)

 

행렬의 곱셈 시 교환 법칙이 항상 성립하지는 않는다는 사실을 알아야 한다.

그래서 후에 여러 행렬들을 곱하기 하여 결과 행렬을 만들어내는데 곱하기 순서를 반드시 지켜야 한다.

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

예외적으로 항등 행렬과 어떤 상태 행렬이 곱셈을 할 경우엔 교환 법칙이 항상 성립한다.

 

Ex) A * I == I * A

 

Ex) A(4 X 4) * B(4 X 4) == C(4 X 4)

V(1 X 3) * M(4 X 4) ? 이 경우에는 곱셈이 성립하지 않는다.

 

5. 행렬 곱셈을 하기 위해서는 앞선 행렬의 열과 뒤의 행렬의 행의 값이 일치해야 곱셈이 성립한다.

6. A행렬과 A행렬의 역행렬을 곱하면 항등 행렬이 된다.

7. 같은 공간상에서만 연산을 수행할수있다 (서로 다른 객체가 다른공간에 있을떄 연산을하면 모르는값)

 

 

 

 

 

 

행렬 함수

항등 행렬을 만들어주는 함수(행렬 초기화)
D3DXMatrixIdentity(&m_tInfo.matWorld);

인자 : 반환값

크기 변환 행렬을 만들어주는 함수
D3DXMatrixScaling(&matScale, X, Y, Z);

인자 : 반환값, x좌표, y좌표, z좌표

회전 변환 행렬을 만들어주는 함수
D3DXMatrixRotationX(&matRotX, Angle);
D3DXMatrixRotationY(&matRotY, Angle);
D3DXMatrixRotationZ(&matRotZ, Angle);

인자 : 반환값 , 각도

이동 변환 행렬을 만들어주는 함수
D3DXMatrixTranslation(&matTrans, X, Y, Z);

인자 : 반환값, x좌표, y좌표, z좌표

역행렬을 만들어주는 함수
D3DXMatrixInverse()

벡터와 행렬의 곱셈을 수행하는 함수
D3DXVec3TransformCoord(&m_vPosin, &m_vPosin, &m_tInfo.matWorld)

-> 위치 벡터와 행렬 -> 위치 벡터

인자 : 반환값 , 백터 , 행렬


 D3DXVec3TransformNormal(&m_tInfo.vDir, &m_tInfo.vLook, &m_tInfo.matWorld)

-> 방향 벡터와 행렬 -> 방향 벡터

인자 : 반환값 , 백터, 행렬

 

'DirectX 9' 카테고리의 다른 글

[Direct X] Direct X 기본 개념  (0) 2021.11.17
[Direct X] 벡터(Vector), 연산자, 내적, 외적  (1) 2021.11.11
[Direct X] Direct X 시작하기  (0) 2021.11.11