Direct3D中常用的数学计算方法

来源:互联网 发布:手机屏幕软件 编辑:程序博客网 时间:2024/05/16 05:43
Direct3D中常用的数学计算方法总结

 FLOAT D3DXVec3Length(CONST D3DXVECTOR3* pV)
 D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3* pOut,CONST D3DXVECTOR3* pV) 
 FLOAT D3DXVec3Dot(CONST D3DXVECTOR3* pV1,CONST D3DXVECTOR3* pV2)
 D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3* pOut,CONST D3DXVECTOR3* pV1,CONST D3DXVECTOR3* pV2)

 D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX* pOut,FLOAT* pDeterminant,CONST D3DXMATRIX* pM)
 D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX* pOut,CONST D3DXMATRIX* pM)


 D3DXMATRIX* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3* pOut,CONST D3DXVECTOR3* pV,CONST D3DXMATRIX* pM)
 D3DXMATRIX* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3* pOut,CONST D3DXVECTOR3* pV,CONST D3DXMATRIX* pM)

 D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX* pOut,FLOAT x,FLOAT y,FLOAT z)
 
 D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX* pOut,FLOAT sx,FLOAT sy,FLOAT sz) 

 D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX* pOut,FLOAT Angle) 
 D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX* pOut,FLOAT Angle) 
 D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX* pOut,FLOAT Angle)
 D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX* pOut,CONST D3DXVECTOR3* pV,FLOAT Angle) 
    
 D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE* pOut,CONST D3DXVECTOR3* pV1,CONST D3DXVECTOR3* pV2,CONST D3DXVECTOR3* pV3)  
 D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE* pOut,CONST D3DXVECTOR3* pV,CONST D3DXVECTOR3* pNormal)
 D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3* pOut,CONST D3DXPLANE* pP,CONST D3DXVECTOR3* pV1,CONST D3DXVECTOR3* pV2) 
 FLOAT D3DXPlaneDotCoord(CONST D3DXPLANE* pP,CONST D3DXVECTOR3* pV)  
 D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE* pOut,CONST D3DXPLANE* pP)   

typedef struct D3DXPLANE                         //平面

{
#ifdef __cplusplus
public:
    D3DXPLANE() {}
    D3DXPLANE( CONST FLOAT* );
    D3DXPLANE( CONST D3DXFLOAT16* );
    D3DXPLANE( FLOAT a, FLOAT b, FLOAT c, FLOAT d );
    operator FLOAT* ();
    operator CONST FLOAT* () const;
    D3DXPLANE& operator *= ( FLOAT );
    D3DXPLANE& operator /= ( FLOAT );
    D3DXPLANE operator + () const;
    D3DXPLANE operator - () const;


    // binary operators
    D3DXPLANE operator * ( FLOAT ) const;
    D3DXPLANE operator / ( FLOAT ) const;
    friend D3DXPLANE operator * ( FLOAT, CONST D3DXPLANE& );
    BOOL operator == ( CONST D3DXPLANE& ) const;
    BOOL operator != ( CONST D3DXPLANE& ) const;
#endif //__cplusplus
    FLOAT a, b, c, d;
} D3DXPLANE, *LPD3DXPLANE;

 D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(
  D3DXMATRIX* pOut,        
  CONST D3DXVECTOR3* pEye, 
  CONST D3DXVECTOR3* pAt, 
  CONST D3DXVECTOR3* pUp   
 );              
 
 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(
  D3DXMATRIX* pOut,     
  FLOAT fovy,           
  FLOAT Aspect,         
  FLOAT zn,           
  FLOAT zf    
 );   

0 0
原创粉丝点击