DirectX로 3D를 구현하기 위해서는 수학적인 준비가 필요하다.
3D를 구현하기 위해서 일단 벡터, 행렬에 대해서 기본적인 지식이 필요하다. 내 생각으론 고등학교 3학년 자연계열을 공부한 사람이라면 문제 없는 난이도라고 생각된다. (수2까지 마쳤을 경우)
간결히 기본적인 함수에는 이런 것들이 있다고만 하는 것을 정리해봤다. 자세한 설명은 따로 올릴 생각이다.
(사실은 군대를 다녀올 나를 위해서 정리해 놓는 것일뿐 ㅋ)
[ 3D-공간에서의 백터 표현 ]
typedef struct D3DXVECTOR3 : public D3DVECTOR
D3DXVECTOR3 ()
D3DXVECTOR3 ( CONST D3DXVECTOR& )
D3DXVECTOR3 ( FLOAT x, FLOAT y, FLOAT z )
ex) i = ( 10, 5, 7 ) -> D3DXVECTOR3( 10.0f , 5.0f, 7.0f )
[ 벡터의 크기 계산 ]
FLOAT D3DXVec3Length ( CONST D3DXVECTOR3* pV )
ex) D3DXVECTOR3 u( 10.0f , 5.0f , 7.0f )
float length = D3DXVec3Length ( &u )
[ 벡터의 정규화 ]
벡터의 크기를 1로 만들어 단위 벡터가 되가 하는 것으로 연산을 쉽게 하기 위해서 수행한다.
[ 여러가지 행렬 구하기 ]
항등행렬 :
D3DXMATRIX* D3DXMatrixIdentity ( D3DXMATRIX* pOut )
전치행렬 :
D3DXMATRIX* D3DXMatrixTranspose ( D3DXMATRIX* pOut , CONST D3DXMATRIX *pM )
역행렬 :
D3DXMATRIX* D3DXMatrixInverse ( D3DXMATRIX* pOut , FLOAT* pD , CONST D3DXMATRIX* pM )
[ 이동 행렬 구하기 ]
D3DXMATRIX* D3DXMatrixTranslation ( D3DXMATRIX* pOut , FLOAT x , FLOAT y , FLOAT z )
[ 회전 행렬 ]
D3DXMATRIX* D3DXMatrixRotationX ( D3DXMATRIX* pOut , FLOAT angle )
D3DXMATRIX* D3DXMatrixRotationY ( D3DXMATRIX* pOut , FLOAT angle )
D3DXMATRIX* D3DXMatrixRotationZ ( D3DXMATRIX* pOut , FLOAT angle )
[ 크기 변환 행렬 ]
D3DXMATRIX* D3DXMatrixScaling ( D3DXMATRIX* pOut , FLOAT sx, FLOAT sy, FLOAT sz )
[ 벡터 변환을 위한 함수 ]
D3DXVECTOR3* D3DXVec3TransformCoord ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pV ,
CONST D3DXVECTOR3* pM )
D3DXVECTOR3* WINAPI D3DXVec3TransformNormal ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pV,
CONST D3DXVECTOR3* pM )
3D를 구현하기 위해서 일단 벡터, 행렬에 대해서 기본적인 지식이 필요하다. 내 생각으론 고등학교 3학년 자연계열을 공부한 사람이라면 문제 없는 난이도라고 생각된다. (수2까지 마쳤을 경우)
간결히 기본적인 함수에는 이런 것들이 있다고만 하는 것을 정리해봤다. 자세한 설명은 따로 올릴 생각이다.
(사실은 군대를 다녀올 나를 위해서 정리해 놓는 것일뿐 ㅋ)
[ 3D-공간에서의 백터 표현 ]
typedef struct D3DXVECTOR3 : public D3DVECTOR
D3DXVECTOR3 ()
D3DXVECTOR3 ( CONST D3DXVECTOR& )
D3DXVECTOR3 ( FLOAT x, FLOAT y, FLOAT z )
ex) i = ( 10, 5, 7 ) -> D3DXVECTOR3( 10.0f , 5.0f, 7.0f )
[ 벡터의 크기 계산 ]
FLOAT D3DXVec3Length ( CONST D3DXVECTOR3* pV )
ex) D3DXVECTOR3 u( 10.0f , 5.0f , 7.0f )
float length = D3DXVec3Length ( &u )
[ 벡터의 정규화 ]
벡터의 크기를 1로 만들어 단위 벡터가 되가 하는 것으로 연산을 쉽게 하기 위해서 수행한다.
D3DXVECTOR3* D3DXVec3Normalize ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pV )
[ 벡터의 더하고 빼기 ]
D3DXVECTOR3 u( 10.0f , 5.0f, 7.0f )
D3DXVECTOR3 v( 0.0f , 5.0f, 3.0f )
D3DXVECTOR3 sum = u + v
D3DXVECTOR3 min = u - v
[ 스칼라곱 ]
D3DXVECTOR3 u( 10.0f , 5.0f, 7.0f )
D3DXVECTOR3 y = u * 10.0f
[ 내적과 외적 ]
내적 : FLOAT D3DXVec3Dot ( CONST D3DXVECTOR3* pA , CONST D3DXVECTOR3* pB )
외적 :
D3DXVECTOR3* D3DXVec3Cross ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pA , CONST D3DXVECTOR3* pB )
D3DXVECTOR3 u( 10.0f , 5.0f, 7.0f )
D3DXVECTOR3 v( 0.0f , 5.0f, 3.0f )
float dot = D3DXVec3Dot ( &u , &v )
D3DXVECTOR3 w;
D3DXVec3Cross ( &w , &u , &v )
[ 행렬 정의 ]
typedef struct D3DXMATRIX : public D3DMATRIX
D3DXMATRIX ()
D3DXMATRIX ( CONST FLOAT * )
D3DXMATRIX ( CONST D3DMATRIX& )
D3DXMATRIX ( CONST D3DXFLOAT16 * )
D3DXMATRIX (
[ 벡터의 더하고 빼기 ]
D3DXVECTOR3 u( 10.0f , 5.0f, 7.0f )
D3DXVECTOR3 v( 0.0f , 5.0f, 3.0f )
D3DXVECTOR3 sum = u + v
D3DXVECTOR3 min = u - v
[ 스칼라곱 ]
D3DXVECTOR3 u( 10.0f , 5.0f, 7.0f )
D3DXVECTOR3 y = u * 10.0f
[ 내적과 외적 ]
내적 : FLOAT D3DXVec3Dot ( CONST D3DXVECTOR3* pA , CONST D3DXVECTOR3* pB )
외적 :
D3DXVECTOR3* D3DXVec3Cross ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pA , CONST D3DXVECTOR3* pB )
D3DXVECTOR3 u( 10.0f , 5.0f, 7.0f )
D3DXVECTOR3 v( 0.0f , 5.0f, 3.0f )
float dot = D3DXVec3Dot ( &u , &v )
D3DXVECTOR3 w;
D3DXVec3Cross ( &w , &u , &v )
[ 행렬 정의 ]
typedef struct D3DXMATRIX : public D3DMATRIX
D3DXMATRIX ()
D3DXMATRIX ( CONST FLOAT * )
D3DXMATRIX ( CONST D3DMATRIX& )
D3DXMATRIX ( CONST D3DXFLOAT16 * )
D3DXMATRIX (
FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
[ 여러가지 행렬 구하기 ]
항등행렬 :
D3DXMATRIX* D3DXMatrixIdentity ( D3DXMATRIX* pOut )
전치행렬 :
D3DXMATRIX* D3DXMatrixTranspose ( D3DXMATRIX* pOut , CONST D3DXMATRIX *pM )
역행렬 :
D3DXMATRIX* D3DXMatrixInverse ( D3DXMATRIX* pOut , FLOAT* pD , CONST D3DXMATRIX* pM )
[ 이동 행렬 구하기 ]
D3DXMATRIX* D3DXMatrixTranslation ( D3DXMATRIX* pOut , FLOAT x , FLOAT y , FLOAT z )
[ 회전 행렬 ]
D3DXMATRIX* D3DXMatrixRotationX ( D3DXMATRIX* pOut , FLOAT angle )
D3DXMATRIX* D3DXMatrixRotationY ( D3DXMATRIX* pOut , FLOAT angle )
D3DXMATRIX* D3DXMatrixRotationZ ( D3DXMATRIX* pOut , FLOAT angle )
[ 크기 변환 행렬 ]
D3DXMATRIX* D3DXMatrixScaling ( D3DXMATRIX* pOut , FLOAT sx, FLOAT sy, FLOAT sz )
[ 벡터 변환을 위한 함수 ]
D3DXVECTOR3* D3DXVec3TransformCoord ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pV ,
CONST D3DXVECTOR3* pM )
D3DXVECTOR3* WINAPI D3DXVec3TransformNormal ( D3DXVECTOR3* pOut , CONST D3DXVECTOR3* pV,
CONST D3DXVECTOR3* pM )
'Programming > DirectX' 카테고리의 다른 글
| DirectX9 기본 구성 함수들 (0) | 2009/02/27 |
|---|---|
| DirectX9 개발환경설정 (추가종속성 설정 : error LNK2019 뜰 때) (0) | 2009/02/26 |