Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygend3dx9math.h
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 2007 David Adam 00003 * Copyright (C) 2007 Tony Wasserka 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00018 */ 00019 00020 #include <d3dx9.h> 00021 00022 #ifndef __D3DX9MATH_H__ 00023 #define __D3DX9MATH_H__ 00024 00025 #include <math.h> 00026 00027 #define D3DX_PI ((FLOAT)3.141592654) 00028 #define D3DX_1BYPI ((FLOAT)0.318309886) 00029 00030 #define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f)) 00031 #define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI)) 00032 00033 00034 00035 typedef struct D3DXVECTOR2 00036 { 00037 #ifdef __cplusplus 00038 D3DXVECTOR2(); 00039 D3DXVECTOR2(CONST FLOAT *pf); 00040 D3DXVECTOR2(FLOAT fx, FLOAT fy); 00041 00042 operator FLOAT* (); 00043 operator CONST FLOAT* () const; 00044 00045 D3DXVECTOR2& operator += (CONST D3DXVECTOR2&); 00046 D3DXVECTOR2& operator -= (CONST D3DXVECTOR2&); 00047 D3DXVECTOR2& operator *= (FLOAT); 00048 D3DXVECTOR2& operator /= (FLOAT); 00049 00050 D3DXVECTOR2 operator + () const; 00051 D3DXVECTOR2 operator - () const; 00052 00053 D3DXVECTOR2 operator + (CONST D3DXVECTOR2&) const; 00054 D3DXVECTOR2 operator - (CONST D3DXVECTOR2&) const; 00055 D3DXVECTOR2 operator * (FLOAT) const; 00056 D3DXVECTOR2 operator / (FLOAT) const; 00057 00058 friend D3DXVECTOR2 operator * (FLOAT, CONST D3DXVECTOR2&); 00059 00060 BOOL operator == (CONST D3DXVECTOR2&) const; 00061 BOOL operator != (CONST D3DXVECTOR2&) const; 00062 #endif /* __cplusplus */ 00063 FLOAT x, y; 00064 } D3DXVECTOR2, *LPD3DXVECTOR2; 00065 00066 #ifdef __cplusplus 00067 typedef struct D3DXVECTOR3 : public D3DVECTOR 00068 { 00069 D3DXVECTOR3(); 00070 D3DXVECTOR3(CONST FLOAT *pf); 00071 D3DXVECTOR3(CONST D3DVECTOR& v); 00072 D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz); 00073 00074 operator FLOAT* (); 00075 operator CONST FLOAT* () const; 00076 00077 D3DXVECTOR3& operator += (CONST D3DXVECTOR3&); 00078 D3DXVECTOR3& operator -= (CONST D3DXVECTOR3&); 00079 D3DXVECTOR3& operator *= (FLOAT); 00080 D3DXVECTOR3& operator /= (FLOAT); 00081 00082 D3DXVECTOR3 operator + () const; 00083 D3DXVECTOR3 operator - () const; 00084 00085 D3DXVECTOR3 operator + (CONST D3DXVECTOR3&) const; 00086 D3DXVECTOR3 operator - (CONST D3DXVECTOR3&) const; 00087 D3DXVECTOR3 operator * (FLOAT) const; 00088 D3DXVECTOR3 operator / (FLOAT) const; 00089 00090 friend D3DXVECTOR3 operator * (FLOAT, CONST struct D3DXVECTOR3&); 00091 00092 BOOL operator == (CONST D3DXVECTOR3&) const; 00093 BOOL operator != (CONST D3DXVECTOR3&) const; 00094 } D3DXVECTOR3, *LPD3DXVECTOR3; 00095 #else /* !__cplusplus */ 00096 typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3; 00097 #endif /* !__cplusplus */ 00098 00099 typedef struct D3DXVECTOR4 00100 { 00101 #ifdef __cplusplus 00102 D3DXVECTOR4(); 00103 D3DXVECTOR4(CONST FLOAT *pf); 00104 D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw); 00105 00106 operator FLOAT* (); 00107 operator CONST FLOAT* () const; 00108 00109 D3DXVECTOR4& operator += (CONST D3DXVECTOR4&); 00110 D3DXVECTOR4& operator -= (CONST D3DXVECTOR4&); 00111 D3DXVECTOR4& operator *= (FLOAT); 00112 D3DXVECTOR4& operator /= (FLOAT); 00113 00114 D3DXVECTOR4 operator + () const; 00115 D3DXVECTOR4 operator - () const; 00116 00117 D3DXVECTOR4 operator + (CONST D3DXVECTOR4&) const; 00118 D3DXVECTOR4 operator - (CONST D3DXVECTOR4&) const; 00119 D3DXVECTOR4 operator * (FLOAT) const; 00120 D3DXVECTOR4 operator / (FLOAT) const; 00121 00122 friend D3DXVECTOR4 operator * (FLOAT, CONST D3DXVECTOR4&); 00123 00124 BOOL operator == (CONST D3DXVECTOR4&) const; 00125 BOOL operator != (CONST D3DXVECTOR4&) const; 00126 #endif /* __cplusplus */ 00127 FLOAT x, y, z, w; 00128 } D3DXVECTOR4, *LPD3DXVECTOR4; 00129 00130 #ifdef __cplusplus 00131 typedef struct D3DXMATRIX : public D3DMATRIX 00132 { 00133 D3DXMATRIX(); 00134 D3DXMATRIX(CONST FLOAT *pf); 00135 D3DXMATRIX(CONST D3DMATRIX& mat); 00136 D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14, 00137 FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24, 00138 FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34, 00139 FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44); 00140 00141 FLOAT& operator () (UINT row, UINT col); 00142 FLOAT operator () (UINT row, UINT col) const; 00143 00144 operator FLOAT* (); 00145 operator CONST FLOAT* () const; 00146 00147 D3DXMATRIX& operator *= (CONST D3DXMATRIX&); 00148 D3DXMATRIX& operator += (CONST D3DXMATRIX&); 00149 D3DXMATRIX& operator -= (CONST D3DXMATRIX&); 00150 D3DXMATRIX& operator *= (FLOAT); 00151 D3DXMATRIX& operator /= (FLOAT); 00152 00153 D3DXMATRIX operator + () const; 00154 D3DXMATRIX operator - () const; 00155 00156 D3DXMATRIX operator * (CONST D3DXMATRIX&) const; 00157 D3DXMATRIX operator + (CONST D3DXMATRIX&) const; 00158 D3DXMATRIX operator - (CONST D3DXMATRIX&) const; 00159 D3DXMATRIX operator * (FLOAT) const; 00160 D3DXMATRIX operator / (FLOAT) const; 00161 00162 friend D3DXMATRIX operator * (FLOAT, CONST D3DXMATRIX&); 00163 00164 BOOL operator == (CONST D3DXMATRIX&) const; 00165 BOOL operator != (CONST D3DXMATRIX&) const; 00166 } D3DXMATRIX, *LPD3DXMATRIX; 00167 #else /* !__cplusplus */ 00168 typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX; 00169 #endif /* !__cplusplus */ 00170 00171 typedef struct D3DXQUATERNION 00172 { 00173 #ifdef __cplusplus 00174 D3DXQUATERNION(); 00175 D3DXQUATERNION(CONST FLOAT *pf); 00176 D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw); 00177 00178 operator FLOAT* (); 00179 operator CONST FLOAT* () const; 00180 00181 D3DXQUATERNION& operator += (CONST D3DXQUATERNION&); 00182 D3DXQUATERNION& operator -= (CONST D3DXQUATERNION&); 00183 D3DXQUATERNION& operator *= (CONST D3DXQUATERNION&); 00184 D3DXQUATERNION& operator *= (FLOAT); 00185 D3DXQUATERNION& operator /= (FLOAT); 00186 00187 D3DXQUATERNION operator + () const; 00188 D3DXQUATERNION operator - () const; 00189 00190 D3DXQUATERNION operator + (CONST D3DXQUATERNION&) const; 00191 D3DXQUATERNION operator - (CONST D3DXQUATERNION&) const; 00192 D3DXQUATERNION operator * (CONST D3DXQUATERNION&) const; 00193 D3DXQUATERNION operator * (FLOAT) const; 00194 D3DXQUATERNION operator / (FLOAT) const; 00195 00196 friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION&); 00197 00198 BOOL operator == (CONST D3DXQUATERNION&) const; 00199 BOOL operator != (CONST D3DXQUATERNION&) const; 00200 #endif /* __cplusplus */ 00201 FLOAT x, y, z, w; 00202 } D3DXQUATERNION, *LPD3DXQUATERNION; 00203 00204 typedef struct D3DXPLANE 00205 { 00206 #ifdef __cplusplus 00207 D3DXPLANE(); 00208 D3DXPLANE(CONST FLOAT *pf); 00209 D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd); 00210 00211 operator FLOAT* (); 00212 operator CONST FLOAT* () const; 00213 00214 D3DXPLANE operator + () const; 00215 D3DXPLANE operator - () const; 00216 00217 BOOL operator == (CONST D3DXPLANE&) const; 00218 BOOL operator != (CONST D3DXPLANE&) const; 00219 #endif /* __cplusplus */ 00220 FLOAT a, b, c, d; 00221 } D3DXPLANE, *LPD3DXPLANE; 00222 00223 typedef struct D3DXCOLOR 00224 { 00225 #ifdef __cplusplus 00226 D3DXCOLOR(); 00227 D3DXCOLOR(DWORD col); 00228 D3DXCOLOR(CONST FLOAT *pf); 00229 D3DXCOLOR(CONST D3DCOLORVALUE& col); 00230 D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa); 00231 00232 operator DWORD () const; 00233 00234 operator FLOAT* (); 00235 operator CONST FLOAT* () const; 00236 00237 operator D3DCOLORVALUE* (); 00238 operator CONST D3DCOLORVALUE* () const; 00239 00240 operator D3DCOLORVALUE& (); 00241 operator CONST D3DCOLORVALUE& () const; 00242 00243 D3DXCOLOR& operator += (CONST D3DXCOLOR&); 00244 D3DXCOLOR& operator -= (CONST D3DXCOLOR&); 00245 D3DXCOLOR& operator *= (FLOAT); 00246 D3DXCOLOR& operator /= (FLOAT); 00247 00248 D3DXCOLOR operator + () const; 00249 D3DXCOLOR operator - () const; 00250 00251 D3DXCOLOR operator + (CONST D3DXCOLOR&) const; 00252 D3DXCOLOR operator - (CONST D3DXCOLOR&) const; 00253 D3DXCOLOR operator * (FLOAT) const; 00254 D3DXCOLOR operator / (FLOAT) const; 00255 00256 friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR&); 00257 00258 BOOL operator == (CONST D3DXCOLOR&) const; 00259 BOOL operator != (CONST D3DXCOLOR&) const; 00260 #endif /* __cplusplus */ 00261 FLOAT r, g, b, a; 00262 } D3DXCOLOR, *LPD3DXCOLOR; 00263 00264 #ifdef __cplusplus 00265 extern "C" { 00266 #endif 00267 00268 D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s); 00269 D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s); 00270 00271 FLOAT WINAPI D3DXFresnelTerm(FLOAT costheta, FLOAT refractionindex); 00272 00273 D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR3 *rotationcenter, CONST D3DXQUATERNION *rotation, CONST D3DXVECTOR3 *translation); 00274 D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation); 00275 HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutrotation, D3DXVECTOR3 *pouttranslation, CONST D3DXMATRIX *pm); 00276 FLOAT WINAPI D3DXMatrixDeterminant(CONST D3DXMATRIX *pm); 00277 D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm); 00278 D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup); 00279 D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup); 00280 D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); 00281 D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); 00282 D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 00283 D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 00284 D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 00285 D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 00286 D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 00287 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf); 00288 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf); 00289 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 00290 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 00291 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 00292 D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 00293 D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, CONST D3DXPLANE *pplane); 00294 D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT angle); 00295 D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, CONST D3DXQUATERNION *pq); 00296 D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle); 00297 D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle); 00298 D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll); 00299 D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle); 00300 D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz); 00301 D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, CONST D3DXVECTOR4 *plight, CONST D3DXPLANE *pPlane); 00302 D3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pscalingcenter, CONST D3DXQUATERNION *pscalingrotation, CONST D3DXVECTOR3 *pscaling, CONST D3DXVECTOR3 *protationcenter, CONST D3DXQUATERNION *protation, CONST D3DXVECTOR3 *ptranslation); 00303 D3DXMATRIX* WINAPI D3DXMatrixTransformation2D(D3DXMATRIX *pout, CONST D3DXVECTOR2 *pscalingcenter, FLOAT scalingrotation, CONST D3DXVECTOR2 *pscaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation); 00304 D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z); 00305 D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm); 00306 00307 D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, CONST D3DXVECTOR3 *pvpoint, CONST D3DXVECTOR3 *pvnormal); 00308 D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3); 00309 D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, CONST D3DXPLANE *pp, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2); 00310 D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, CONST D3DXPLANE *pp); 00311 D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm); 00312 D3DXPLANE* WINAPI D3DXPlaneTransformArray(D3DXPLANE *pout, UINT outstride, CONST D3DXPLANE *pplane, UINT pstride, CONST D3DXMATRIX *pm, UINT n); 00313 00314 D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, FLOAT f, FLOAT g); 00315 D3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); 00316 D3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); 00317 D3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); 00318 D3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2); 00319 D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); 00320 D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, CONST D3DXVECTOR3 *pv, FLOAT angle); 00321 D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, CONST D3DXMATRIX *pm); 00322 D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll); 00323 D3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, FLOAT t); 00324 D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, CONST D3DXQUATERNION *pq4, FLOAT t); 00325 void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle); 00326 00327 D3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT f, FLOAT g); 00328 D3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv0, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT s); 00329 D3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pt1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pt2, FLOAT s); 00330 D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv); 00331 D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); 00332 D3DXVECTOR4* WINAPI D3DXVec2TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00333 D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); 00334 D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00335 D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); 00336 D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00337 00338 D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT f, FLOAT g); 00339 D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s); 00340 D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s); 00341 D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv); 00342 D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld); 00343 D3DXVECTOR3* WINAPI D3DXVec3ProjectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n); 00344 D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); 00345 D3DXVECTOR4* WINAPI D3DXVec3TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00346 D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); 00347 D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00348 D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); 00349 D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00350 D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld); 00351 D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n); 00352 00353 D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g); 00354 D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s); 00355 D3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3); 00356 D3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pt1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pt2, FLOAT s); 00357 D3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv); 00358 D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, CONST D3DXMATRIX *pm); 00359 D3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR4 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n); 00360 00361 #ifdef __cplusplus 00362 } 00363 #endif 00364 00365 typedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK; 00366 00367 DEFINE_GUID(IID_ID3DXMatrixStack, 00368 0xc7885ba7, 0xf990, 0x4fe7, 0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85); 00369 00370 #undef INTERFACE 00371 #define INTERFACE ID3DXMatrixStack 00372 00373 DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown) 00374 { 00375 STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; 00376 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00377 STDMETHOD_(ULONG,Release)(THIS) PURE; 00378 STDMETHOD(Pop)(THIS) PURE; 00379 STDMETHOD(Push)(THIS) PURE; 00380 STDMETHOD(LoadIdentity)(THIS) PURE; 00381 STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE; 00382 STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE; 00383 STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX* pM ) PURE; 00384 STDMETHOD(RotateAxis)(THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE; 00385 STDMETHOD(RotateAxisLocal)(THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE; 00386 STDMETHOD(RotateYawPitchRoll)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE; 00387 STDMETHOD(RotateYawPitchRollLocal)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE; 00388 STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE; 00389 STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE; 00390 STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE; 00391 STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE; 00392 STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE; 00393 }; 00394 00395 #undef INTERFACE 00396 00397 #if !defined(__cplusplus) || defined(CINTERFACE) 00398 00399 #define ID3DXMatrixStack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00400 #define ID3DXMatrixStack_AddRef(p) (p)->lpVtbl->AddRef(p) 00401 #define ID3DXMatrixStack_Release(p) (p)->lpVtbl->Release(p) 00402 #define ID3DXMatrixStack_Pop(p) (p)->lpVtbl->Pop(p) 00403 #define ID3DXMatrixStack_Push(p) (p)->lpVtbl->Push(p) 00404 #define ID3DXMatrixStack_LoadIdentity(p) (p)->lpVtbl->LoadIdentity(p) 00405 #define ID3DXMatrixStack_LoadMatrix(p,a) (p)->lpVtbl->LoadMatrix(p,a) 00406 #define ID3DXMatrixStack_MultMatrix(p,a) (p)->lpVtbl->MultMatrix(p,a) 00407 #define ID3DXMatrixStack_MultMatrixLocal(p,a) (p)->lpVtbl->MultMatrixLocal(p,a) 00408 #define ID3DXMatrixStack_RotateAxis(p,a,b) (p)->lpVtbl->RotateAxis(p,a,b) 00409 #define ID3DXMatrixStack_RotateAxisLocal(p,a,b) (p)->lpVtbl->RotateAxisLocal(p,a,b) 00410 #define ID3DXMatrixStack_RotateYawPitchRoll(p,a,b,c) (p)->lpVtbl->RotateYawPitchRoll(p,a,b,c) 00411 #define ID3DXMatrixStack_RotateYawPitchRollLocal(p,a,b,c) (p)->lpVtbl->RotateYawPitchRollLocal(p,a,b,c) 00412 #define ID3DXMatrixStack_Scale(p,a,b,c) (p)->lpVtbl->Scale(p,a,b,c) 00413 #define ID3DXMatrixStack_ScaleLocal(p,a,b,c) (p)->lpVtbl->ScaleLocal(p,a,b,c) 00414 #define ID3DXMatrixStack_Translate(p,a,b,c) (p)->lpVtbl->Translate(p,a,b,c) 00415 #define ID3DXMatrixStack_TranslateLocal(p,a,b,c) (p)->lpVtbl->TranslateLocal(p,a,b,c) 00416 #define ID3DXMatrixStack_GetTop(p) (p)->lpVtbl->GetTop(p) 00417 00418 #endif 00419 00420 #ifdef __cplusplus 00421 extern "C" { 00422 #endif 00423 00424 HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, LPD3DXMATRIXSTACK* ppstack); 00425 00426 #ifdef __cplusplus 00427 } 00428 #endif 00429 00430 #include <d3dx9math.inl> 00431 00432 #endif /* __D3DX9MATH_H__ */ Generated on Sun May 27 2012 04:30:36 for ReactOS by
1.7.6.1
|