DD33DD中的向量
D3DXVECTOR3
DD33DDXXVVEECCTTOORR33表示三维向量;
*
**向量相等
1
.通过“==”来判断向量是否相等,具体如下:
D3DXVECTOR3 U(
1.
0F,
0.
0F,
1.
0F);
D3DXVECTOR3 v(
0.
0F,
1.
0F,
0.
0F);
If
(u==v)return
true
;
If
(u!=v)return
false
;
2
.判断浮点时应该定义一个“EPSILON”变量,如果两个浮点之间的差距小于
EPSILON就认为两个浮点数相等,具体如下:
const
float EPSILON =
0.
001f;
15
bool Equals(float 1hs,float rhs)
{
Return fabs(1hs - rhs)<EPSILON;
}
//完全不用在意这些事,因为D3DXVECTOR3的重载运算符已经完成了这些
功能
*D3D
**DD33DD向量模的计算
表示向量长度:
FLOAT D3DXVec3Length
(
CONST
D3DXVECTOR3 *PV
//需要求模的向量
)
例:
D3DVECTOR3 v(
1.
0f,
2.
0f,
3.
0f);
Float magnitude = D3DXVec3Length(&v);
*
**向量规格化
D3DXVECTOR3 *WINAPI D3DXVec3Normalize(
D3DXVECTOR3 *pOut,
//输出单位向量
CONST
D3DXVECTOR3 *pV
//输入的向量
);
*
**向量加法
D3DVECTOR3 U(
2.
0F,
0.
0F,
1.
0F);
D3DVECTOR3 V(
0.
0F,-
1.
0F,
5.
0F);
D3DVECTOR3 SUM = U + V;
*
**向量减法
D3DVECTOR3 U(
2.
0F,
0.
0F,
1.
0F);
D3DVECTOR3 V(
0.
0F,-
1.
0F,
5.
0F);
D3DVECTOR3 SUM = U - V;
*
**数乘
D3DVECTOR3 U(
2.
0F,
0.
0F,
1.
0F);
D3DVECTOR3 scaledVec = U *
10.
0f;
*
**点乘
FLOAT D3DXVec3Dot(
CONST
D3DVECTOR3 *PV1;
CONST
D3DVECTOR3 *PV2;
)
例:
D3DVECTOR3 U(
2.
0F,
0.
0F,
1.
0F);
D3DVECTOR3 V(
0.
0F,-
1.
0F,
5.
0F);
float dot = D3DXVec3Dot(&u,&v);