1.向量:只是描述了长度和方向在D3DX库中描述如下:
typedef struct D3DXVECTOR3 : public D3DVECTOR
{
public:
D3DXVECTOR3() {};
D3DXVECTOR3( CONST FLOAT * );
D3DXVECTOR3( CONST D3DVECTOR& );
D3DXVECTOR3( CONST D3DXFLOAT16 * );
D3DXVECTOR3( FLOAT x, FLOAT y, FLOAT z );
// casting
operator FLOAT* ();
operator CONST FLOAT* () const;
// assignment operators
D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& );
D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& );
D3DXVECTOR3& operator *= ( FLOAT );
D3DXVECTOR3& operator /= ( FLOAT );
// unary operators
D3DXVECTOR3 operator + () const;
D3DXVECTOR3 operator - () const;
// binary operators
D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const;
D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const;
D3DXVECTOR3 operator * ( FLOAT ) const;
D3DXVECTOR3 operator / ( FLOAT ) const;
friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& );
BOOL operator == ( CONST D3DXVECTOR3& ) const;
BOOL operator != ( CONST D3DXVECTOR3& ) const;
} D3DXVECTOR3, *LPD3DXVECTOR3;
D3DX库中提供了D3DXVECTOR2和D3DXVECTOR4表示2D和4D向量
常用方法:
1.计算向量的长度:
在D3DX库中利用下列函数计算向量的摸
FLOAT D3DXVec3Length(CONST D3DXVECTOR3*pV);
D3DXVECTOR3 v(1.0f,2.0f,3.0f) ;
float magnitude = D3DXVEC3Length(&v);
2.向量的规范化:
D3DXVECTOR3* D3DXVec3Normalize(D3DXVECTOR3*pOut,CONST D3DXVECTOR3*pV);
3.向量加减数乘:重载过的算术运算符
4.点积:
FLOAT D3DXVec3Dot(CONST D3DXVECTOR3*pV1,CONST D3DXVECTOR3*pV2);
D3DXVECTOR3 u(1.0f,-1.0f,0.0f);
D3DXVECTOR3 v(3.0f,2.0f,1.0f);
float dot = D3DXVec3Dot(&u,&v);
5.叉乘:
用右手定则或者左手定则判断方向:主要看是采用右手坐标系还是左手坐标系
D3DXVECTOR3*D3DXVec3Cross(D3DXVECTOR3*pOut,CONST D3DXVECTOR3*pV1,CONST D3DXVECTOR3*pV2);