- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[DirectX] 행렬 / 행렬의 연산 본문
행렬의 표현
Direct3D에서는 4 X 4 크기의 행렬만 지원한다.
4 X 4 행렬의 표현을 위해서 C++ 구조체 타입인 D3DXMATRIX를 제공한다.
행렬에 대한 연산자 겹지정(operator overloading)과
타입 변환(type casting)의 장점을 지원한다.
D3DXMATRIX에서는 먼저 변수만 선언하고, 이후에 행렬을 채우는 식의 작업이 일반적이다.
D3DXMATRIX mat; // Direct3D에서 4 X 4행렬의 표현을 위한 D3DXMATRIX타입 변수선언
ZeroMemory (&mat, sizeof(D3DXMATRIX)); // 0으로 초기화
위와같이 0으로 초기화 한후 아래와 같이 값을 대입할 수 있다.
mat._11 = 0.64f;
mat._22 = 0.48f;
겹지정 연산자를 통한 행렬 연산
이항연산으로 행렬간의 덧셈, 뺄셈, 곱셈 연산이 정의되어 있다.
또한 행렬과 스칼라와의 곱셈, 나눗셈 연산이 정의되어 있다.
단항연산으로 '+'와 '-'가 정의되어 있다.
D3DXMATRIX A, B, C;
C = A * B;
원소를 접근하는 연산이 정의되어 있다. A(0, 1)은 첫 번째 행의 두번째 열을 의미한다.
또한 A._01 도 같은 의미이다.
A(0, 1) = -1.1f;
A._12 = 1.1f;
행렬 변수에 대해 (FLOAT*)로 타입변환을 하면 float형 배열을 되돌려 준다.
아래와 같이 실행하면, f[0], f[1], f[2], .... , f[15]는 A(0,0), A(0,1), ... , A(3, 3)에 해당한다.
float* f = (FLOAT*)A;
두 행렬의 비교를 위한 == 와 != 연산이 정의되어 있다. 두 행렬의 모든 원소가 동일한지를 판단한다.
행렬 연산 함수를 통한 행렬 연산
행렬과 관련된 여러 연산 함수가 정의되어 있다.
D3DXMatrixIdentity(&A); // 행렬 A가 항등행렬(identity matrix)이 되도록 한다.
D3DXMatrixTranspose(&B, &A); // 행렬 A의 전치행렬을 계산해서 B에 저장한다.
D3DXMatrixInverse(&B, 0, &A); // 행렬 A의 역행렬(inverse matrix)를 계산해서 B에 넣는다.
- 두번째 인자는 행렬식(determinant) 값을 얻기 위한 용도이며 필요하지 않으면 0을 지정한다.
- 만약 행렬 A의 행렬식 값도 필요하다면 다음과 같이 하면 된다.
-> FLOAT determinant;
D3DXMatrixInverse(&B, &determinant, &A);
[출처] [DirectX] 행렬 / 행렬의 연산|작성자 yhWoo
'★─Programing > ☆─DirectX' 카테고리의 다른 글
[DirextX] 평면 (0) | 2010.02.17 |
---|---|
[DirectX] 변환 / 변환행렬 (0) | 2010.02.17 |
[DirectX] 벡터 / 벡터의 연산 (0) | 2010.02.17 |
[DirectX] 선형대수의 기초 - 행렬(Matrix) (0) | 2010.02.17 |
[DirectX] 선형대수의 기초 - 벡터(vector) (0) | 2010.02.17 |