David Adam : d3drm: D3DRMQuaternionSlerp should be tested against returned Windows values.

Alexandre Julliard julliard at winehq.org
Tue Feb 17 08:49:09 CST 2009


Module: wine
Branch: master
Commit: 32064cb5532f8056cd90bec2fc05a1dfc862b84c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=32064cb5532f8056cd90bec2fc05a1dfc862b84c

Author: David Adam <david.adam.cnrs at gmail.com>
Date:   Mon Feb 16 17:39:12 2009 +0100

d3drm: D3DRMQuaternionSlerp should be tested against returned Windows values.

---

 dlls/d3drm/tests/vector.c |   21 +++++----------------
 1 files changed, 5 insertions(+), 16 deletions(-)

diff --git a/dlls/d3drm/tests/vector.c b/dlls/d3drm/tests/vector.c
index 533523f..b063d21 100644
--- a/dlls/d3drm/tests/vector.c
+++ b/dlls/d3drm/tests/vector.c
@@ -242,7 +242,7 @@ static void MatrixTest(void)
 static void QuaternionTest(void)
 {
     D3DVECTOR axis;
-    D3DVALUE g,h,epsilon,par,theta;
+    D3DVALUE par,theta;
     D3DRMQUATERNION q,q1,q2,r;
 
 /*_________________QuaternionFromRotation___________________*/
@@ -254,31 +254,20 @@ static void QuaternionTest(void)
 
 /*_________________QuaternionSlerp_________________________*/
 /* If the angle of the two quaternions is in ]PI/2;3PI/2[, QuaternionSlerp
- * interpolates between the first quaternion and the opposite of the second one. The test proves
- * this fact. */
+ * interpolates between the first quaternion and the opposite of the second one.
+ * The test proves this fact. */
     par=0.31f;
     q1.s=1.0f; U1(q1.v).x=2.0f; U2(q1.v).y=3.0f; U3(q1.v).z=50.0f;
     q2.s=-4.0f; U1(q2.v).x=6.0f; U2(q2.v).y=7.0f; U3(q2.v).z=8.0f;
 /* The angle between q1 and q2 is in [-PI/2,PI/2]. So, one interpolates between q1 and q2. */
-    epsilon=1.0f;
-    g=1.0f-par; h=epsilon*par;
-/* Part of the test proving that the interpolation is linear. */
-    q.s=g*q1.s+h*q2.s;
-    U1(q.v).x=g*U1(q1.v).x+h*U1(q2.v).x;
-    U2(q.v).y=g*U2(q1.v).y+h*U2(q2.v).y;
-    U3(q.v).z=g*U3(q1.v).z+h*U3(q2.v).z;
+    q.s = -0.55f; U1(q.v).x=3.24f; U2(q.v).y=4.24f; U3(q.v).z=36.98f;
     pD3DRMQuaternionSlerp(&r,&q1,&q2,par);
     expect_quat(q,r);
 
     q1.s=1.0f; U1(q1.v).x=2.0f; U2(q1.v).y=3.0f; U3(q1.v).z=50.0f;
     q2.s=-94.0f; U1(q2.v).x=6.0f; U2(q2.v).y=7.0f; U3(q2.v).z=-8.0f;
 /* The angle between q1 and q2 is not in [-PI/2,PI/2]. So, one interpolates between q1 and -q2. */
-    epsilon=-1.0f;
-    g=1.0f-par; h=epsilon*par;
-    q.s=g*q1.s+h*q2.s;
-    U1(q.v).x=g*U1(q1.v).x+h*U1(q2.v).x;
-    U2(q.v).y=g*U2(q1.v).y+h*U2(q2.v).y;
-    U3(q.v).z=g*U3(q1.v).z+h*U3(q2.v).z;
+    q.s=29.83f; U1(q.v).x=-0.48f; U2(q.v).y=-0.10f; U3(q.v).z=36.98f;
     pD3DRMQuaternionSlerp(&r,&q1,&q2,par);
     expect_quat(q,r);
 




More information about the wine-cvs mailing list