DirectX中的向量

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值