[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