3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2007 David Adam
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2007 Tony Wasserka
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <d3dx9.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef __D3DX9MATH_H__
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __D3DX9MATH_H__
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <math.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define D3DX_PI ((FLOAT)3.141592654)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define D3DX_1BYPI ((FLOAT)0.318309886)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define D3DXSH_MINORDER 2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define D3DXSH_MAXORDER 6
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXVECTOR2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2(FLOAT fx, FLOAT fy);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2& operator += (const D3DXVECTOR2&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2& operator -= (const D3DXVECTOR2&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2& operator *= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2& operator /= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2 operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2 operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2 operator + (const D3DXVECTOR2&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2 operator - (const D3DXVECTOR2&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2 operator * (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR2 operator / (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync friend D3DXVECTOR2 operator * (FLOAT, const D3DXVECTOR2&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXVECTOR2&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXVECTOR2&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT x, y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXVECTOR2, *LPD3DXVECTOR2;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXVECTOR3 : public D3DVECTOR
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3(const D3DVECTOR& v);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3& operator += (const D3DXVECTOR3&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3& operator -= (const D3DXVECTOR3&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3& operator *= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3& operator /= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 operator + (const D3DXVECTOR3&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 operator - (const D3DXVECTOR3&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 operator * (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 operator / (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync friend D3DXVECTOR3 operator * (FLOAT, const struct D3DXVECTOR3&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXVECTOR3&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXVECTOR3&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXVECTOR3, *LPD3DXVECTOR3;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* !__cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* !__cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXVECTOR4
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4& operator += (const D3DXVECTOR4&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4& operator -= (const D3DXVECTOR4&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4& operator *= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4& operator /= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4 operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4 operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4 operator + (const D3DXVECTOR4&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4 operator - (const D3DXVECTOR4&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4 operator * (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR4 operator / (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync friend D3DXVECTOR4 operator * (FLOAT, const D3DXVECTOR4&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXVECTOR4&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXVECTOR4&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT x, y, z, w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXVECTOR4, *LPD3DXVECTOR4;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXMATRIX : public D3DMATRIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX(const D3DMATRIX& mat);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT& operator () (UINT row, UINT col);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT operator () (UINT row, UINT col) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX& operator *= (const D3DXMATRIX&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX& operator += (const D3DXMATRIX&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX& operator -= (const D3DXMATRIX&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX& operator *= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX& operator /= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator * (const D3DXMATRIX&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator + (const D3DXMATRIX&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator - (const D3DXMATRIX&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator * (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX operator / (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync friend D3DXMATRIX operator * (FLOAT, const D3DXMATRIX&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXMATRIX&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXMATRIX&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXMATRIX, *LPD3DXMATRIX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* !__cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* !__cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXQUATERNION
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION& operator += (const D3DXQUATERNION&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION& operator -= (const D3DXQUATERNION&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION& operator *= (const D3DXQUATERNION&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION& operator *= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION& operator /= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator + (const D3DXQUATERNION&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator - (const D3DXQUATERNION&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator * (const D3DXQUATERNION&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator * (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION operator / (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync friend D3DXQUATERNION operator * (FLOAT, const D3DXQUATERNION&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXQUATERNION&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXQUATERNION&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT x, y, z, w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXQUATERNION, *LPD3DXQUATERNION;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXPLANE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXPLANE();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXPLANE(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXPLANE operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXPLANE operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXPLANE&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXPLANE&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT a, b, c, d;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXPLANE, *LPD3DXPLANE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXCOLOR
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR(DWORD col);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR(const FLOAT *pf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR(const D3DCOLORVALUE& col);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator DWORD () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const FLOAT* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator D3DCOLORVALUE* ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const D3DCOLORVALUE* () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator D3DCOLORVALUE& ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator const D3DCOLORVALUE& () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR& operator += (const D3DXCOLOR&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR& operator -= (const D3DXCOLOR&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR& operator *= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR& operator /= (FLOAT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR operator + () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR operator - () const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR operator + (const D3DXCOLOR&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR operator - (const D3DXCOLOR&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR operator * (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXCOLOR operator / (FLOAT) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync friend D3DXCOLOR operator * (FLOAT, const D3DXCOLOR&);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXCOLOR&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXCOLOR&) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT r, g, b, a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXCOLOR, *LPD3DXCOLOR;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct D3DXFLOAT16
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXFLOAT16();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXFLOAT16(FLOAT f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXFLOAT16(const D3DXFLOAT16 &f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync operator FLOAT ();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator == (const D3DXFLOAT16 &) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOL operator != (const D3DXFLOAT16 &) const;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD value;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} D3DXFLOAT16, *LPD3DXFLOAT16;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern "C" {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, const D3DXCOLOR *pc, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, const D3DXCOLOR *pc, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT WINAPI D3DXFresnelTerm(FLOAT costheta, FLOAT refractionindex);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, FLOAT scaling, const D3DXVECTOR3 *rotationcenter, const D3DXQUATERNION *rotation,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXVECTOR3 *translation);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *pout, FLOAT scaling, const D3DXVECTOR2 *protationcenter, FLOAT rotation,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXVECTOR2 *ptranslation);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutrotation, D3DXVECTOR3 *pouttranslation, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT WINAPI D3DXMatrixDeterminant(const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, const D3DXVECTOR3 *peye, const D3DXVECTOR3 *pat, const D3DXVECTOR3 *pup);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, const D3DXVECTOR3 *peye, const D3DXVECTOR3 *pat, const D3DXVECTOR3 *pup);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, const D3DXMATRIX *pm1, const D3DXMATRIX *pm2);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, const D3DXMATRIX *pm1, const D3DXMATRIX *pm2);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, const D3DXPLANE *pplane);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, const D3DXVECTOR3 *pv, FLOAT angle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, const D3DXQUATERNION *pq);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, const D3DXVECTOR4 *plight, const D3DXPLANE *pPlane);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, const D3DXVECTOR3 *pscalingcenter, const D3DXQUATERNION *pscalingrotation, const D3DXVECTOR3 *pscaling, const D3DXVECTOR3 *protationcenter,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXQUATERNION *protation, const D3DXVECTOR3 *ptranslation);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixTransformation2D(D3DXMATRIX *pout, const D3DXVECTOR2 *pscalingcenter, FLOAT scalingrotation, const D3DXVECTOR2 *pscaling,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXVECTOR2 *protationcenter, FLOAT rotation, const D3DXVECTOR2 *ptranslation);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, const D3DXVECTOR3 *pvpoint, const D3DXVECTOR3 *pvnormal);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pv3);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, const D3DXPLANE *pp, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, const D3DXPLANE *pp);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, const D3DXPLANE *pplane, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXPLANE* WINAPI D3DXPlaneTransformArray(D3DXPLANE *pout, UINT outstride, const D3DXPLANE *pplane, UINT pstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, const D3DXQUATERNION *pq3, FLOAT f, FLOAT g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, const D3DXVECTOR3 *pv, FLOAT angle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, FLOAT t);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, const D3DXQUATERNION *pq3,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXQUATERNION *pq4, FLOAT t);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid WINAPI D3DXQuaternionSquadSetup(D3DXQUATERNION *paout, D3DXQUATERNION *pbout, D3DXQUATERNION *pcout, const D3DXQUATERNION *pq0,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, const D3DXQUATERNION *pq3);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid WINAPI D3DXQuaternionToAxisAngle(const D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2, const D3DXVECTOR2 *pv3, FLOAT f, FLOAT g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv0, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2, const D3DXVECTOR2 *pv3, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pt1, const D3DXVECTOR2 *pv2, const D3DXVECTOR2 *pt2, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, const D3DXVECTOR2 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec2TransformArray(D3DXVECTOR4 *pout, UINT outstride, const D3DXVECTOR2 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray(D3DXVECTOR2 *pout, UINT outstride, const D3DXVECTOR2 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray(D3DXVECTOR2 *pout, UINT outstride, const D3DXVECTOR2 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pv3, FLOAT f, FLOAT g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv0, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pv3, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pt1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pt2, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DVIEWPORT9 *pviewport, const D3DXMATRIX *pprojection,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXMATRIX *pview, const D3DXMATRIX *pworld);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3ProjectArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DVIEWPORT9 *pviewport,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXMATRIX *pprojection, const D3DXMATRIX *pview, const D3DXMATRIX *pworld, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec3TransformArray(D3DXVECTOR4 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DVIEWPORT9 *pviewport, const D3DXMATRIX *pprojection,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXMATRIX *pview, const D3DXMATRIX *pworld);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR3* WINAPI D3DXVec3UnprojectArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DVIEWPORT9 *pviewport,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const D3DXMATRIX *pprojection, const D3DXMATRIX *pview, const D3DXMATRIX *pworld, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pv3, FLOAT f, FLOAT g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv0, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pv3, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pv3);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pt1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pt2, FLOAT s);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv, const D3DXMATRIX *pm);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4 *pout, UINT outstride, const D3DXVECTOR4 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncD3DXFLOAT16 *WINAPI D3DXFloat32To16Array(D3DXFLOAT16 *pout, const FLOAT *pin, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT *WINAPI D3DXFloat16To32Array(FLOAT *pout, const D3DXFLOAT16 *pin, UINT n);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHAdd(FLOAT *out, UINT order, const FLOAT *a, const FLOAT *b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT WINAPI D3DXSHDot(UINT order, const FLOAT *a, const FLOAT *b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI D3DXSHEvalConeLight(UINT order, const D3DXVECTOR3 *dir, FLOAT radius, FLOAT Rintensity, FLOAT Gintensity, FLOAT Bintensity, FLOAT *rout, FLOAT *gout, FLOAT *bout);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHEvalDirection(FLOAT *out, UINT order, const D3DXVECTOR3 *dir);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI D3DXSHEvalDirectionalLight(UINT order, const D3DXVECTOR3 *dir, FLOAT Rintensity, FLOAT Gintensity, FLOAT Bintensity, FLOAT *rout, FLOAT *gout, FLOAT *bout);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI D3DXSHEvalHemisphereLight(UINT order, const D3DXVECTOR3 *dir, D3DXCOLOR top, D3DXCOLOR bottom, FLOAT *rout, FLOAT *gout, FLOAT *bout);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI D3DXSHEvalSphericalLight(UINT order, const D3DXVECTOR3 *dir, FLOAT radius, FLOAT Rintensity, FLOAT Gintensity, FLOAT Bintensity, FLOAT *rout, FLOAT *gout, FLOAT *bout);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHMultiply2(FLOAT *out, const FLOAT *a, const FLOAT *b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHMultiply3(FLOAT *out, const FLOAT *a, const FLOAT *b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHMultiply4(FLOAT *out, const FLOAT *a, const FLOAT *b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, const FLOAT *in);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHRotateZ(FLOAT *out, UINT order, FLOAT angle, const FLOAT *in);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncFLOAT* WINAPI D3DXSHScale(FLOAT *out, UINT order, const FLOAT *a, const FLOAT scale);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(IID_ID3DXMatrixStack,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync0xc7885ba7, 0xf990, 0x4fe7, 0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef INTERFACE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define INTERFACE ID3DXMatrixStack
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(Pop)(THIS) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(Push)(THIS) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(LoadIdentity)(THIS) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(LoadMatrix)(THIS_ const D3DXMATRIX* pM ) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(MultMatrix)(THIS_ const D3DXMATRIX* pM ) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(MultMatrixLocal)(THIS_ const D3DXMATRIX* pM ) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(RotateAxis)(THIS_ const D3DXVECTOR3* pV, FLOAT Angle) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(RotateAxisLocal)(THIS_ const D3DXVECTOR3* pV, FLOAT Angle) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(RotateYawPitchRoll)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(RotateYawPitchRollLocal)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef INTERFACE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if !defined(__cplusplus) || defined(CINTERFACE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_AddRef(p) (p)->lpVtbl->AddRef(p)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_Release(p) (p)->lpVtbl->Release(p)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_Pop(p) (p)->lpVtbl->Pop(p)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_Push(p) (p)->lpVtbl->Push(p)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_LoadIdentity(p) (p)->lpVtbl->LoadIdentity(p)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_LoadMatrix(p,a) (p)->lpVtbl->LoadMatrix(p,a)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_MultMatrix(p,a) (p)->lpVtbl->MultMatrix(p,a)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_MultMatrixLocal(p,a) (p)->lpVtbl->MultMatrixLocal(p,a)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_RotateAxis(p,a,b) (p)->lpVtbl->RotateAxis(p,a,b)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_RotateAxisLocal(p,a,b) (p)->lpVtbl->RotateAxisLocal(p,a,b)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_RotateYawPitchRoll(p,a,b,c) (p)->lpVtbl->RotateYawPitchRoll(p,a,b,c)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_RotateYawPitchRollLocal(p,a,b,c) (p)->lpVtbl->RotateYawPitchRollLocal(p,a,b,c)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_Scale(p,a,b,c) (p)->lpVtbl->Scale(p,a,b,c)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_ScaleLocal(p,a,b,c) (p)->lpVtbl->ScaleLocal(p,a,b,c)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_Translate(p,a,b,c) (p)->lpVtbl->Translate(p,a,b,c)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_TranslateLocal(p,a,b,c) (p)->lpVtbl->TranslateLocal(p,a,b,c)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ID3DXMatrixStack_GetTop(p) (p)->lpVtbl->GetTop(p)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern "C" {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, ID3DXMatrixStack **stack);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <d3dx9math.inl>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __D3DX9MATH_H__ */