您的位置:首页 > 其它

DirectX学习——数学基础(1)

2015-10-16 13:32 239 查看
向量的基本运用:

创建3D向量:

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;
以上是3D向量在头文件的声明,有4个构造函数,有4种创建方式。
//创建示例
#include <Windows.h>
#include <D3dx9math.h>
#include <d3dx11.h>

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
{
D3DXVECTOR3 v1;//默认构造函数创建的3个分量值是随机的
FLOAT temp[] = { 1.2f, 1.3f, 0.5f };
D3DXVECTOR3 v2(temp);
D3DXVECTOR3 v3(1.0f, 2.5f, -0.4f);
D3DXVECTOR3 v4(v2);

return 0;
}


向量间的运算:可以进行基本的运算,如头文件所述。

还有一些3D向量的函数

//计算向量的长度
D3DXINLINE FLOAT D3DXVec3Length
    ( CONST D3DXVECTOR3 *pV )
//计算向量的点积
D3DXINLINE FLOAT D3DXVec3Dot
( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
//计算向量的叉积,第一个参数指定结果储存的地址
D3DXINLINE D3DXVECTOR3* D3DXVec3Cross
    ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: