[PATCH 1/5] d3dx9/tests: Get rid of compare_rotation.
Henri Verbeet
hverbeet at codeweavers.com
Wed Apr 26 16:27:33 CDT 2017
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/d3dx9_36/tests/math.c | 222 ++++++++++++++++++++++-----------------------
1 file changed, 109 insertions(+), 113 deletions(-)
diff --git a/dlls/d3dx9_36/tests/math.c b/dlls/d3dx9_36/tests/math.c
index 586be2d..8bbde4e 100644
--- a/dlls/d3dx9_36/tests/math.c
+++ b/dlls/d3dx9_36/tests/math.c
@@ -180,15 +180,6 @@ static void expect_matrix_(unsigned int line, const D3DXMATRIX *expected, const
U(*expected).m[3][0], U(*expected).m[3][1], U(*expected).m[3][2], U(*expected).m[3][3]);
}
-#define compare_rotation(exp, got) \
- ok(relative_error(exp.w, got.w) < admitted_error && \
- relative_error(exp.x, got.x) < admitted_error && \
- relative_error(exp.y, got.y) < admitted_error && \
- relative_error(exp.z, got.z) < admitted_error, \
- "Expected rotation = (%f, %f, %f, %f), \
- got rotation = (%f, %f, %f, %f)\n", \
- exp.w, exp.x, exp.y, exp.z, got.w, got.x, got.y, got.z)
-
#define compare_scale(exp, got) \
ok(relative_error(exp.x, got.x) < admitted_error && \
relative_error(exp.y, got.y) < admitted_error && \
@@ -1904,34 +1895,35 @@ static void test_Matrix_Decompose(void)
D3DXQUATERNION exp_rotation, got_rotation;
D3DXVECTOR3 exp_scale, got_scale, exp_translation, got_translation;
HRESULT hr;
+ BOOL equal;
/*___________*/
- U(pm).m[0][0] = -0.9238790f;
- U(pm).m[1][0] = -0.2705984f;
- U(pm).m[2][0] = 0.2705984f;
- U(pm).m[3][0] = -5.0f;
- U(pm).m[0][1] = 0.2705984f;
- U(pm).m[1][1] = 0.03806049f;
- U(pm).m[2][1] = 0.9619395f;
- U(pm).m[3][1] = 0.0f;
- U(pm).m[0][2] = -0.2705984f;
- U(pm).m[1][2] = 0.9619395f;
- U(pm).m[2][2] = 0.03806049f;
- U(pm).m[3][2] = 10.0f;
- U(pm).m[0][3] = 0.0f;
- U(pm).m[1][3] = 0.0f;
- U(pm).m[2][3] = 0.0f;
- U(pm).m[3][3] = 1.0f;
+ U(pm).m[0][0] = -9.23879206e-01f;
+ U(pm).m[1][0] = -2.70598412e-01f;
+ U(pm).m[2][0] = 2.70598441e-01f;
+ U(pm).m[3][0] = -5.00000000e+00f;
+ U(pm).m[0][1] = 2.70598471e-01f;
+ U(pm).m[1][1] = 3.80604863e-02f;
+ U(pm).m[2][1] = 9.61939573e-01f;
+ U(pm).m[3][1] = 0.00000000e+00f;
+ U(pm).m[0][2] = -2.70598441e-01f;
+ U(pm).m[1][2] = 9.61939573e-01f;
+ U(pm).m[2][2] = 3.80603075e-02f;
+ U(pm).m[3][2] = 1.00000000e+01f;
+ U(pm).m[0][3] = 0.00000000e+00f;
+ U(pm).m[1][3] = 0.00000000e+00f;
+ U(pm).m[2][3] = 0.00000000e+00f;
+ U(pm).m[3][3] = 1.00000000e+00f;
exp_scale.x = 1.0f;
exp_scale.y = 1.0f;
exp_scale.z = 1.0f;
- exp_rotation.w = 0.195091f;
- exp_rotation.x = 0.0f;
- exp_rotation.y = 0.693520f;
- exp_rotation.z = 0.693520f;
+ exp_rotation.x = 2.14862776e-08f;
+ exp_rotation.y = 6.93519890e-01f;
+ exp_rotation.z = 6.93519890e-01f;
+ exp_rotation.w = 1.95090637e-01f;
exp_translation.x = -5.0f;
exp_translation.y = 0.0f;
@@ -1940,7 +1932,7 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 1);
compare_translation(exp_translation, got_translation);
/*_________*/
@@ -1966,10 +1958,10 @@ static void test_Matrix_Decompose(void)
exp_scale.y = 3.0f;
exp_scale.z = 3.0f;
- exp_rotation.w = 0.0;
- exp_rotation.x = 0.352180f;
- exp_rotation.y = 0.616316f;
- exp_rotation.z = 0.704361f;
+ exp_rotation.x = 3.52180451e-01f;
+ exp_rotation.y = 6.16315663e-01f;
+ exp_rotation.z = 7.04360664e-01f;
+ exp_rotation.w = 3.38489343e-07f;
exp_translation.x = 1.0f;
exp_translation.y = 2.0f;
@@ -1978,7 +1970,7 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 2);
compare_translation(exp_translation, got_translation);
/*_____________*/
@@ -2004,10 +1996,10 @@ static void test_Matrix_Decompose(void)
exp_scale.y = 3.0f;
exp_scale.z = 3.0f;
- exp_rotation.w = 0.951057f;
- exp_rotation.x = 0.0f;
- exp_rotation.y = 0.309017f;
- exp_rotation.z = 0.0f;
+ exp_rotation.x = 0.00000000e+00f;
+ exp_rotation.y = 3.09016883e-01f;
+ exp_rotation.z = 0.00000000e+00f;
+ exp_rotation.w = 9.51056540e-01f;
exp_translation.x = 5.0f;
exp_translation.y = 5.0f;
@@ -2016,36 +2008,36 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 1);
compare_translation(exp_translation, got_translation);
/*_____________*/
- U(pm).m[0][0] = -0.9238790f;
- U(pm).m[1][0] = -0.2705984f;
- U(pm).m[2][0] = 0.2705984f;
- U(pm).m[3][0] = -5.0f;
- U(pm).m[0][1] = 0.2705984f;
- U(pm).m[1][1] = 0.03806049f;
- U(pm).m[2][1] = 0.9619395f;
- U(pm).m[3][1] = 0.0f;
- U(pm).m[0][2] = -0.2705984f;
- U(pm).m[1][2] = 0.9619395f;
- U(pm).m[2][2] = 0.03806049f;
- U(pm).m[3][2] = 10.0f;
- U(pm).m[0][3] = 0.0f;
- U(pm).m[1][3] = 0.0f;
- U(pm).m[2][3] = 0.0f;
- U(pm).m[3][3] = 1.0f;
+ U(pm).m[0][0] = -9.23879206e-01f;
+ U(pm).m[1][0] = -2.70598412e-01f;
+ U(pm).m[2][0] = 2.70598441e-01f;
+ U(pm).m[3][0] = -5.00000000e+00f;
+ U(pm).m[0][1] = 2.70598471e-01f;
+ U(pm).m[1][1] = 3.80604863e-02f;
+ U(pm).m[2][1] = 9.61939573e-01f;
+ U(pm).m[3][1] = 0.00000000e+00f;
+ U(pm).m[0][2] = -2.70598441e-01f;
+ U(pm).m[1][2] = 9.61939573e-01f;
+ U(pm).m[2][2] = 3.80603075e-02f;
+ U(pm).m[3][2] = 1.00000000e+01f;
+ U(pm).m[0][3] = 0.00000000e+00f;
+ U(pm).m[1][3] = 0.00000000e+00f;
+ U(pm).m[2][3] = 0.00000000e+00f;
+ U(pm).m[3][3] = 1.00000000e+00f;
exp_scale.x = 1.0f;
exp_scale.y = 1.0f;
exp_scale.z = 1.0f;
- exp_rotation.w = 0.195091f;
- exp_rotation.x = 0.0f;
- exp_rotation.y = 0.693520f;
- exp_rotation.z = 0.693520f;
+ exp_rotation.x = 2.14862776e-08f;
+ exp_rotation.y = 6.93519890e-01f;
+ exp_rotation.z = 6.93519890e-01f;
+ exp_rotation.w = 1.95090637e-01f;
exp_translation.x = -5.0f;
exp_translation.y = 0.0f;
@@ -2054,36 +2046,36 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 1);
compare_translation(exp_translation, got_translation);
/*__________*/
- U(pm).m[0][0] = -0.9238790f;
- U(pm).m[1][0] = -0.5411968f;
- U(pm).m[2][0] = 0.8117952f;
- U(pm).m[3][0] = -5.0f;
- U(pm).m[0][1] = 0.2705984f;
- U(pm).m[1][1] = 0.07612098f;
- U(pm).m[2][1] = 2.8858185f;
- U(pm).m[3][1] = 0.0f;
- U(pm).m[0][2] = -0.2705984f;
- U(pm).m[1][2] = 1.9238790f;
- U(pm).m[2][2] = 0.11418147f;
- U(pm).m[3][2] = 10.0f;
- U(pm).m[0][3] = 0.0f;
- U(pm).m[1][3] = 0.0f;
- U(pm).m[2][3] = 0.0f;
- U(pm).m[3][3] = 1.0f;
+ U(pm).m[0][0] = -9.23878908e-01f;
+ U(pm).m[1][0] = -5.41196704e-01f;
+ U(pm).m[2][0] = 8.11795175e-01f;
+ U(pm).m[3][0] = -5.00000000e+00f;
+ U(pm).m[0][1] = 2.70598322e-01f;
+ U(pm).m[1][1] = 7.61209577e-02f;
+ U(pm).m[2][1] = 2.88581824e+00f;
+ U(pm).m[3][1] = 0.00000000e+00f;
+ U(pm).m[0][2] = -2.70598352e-01f;
+ U(pm).m[1][2] = 1.92387879e+00f;
+ U(pm).m[2][2] = 1.14180908e-01f;
+ U(pm).m[3][2] = 1.00000000e+01f;
+ U(pm).m[0][3] = 0.00000000e+00f;
+ U(pm).m[1][3] = 0.00000000e+00f;
+ U(pm).m[2][3] = 0.00000000e+00f;
+ U(pm).m[3][3] = 1.00000000e+00f;
exp_scale.x = 1.0f;
exp_scale.y = 2.0f;
exp_scale.z = 3.0f;
- exp_rotation.w = 0.195091f;
- exp_rotation.x = 0.0f;
- exp_rotation.y = 0.693520f;
- exp_rotation.z = 0.693520f;
+ exp_rotation.x = 1.07431388e-08f;
+ exp_rotation.y = 6.93519890e-01f;
+ exp_rotation.z = 6.93519831e-01f;
+ exp_rotation.w = 1.95090622e-01f;
exp_translation.x = -5.0f;
exp_translation.y = 0.0f;
@@ -2092,7 +2084,11 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ equal = compare_quaternion(&exp_rotation, &got_rotation, 1);
+ exp_rotation.x = 0.0f;
+ equal |= compare_quaternion(&exp_rotation, &got_rotation, 2);
+ ok(equal, "Got unexpected quaternion {%.8e, %.8e, %.8e, %.8e}.\n",
+ got_rotation.x, got_rotation.y, got_rotation.z, got_rotation.w);
compare_translation(exp_translation, got_translation);
/*__________*/
@@ -2118,10 +2114,10 @@ static void test_Matrix_Decompose(void)
exp_scale.y = 1.0f;
exp_scale.z = 1.0f;
- exp_rotation.w = 0.195091f;
- exp_rotation.x = 0.905395f;
- exp_rotation.y = -0.323355f;
- exp_rotation.z = -0.194013f;
+ exp_rotation.x = 9.05394852e-01f;
+ exp_rotation.y = -3.23355347e-01f;
+ exp_rotation.z = -1.94013178e-01f;
+ exp_rotation.w = 1.95090592e-01f;
exp_translation.x = -5.0f;
exp_translation.y = 0.0f;
@@ -2130,7 +2126,7 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 1);
compare_translation(exp_translation, got_translation);
/*_____________*/
@@ -2156,10 +2152,10 @@ static void test_Matrix_Decompose(void)
exp_scale.y = 1.0f;
exp_scale.z = 1.0f;
- exp_rotation.w = -0.195091f;
- exp_rotation.x = 0.703358f;
- exp_rotation.y = -0.586131f;
- exp_rotation.z = 0.351679f;
+ exp_rotation.x = 7.03357518e-01f;
+ exp_rotation.y = -5.86131275e-01f;
+ exp_rotation.z = 3.51678789e-01f;
+ exp_rotation.w = -1.95090577e-01f;
exp_translation.x = -5.0f;
exp_translation.y = 0.0f;
@@ -2168,36 +2164,36 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 2);
compare_translation(exp_translation, got_translation);
/*_________*/
- U(pm).m[0][0] = 7.121047f;
- U(pm).m[1][0] = -5.883487f;
- U(pm).m[2][0] = 11.81843f;
- U(pm).m[3][0] = -5.0f;
- U(pm).m[0][1] = 5.883487f;
- U(pm).m[1][1] = -10.60660f;
- U(pm).m[2][1] = -8.825232f;
- U(pm).m[3][1] = 0.0f;
- U(pm).m[0][2] = 11.81843f;
- U(pm).m[1][2] = 8.8252320f;
- U(pm).m[2][2] = -2.727645f;
- U(pm).m[3][2] = 2.0f;
- U(pm).m[0][3] = 0.0f;
- U(pm).m[1][3] = 0.0f;
- U(pm).m[2][3] = 0.0f;
- U(pm).m[3][3] = 1.0f;
+ U(pm).m[0][0] = 7.12104797e+00f;
+ U(pm).m[1][0] = -5.88348627e+00f;
+ U(pm).m[2][0] = 1.18184204e+01f;
+ U(pm).m[3][0] = -5.00000000e+00f;
+ U(pm).m[0][1] = 5.88348627e+00f;
+ U(pm).m[1][1] = -1.06065865e+01f;
+ U(pm).m[2][1] = -8.82523251e+00f;
+ U(pm).m[3][1] = 0.00000000e+00f;
+ U(pm).m[0][2] = 1.18184204e+01f;
+ U(pm).m[1][2] = 8.82523155e+00f;
+ U(pm).m[2][2] = -2.72764111e+00f;
+ U(pm).m[3][2] = 2.00000000e+00f;
+ U(pm).m[0][3] = 0.00000000e+00f;
+ U(pm).m[1][3] = 0.00000000e+00f;
+ U(pm).m[2][3] = 0.00000000e+00f;
+ U(pm).m[3][3] = 1.00000000e+00f;
exp_scale.x = 15.0f;
exp_scale.y = 15.0f;
exp_scale.z = 15.0f;
- exp_rotation.w = 0.382684f;
- exp_rotation.x = 0.768714f;
- exp_rotation.y = 0.0f;
- exp_rotation.z = 0.512476f;
+ exp_rotation.x = 7.68714130e-01f;
+ exp_rotation.y = 0.00000000e+00f;
+ exp_rotation.z = 5.12475967e-01f;
+ exp_rotation.w = 3.82683903e-01f;
exp_translation.x = -5.0f;
exp_translation.y = 0.0f;
@@ -2206,7 +2202,7 @@ static void test_Matrix_Decompose(void)
D3DXMatrixDecompose(&got_scale, &got_rotation, &got_translation, &pm);
compare_scale(exp_scale, got_scale);
- compare_rotation(exp_rotation, got_rotation);
+ expect_quaternion(&exp_rotation, &got_rotation, 1);
compare_translation(exp_translation, got_translation);
/*__________*/
--
2.1.4
More information about the wine-patches
mailing list