내적의 특성
- 만약 u · v = 0 이라면 u와 v는 수직이다.
- 만약 u · v > 0라면, 두 벡터간의 각도는 90보다 작다.
- 만약 u · v < 0라면, 두 벡터간의 각도는 90보다 크다.
내적 구하기 예제
FLOAT D3DXVec3Dot( // 결과를 리턴한다
CONST D3DXVECTOR3* pV1, // 왼쪽 피연산자
CONST D3DXVECTOR3* pV2 // 오른쪽 피연산자
);
D3DXVECTOR3 u(1.0f, -1.0f, 0.0f);
D3DXVECTOR3 v(3.0f, 2.0f, 1.0f);
// 1.0*3.0 + -1.0*2.0 + 0.0*1.0
// = 3.0 + -2.0
float dot = D3DXVec3Dot( &u, &v ); // = 1.0
CONST D3DXVECTOR3* pV1, // 왼쪽 피연산자
CONST D3DXVECTOR3* pV2 // 오른쪽 피연산자
);
D3DXVECTOR3 u(1.0f, -1.0f, 0.0f);
D3DXVECTOR3 v(3.0f, 2.0f, 1.0f);
// 1.0*3.0 + -1.0*2.0 + 0.0*1.0
// = 3.0 + -2.0
float dot = D3DXVec3Dot( &u, &v ); // = 1.0
외적의 특성
스칼라로 계산되는 내적과는 달리 외적은 다른 벡터로 계산되는데, u와 v 두 벡터의 외적을 수행하면, 다른 벡터인 p를 얻으며, 이는 u와 v에 서로 직각을 이룬다. 즉, p는 u에 직각이며, p는 v에 직각이다.
- p = u × v = [ (uyvz - uzvy), (uzvx - uxvz), (uxvy - uyvx) ]
- px = (uyvz - uzvy)
- py = (uzvx - uxvz)
- pz = (uxvy - uyvx)
내적 구하기 예제
D3DXVECTOR3* D3DXVec3Cross(
D3DXVECTOR3* pOut, // 결과를 리턴한다
CONST D3DXVECTOR3* pV1, // 왼쪽 피연산자
CONST D3DXVECTOR3* pV2 // 오른쪽 피연산자
);
D3DXVECTOR3* pOut, // 결과를 리턴한다
CONST D3DXVECTOR3* pV1, // 왼쪽 피연산자
CONST D3DXVECTOR3* pV2 // 오른쪽 피연산자
);