📄 d3dxmath.h
字号:
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dxmath.h
// Content: D3DX math types and functions
//
//////////////////////////////////////////////////////////////////////////////
#ifndef __D3DXMATH_H__
#define __D3DXMATH_H__
#include <d3d.h>
#include <math.h>
#include <limits.h>
#include "d3dxerr.h"
#ifndef D3DXINLINE
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE _inline
#endif
#endif
#pragma warning(disable:4201) // anonymous unions warning
typedef struct ID3DXMatrixStack *LPD3DXMATRIXSTACK;
// {E3357330-CC5E-11d2-A434-00A0C90629A8}
DEFINE_GUID( IID_ID3DXMatrixStack,
0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
//===========================================================================
//
// General purpose utilities
//
//===========================================================================
#define D3DX_PI ((float) 3.141592654f)
#define D3DX_1BYPI ((float) 0.318309886f)
#define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f))
#define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI))
//===========================================================================
//
// Vectors
//
//===========================================================================
//--------------------------
// 2D Vector
//--------------------------
typedef struct D3DXVECTOR2
{
#ifdef __cplusplus
public:
D3DXVECTOR2() {};
D3DXVECTOR2( const float * );
D3DXVECTOR2( float x, float y );
// casting
operator float* ();
operator const float* () const;
// assignment operators
D3DXVECTOR2& operator += ( const D3DXVECTOR2& );
D3DXVECTOR2& operator -= ( const D3DXVECTOR2& );
D3DXVECTOR2& operator *= ( float );
D3DXVECTOR2& operator /= ( float );
// unary operators
D3DXVECTOR2 operator + () const;
D3DXVECTOR2 operator - () const;
// binary operators
D3DXVECTOR2 operator + ( const D3DXVECTOR2& ) const;
D3DXVECTOR2 operator - ( const D3DXVECTOR2& ) const;
D3DXVECTOR2 operator * ( float ) const;
D3DXVECTOR2 operator / ( float ) const;
friend D3DXVECTOR2 operator * ( float, const D3DXVECTOR2& );
BOOL operator == ( const D3DXVECTOR2& ) const;
BOOL operator != ( const D3DXVECTOR2& ) const;
public:
#endif //__cplusplus
float x, y;
} D3DXVECTOR2, *LPD3DXVECTOR2;
//--------------------------
// 3D Vector
//--------------------------
typedef struct D3DXVECTOR3
{
#ifdef __cplusplus
public:
D3DXVECTOR3() {};
D3DXVECTOR3( const float * );
D3DXVECTOR3( const D3DVECTOR& );
D3DXVECTOR3( float x, float y, float z );
// casting
operator float* ();
operator const float* () const;
operator D3DVECTOR* ();
operator const D3DVECTOR* () const;
operator D3DVECTOR& ();
operator const D3DVECTOR& () 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;
public:
#endif //__cplusplus
float x, y, z;
} D3DXVECTOR3, *LPD3DXVECTOR3;
//--------------------------
// 4D Vector
//--------------------------
typedef struct D3DXVECTOR4
{
#ifdef __cplusplus
public:
D3DXVECTOR4() {};
D3DXVECTOR4( const float* );
D3DXVECTOR4( float x, float y, float z, float w );
// casting
operator float* ();
operator const float* () const;
// assignment operators
D3DXVECTOR4& operator += ( const D3DXVECTOR4& );
D3DXVECTOR4& operator -= ( const D3DXVECTOR4& );
D3DXVECTOR4& operator *= ( float );
D3DXVECTOR4& operator /= ( float );
// unary operators
D3DXVECTOR4 operator + () const;
D3DXVECTOR4 operator - () const;
// binary operators
D3DXVECTOR4 operator + ( const D3DXVECTOR4& ) const;
D3DXVECTOR4 operator - ( const D3DXVECTOR4& ) const;
D3DXVECTOR4 operator * ( float ) const;
D3DXVECTOR4 operator / ( float ) const;
friend D3DXVECTOR4 operator * ( float, const D3DXVECTOR4& );
BOOL operator == ( const D3DXVECTOR4& ) const;
BOOL operator != ( const D3DXVECTOR4& ) const;
public:
#endif //__cplusplus
float x, y, z, w;
} D3DXVECTOR4, *LPD3DXVECTOR4;
//===========================================================================
//
// Matrices
//
//===========================================================================
typedef struct D3DXMATRIX
{
#ifdef __cplusplus
public:
D3DXMATRIX() {};
D3DXMATRIX( const float * );
D3DXMATRIX( const D3DMATRIX& );
D3DXMATRIX( float m00, float m01, float m02, float m03,
float m10, float m11, float m12, float m13,
float m20, float m21, float m22, float m23,
float m30, float m31, float m32, float m33 );
// access grants
float& operator () ( UINT iRow, UINT iCol );
float operator () ( UINT iRow, UINT iCol ) const;
// casting operators
operator float* ();
operator const float* () const;
operator D3DMATRIX* ();
operator const D3DMATRIX* () const;
operator D3DMATRIX& ();
operator const D3DMATRIX& () const;
// assignment operators
D3DXMATRIX& operator *= ( const D3DXMATRIX& );
D3DXMATRIX& operator += ( const D3DXMATRIX& );
D3DXMATRIX& operator -= ( const D3DXMATRIX& );
D3DXMATRIX& operator *= ( float );
D3DXMATRIX& operator /= ( float );
// unary operators
D3DXMATRIX operator + () const;
D3DXMATRIX operator - () const;
// binary operators
D3DXMATRIX operator * ( const D3DXMATRIX& ) const;
D3DXMATRIX operator + ( const D3DXMATRIX& ) const;
D3DXMATRIX operator - ( const D3DXMATRIX& ) const;
D3DXMATRIX operator * ( float ) const;
D3DXMATRIX operator / ( float ) const;
friend D3DXMATRIX operator * ( float, const D3DXMATRIX& );
BOOL operator == ( const D3DXMATRIX& ) const;
BOOL operator != ( const D3DXMATRIX& ) const;
#endif //__cplusplus
union
{
float m[4][4];
#ifdef __cplusplus
struct
{
float m00, m01, m02, m03;
float m10, m11, m12, m13;
float m20, m21, m22, m23;
float m30, m31, m32, m33;
};
#endif //__cplusplus
};
} D3DXMATRIX, *LPD3DXMATRIX;
//===========================================================================
//
// Quaternions
//
//===========================================================================
typedef struct D3DXQUATERNION
{
#ifdef __cplusplus
public:
D3DXQUATERNION() {}
D3DXQUATERNION( const float * );
D3DXQUATERNION( float x, float y, float z, float w );
// casting
operator float* ();
operator const float* () const;
// assignment operators
D3DXQUATERNION& operator += ( const D3DXQUATERNION& );
D3DXQUATERNION& operator -= ( const D3DXQUATERNION& );
D3DXQUATERNION& operator *= ( const D3DXQUATERNION& );
D3DXQUATERNION& operator *= ( float );
D3DXQUATERNION& operator /= ( float );
// unary operators
D3DXQUATERNION operator + () const;
D3DXQUATERNION operator - () const;
// binary operators
D3DXQUATERNION operator + ( const D3DXQUATERNION& ) const;
D3DXQUATERNION operator - ( const D3DXQUATERNION& ) const;
D3DXQUATERNION operator * ( const D3DXQUATERNION& ) const;
D3DXQUATERNION operator * ( float ) const;
D3DXQUATERNION operator / ( float ) const;
friend D3DXQUATERNION operator * (float, const D3DXQUATERNION& );
BOOL operator == ( const D3DXQUATERNION& ) const;
BOOL operator != ( const D3DXQUATERNION& ) const;
#endif //__cplusplus
float x, y, z, w;
} D3DXQUATERNION, *LPD3DXQUATERNION;
//===========================================================================
//
// Planes
//
//===========================================================================
typedef struct D3DXPLANE
{
#ifdef __cplusplus
public:
D3DXPLANE() {}
D3DXPLANE( const float* );
D3DXPLANE( float a, float b, float c, float d );
// casting
operator float* ();
operator const float* () const;
// unary operators
D3DXPLANE operator + () const;
D3DXPLANE operator - () const;
// binary operators
BOOL operator == ( const D3DXPLANE& ) const;
BOOL operator != ( const D3DXPLANE& ) const;
#endif //__cplusplus
float a, b, c, d;
} D3DXPLANE, *LPD3DXPLANE;
//===========================================================================
//
// Colors
//
//===========================================================================
typedef struct D3DXCOLOR
{
#ifdef __cplusplus
public:
D3DXCOLOR() {}
D3DXCOLOR( DWORD argb );
D3DXCOLOR( const float * );
D3DXCOLOR( const D3DCOLORVALUE& );
D3DXCOLOR( float r, float g, float b, float a );
// casting
operator DWORD () const;
operator float* ();
operator const float* () const;
operator D3DCOLORVALUE* ();
operator const D3DCOLORVALUE* () const;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -