1.加法
D3DXVECTOR3 * D3DXVec3Add( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2 );
2.减法:
D3DXVECTOR3 * D3DXVec3Subtract( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2 );3.点积
FLOAT D3DXVec3Dot( CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2 );4.叉积,叉积的结果值是另一个向量。通过把两个向量 u和 v相乘得到另一的向量 p,向量 p垂直于 u和 v。也就是说向量 p垂直于 u并且垂直于 u。
D3DXVECTOR3 * D3DXVec3Cross( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2 );
D3DXVECTOR3 v; v.x = pV1->y * pV2->z - pV1->z * pV2->y; v.y = pV1->z * pV2->x - pV1->x * pV2->z; v.z = pV1->x * pV2->y - pV1->y * pV2->x; *pOut = v;5.得到向量的长度
FLOAT D3DXVec3Length( CONST D3DXVECTOR3 * pV );6.返回在一个三角形中的重心
指定3个point,并给出U,V(权值)
D3DXVECTOR3 * D3DXVec3BaryCentric( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2, CONST D3DXVECTOR3 * pV3, FLOAT f, FLOAT g );
7.将向量标准化,标准化向量是让向量的大小等于1,即被叫作单位向量
D3DXVECTOR3 * D3DXVec3Normalize( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV );8、 D3DXVec3TransformCoord函数变换点同时设置向量第4个成员为1(用于 变换点向量)
D3DXVECTOR3 *D3DXVec3TransformCoord(
D3DXVECTOR3*pOut, // 返回的点向量
CONSTD3DXVECTOR3* pV, // 点向量
CONSTD3DXMATRIX* pM // 变换矩阵
);
D3DXMATRIXT(...); // 初始化矩阵
D3DXVECTOR3p(...); // 初始化点
D3DXVec3TransformCoord( &p, &p, &T);// 变换一个点9、D3DXVec3TransformNormal函数变换向量并且设置第4个成员为0(用于变换方向向量)
D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal(
D3DXVECTOR3*pOut, //返回的方向向量
CONSTD3DXVECTOR3 *pV, // 方向向量
CONSTD3DXMATRIX *pM //变换矩阵
);
D3DXMATRIXT(...); // 初始化变换矩阵
D3DXVECTOR3v(...); // 初始化方向向量
D3DXVec3TransformNormal( &v, &v,&T); // 变换方向向量注意:D3DX库也提供D3DXVec3TransformCoordArray和D3DXVec3TransformNormalArray来分别变换一个点数组和向量数组
10、向量缩小放大函数
D3DXVECTOR3 * D3DXVec3Scale( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV, FLOAT s );
10、根据interpolate算出两个向量的线性插值
D3DXVECTOR3 * D3DXVec3Lerp( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2, FLOAT s );[in, out] pOut:指向 D3DXVECTOR3 结构的操作结果。
[in] pV1:指向 D3DXVECTOR3 结构的源向量。
[in] pV2:指向 D3DXVECTOR3 结构的源向量。
[in] s:两个向量插值参数。
11、 D3DXVec3Hermite:艾米插值
D3DXVECTOR3 * D3DXVec3Hermite( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pT1, CONST D3DXVECTOR3 * pV2, CONST D3DXVECTOR3 * pT2, FLOAT s );
12、D3DXVec3CatmullRom 函数:Catmull-Rom插值
D3DXVECTOR3 * D3DXVec3CatmullRom( D3DXVECTOR3 * pOut, CONST D3DXVECTOR3 * pV0, CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2, CONST D3DXVECTOR3 * pV3, FLOAT s );