[PATCH] Implement D3DXVec2Lerp with a test
Adam David (none)
david at localhost.
Sat Oct 6 06:52:25 CDT 2007
---
dlls/d3dx8/d3dx8.spec | 1 +
dlls/d3dx8/math.c | 9 ++++++++-
dlls/d3dx8/tests/math.c | 7 ++++++-
include/d3dx8math.h | 1 +
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec
index 2a82dcf..1d5b60e 100644
--- a/dlls/d3dx8/d3dx8.spec
+++ b/dlls/d3dx8/d3dx8.spec
@@ -3,6 +3,7 @@
@ stub D3DXVec2Normalize
@ stdcall D3DXVec2Minimize(ptr ptr ptr)
@ stdcall D3DXVec2Maximize(ptr ptr ptr)
+@ stdcall D3DXVec2Lerp(ptr ptr ptr long)
@ stdcall D3DXVec2LengthSq(ptr)
@ stdcall D3DXVec2Length(ptr)
@ stub D3DXVec2Hermite
diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c
index be3f283..6ad0b08 100644
--- a/dlls/d3dx8/math.c
+++ b/dlls/d3dx8/math.c
@@ -39,6 +39,13 @@ FLOAT D3DXVec2Dot(CONST LPD3DXVECTOR2 pv1, CONST LPD3DXVE=
CTOR2 pv2)
return ((pv1->x) * (pv2->x) + (pv1->y) * (pv2->y));
}
=20
+LPD3DXVECTOR2 D3DXVec2Lerp(LPD3DXVECTOR2 pOut, LPD3DXVECTOR2 pv1, LPD3DXVEC=
TOR2 pv2, FLOAT s)
+{
+ pOut->x=3D (1-s) * (pv1->x) + s * (pv2->x);
+ pOut->y=3D (1-s) * (pv1->y) + s * (pv2->y);
+ return pOut;
+}
+
FLOAT D3DXVec2Length(CONST LPD3DXVECTOR2 pv)
{
return sqrt(D3DXVec2LengthSq(pv));
@@ -75,4 +82,4 @@ LPD3DXVECTOR2 D3DXVec2Subtract(LPD3DXVECTOR2 pOut, CONST L=
PD3DXVECTOR2 pv1, CONS
pOut->x=3D pv1->x - pv2->x;
pOut->y=3D pv1->y - pv2->y;
return pOut;
-}
\ No newline at end of file
+}
diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c
index 5115b33..11edc89 100644
--- a/dlls/d3dx8/tests/math.c
+++ b/dlls/d3dx8/tests/math.c
@@ -20,7 +20,7 @@
#include "d3dx8.h"
#include "wine/test.h"
#include "d3dx8math.h"
-#define admitted_error 0.000001f
+#define admitted_error 0.00001f
=20
#define expect_vec2(expectedvec,gotvec) ok((fabs(expectedvec.x-gotvec.x)<ad=
mitted_error)&&(fabs(expectedvec.y-gotvec.y)<admitted_error), "Expected Vect=
or=3D (%f, %f)\n , Got Vector=3D (%f, %f)\n",expectedvec.x,expectedvec.y, go=
tvec.x, gotvec.y);
=20
@@ -51,6 +51,11 @@ static void Vector2Test(void)
long2=3DD3DXVec2LengthSq(&u);
ok((long2 =3D=3D 25.0f), "Expected 25.0f, Got %f\n", long2);
=20
+/*__________________Vect2Lerp__________________________*/
+ D3DXVec2Lerp(&result,&vec1,&vec2,sca);
+ expected.x=3D-19.6f; expected.y=3D18.7f;
+ expect_vec2(result,expected);
+
/*__________________Vect2Maximize________________________*/
D3DXVec2Maximize(&result,&vec1,&vec2);
expected.x=3D8.0f; expected.y=3D7.0f;
diff --git a/include/d3dx8math.h b/include/d3dx8math.h
index a73c1c6..a816edf 100644
--- a/include/d3dx8math.h
+++ b/include/d3dx8math.h
@@ -63,6 +63,7 @@ LPD3DXVECTOR2 D3DXVec2Add(LPD3DXVECTOR2, CONST LPD3DXVECTO=
R2, CONST LPD3DXVECTOR
FLOAT D3DXVec2Dot(CONST LPD3DXVECTOR2, CONST LPD3DXVECTOR2);
FLOAT D3DXVec2Length(CONST LPD3DXVECTOR2);
FLOAT D3DXVec2LengthSq(CONST LPD3DXVECTOR2);
+LPD3DXVECTOR2 D3DXVec2Lerp(LPD3DXVECTOR2, CONST LPD3DXVECTOR2, CONST LPD3DX=
VECTOR2, FLOAT);
LPD3DXVECTOR2 D3DXVec2Maximize(LPD3DXVECTOR2, CONST LPD3DXVECTOR2, CONST LP=
D3DXVECTOR2);
LPD3DXVECTOR2 D3DXVec2Minimize(LPD3DXVECTOR2, CONST LPD3DXVECTOR2, CONST LP=
D3DXVECTOR2);
LPD3DXVECTOR2 D3DXVec2Scale(LPD3DXVECTOR2, CONST LPD3DXVECTOR2, FLOAT);
--=20
1.5.2.4
--=_49umbfyi8k84--
More information about the wine-patches
mailing list