David Adam : d3dx9: Fix D3DXQuaternionToAxisAngle to make tests pass in Windows.
Alexandre Julliard
julliard at winehq.org
Thu Jul 16 11:58:26 CDT 2009
Module: wine
Branch: master
Commit: a3634e2ca32df3f2f284f086e241ed8b78dfeed1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a3634e2ca32df3f2f284f086e241ed8b78dfeed1
Author: David Adam <david.adam.cnrs at gmail.com>
Date: Wed Jul 15 21:04:01 2009 +0200
d3dx9: Fix D3DXQuaternionToAxisAngle to make tests pass in Windows.
---
dlls/d3dx9_36/math.c | 21 ++++-----------------
dlls/d3dx9_36/tests/math.c | 9 ++++-----
2 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/dlls/d3dx9_36/math.c b/dlls/d3dx9_36/math.c
index b3f7906..f80a5db 100644
--- a/dlls/d3dx9_36/math.c
+++ b/dlls/d3dx9_36/math.c
@@ -1373,23 +1373,10 @@ D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, CONST D3DXQUATE
void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle)
{
- FLOAT norm;
-
- *pangle = 0.0f;
- norm = D3DXQuaternionLength(pq);
- if ( norm )
- {
- paxis->x = pq->x / norm;
- paxis->y = pq->y / norm;
- paxis->z = pq->z / norm;
- if ( fabs( pq->w ) <= 1.0f ) *pangle = 2.0f * acos(pq->w);
- }
- else
- {
- paxis->x = 1.0f;
- paxis->y = 0.0f;
- paxis->z = 0.0f;
- }
+ paxis->x = pq->x;
+ paxis->y = pq->y;
+ paxis->z = pq->z;
+ *pangle = 2.0f * acos(pq->w);
}
/*_________________D3DXVec2_____________________*/
diff --git a/dlls/d3dx9_36/tests/math.c b/dlls/d3dx9_36/tests/math.c
index 1fe12c7..d55a0d4 100644
--- a/dlls/d3dx9_36/tests/math.c
+++ b/dlls/d3dx9_36/tests/math.c
@@ -938,20 +938,19 @@ static void D3DXQuaternionTest(void)
/*_______________D3DXQuaternionToAxisAngle__________________*/
Nq.x = 1.0f/22.0f; Nq.y = 2.0f/22.0f; Nq.z = 4.0f/22.0f; Nq.w = 10.0f/22.0f;
- expectedvec.x = 1.0f/11.0f; expectedvec.y = 2.0f/11.0f; expectedvec.z = 4.0f/11.0f;
+ expectedvec.x = 1.0f/22.0f; expectedvec.y = 2.0f/22.0f; expectedvec.z = 4.0f/22.0f;
expected = 2.197869f;
D3DXQuaternionToAxisAngle(&Nq,&axis,&angle);
expect_vec3(expectedvec,axis);
ok(fabs( angle - expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle);
/* Test if |w|>1.0f */
- expectedvec.x = 1.0f/11.0f; expectedvec.y = 2.0f/11.0f; expectedvec.z = 4.0f/11.0f;
+ expectedvec.x = 1.0f; expectedvec.y = 2.0f; expectedvec.z = 4.0f;
expected = 0.0f;
D3DXQuaternionToAxisAngle(&q,&axis,&angle);
expect_vec3(expectedvec,axis);
- ok(fabs( angle - expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle);
/* Test the null quaternion */
- expectedvec.x = 1.0f; expectedvec.y = 0.0f; expectedvec.z = 0.0f;
- expected = 0.0f;
+ expectedvec.x = 0.0f; expectedvec.y = 0.0f; expectedvec.z = 0.0f;
+ expected = 3.141593f;
D3DXQuaternionToAxisAngle(&nul,&axis,&angle);
expect_vec3(expectedvec,axis);
ok(fabs( angle - expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle);
More information about the wine-cvs
mailing list