1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2015 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // matrix_utils_unittests:
7*8975f5c5SAndroid Build Coastguard Worker // Unit tests for the matrix utils.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker
10*8975f5c5SAndroid Build Coastguard Worker #include "matrix_utils.h"
11*8975f5c5SAndroid Build Coastguard Worker
12*8975f5c5SAndroid Build Coastguard Worker #include <gtest/gtest.h>
13*8975f5c5SAndroid Build Coastguard Worker
14*8975f5c5SAndroid Build Coastguard Worker using namespace angle;
15*8975f5c5SAndroid Build Coastguard Worker
16*8975f5c5SAndroid Build Coastguard Worker namespace
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker
19*8975f5c5SAndroid Build Coastguard Worker struct RotateArgs
20*8975f5c5SAndroid Build Coastguard Worker {
21*8975f5c5SAndroid Build Coastguard Worker float angle;
22*8975f5c5SAndroid Build Coastguard Worker Vector3 axis;
23*8975f5c5SAndroid Build Coastguard Worker };
24*8975f5c5SAndroid Build Coastguard Worker
25*8975f5c5SAndroid Build Coastguard Worker struct TranslateArgs
26*8975f5c5SAndroid Build Coastguard Worker {
27*8975f5c5SAndroid Build Coastguard Worker float x;
28*8975f5c5SAndroid Build Coastguard Worker float y;
29*8975f5c5SAndroid Build Coastguard Worker float z;
30*8975f5c5SAndroid Build Coastguard Worker };
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard Worker struct ScaleArgs
33*8975f5c5SAndroid Build Coastguard Worker {
34*8975f5c5SAndroid Build Coastguard Worker float x;
35*8975f5c5SAndroid Build Coastguard Worker float y;
36*8975f5c5SAndroid Build Coastguard Worker float z;
37*8975f5c5SAndroid Build Coastguard Worker };
38*8975f5c5SAndroid Build Coastguard Worker
39*8975f5c5SAndroid Build Coastguard Worker struct FrustumArgs
40*8975f5c5SAndroid Build Coastguard Worker {
41*8975f5c5SAndroid Build Coastguard Worker float l;
42*8975f5c5SAndroid Build Coastguard Worker float r;
43*8975f5c5SAndroid Build Coastguard Worker float b;
44*8975f5c5SAndroid Build Coastguard Worker float t;
45*8975f5c5SAndroid Build Coastguard Worker float n;
46*8975f5c5SAndroid Build Coastguard Worker float f;
47*8975f5c5SAndroid Build Coastguard Worker };
48*8975f5c5SAndroid Build Coastguard Worker
CheckMat4ExactlyEq(const Mat4 & a,const Mat4 & b)49*8975f5c5SAndroid Build Coastguard Worker void CheckMat4ExactlyEq(const Mat4 &a, const Mat4 &b)
50*8975f5c5SAndroid Build Coastguard Worker {
51*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = 0; i < 4; i++)
52*8975f5c5SAndroid Build Coastguard Worker {
53*8975f5c5SAndroid Build Coastguard Worker for (unsigned int j = 0; i < 4; i++)
54*8975f5c5SAndroid Build Coastguard Worker {
55*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(a.at(i, j), b.at(i, j));
56*8975f5c5SAndroid Build Coastguard Worker }
57*8975f5c5SAndroid Build Coastguard Worker }
58*8975f5c5SAndroid Build Coastguard Worker }
59*8975f5c5SAndroid Build Coastguard Worker
60*8975f5c5SAndroid Build Coastguard Worker // TODO(lfy): Spec out requirements for matrix precision
CheckMatrixCloseToGolden(float * golden,const Mat4 & m)61*8975f5c5SAndroid Build Coastguard Worker void CheckMatrixCloseToGolden(float *golden, const Mat4 &m)
62*8975f5c5SAndroid Build Coastguard Worker {
63*8975f5c5SAndroid Build Coastguard Worker const float floatFaultTolarance = 0.000001f;
64*8975f5c5SAndroid Build Coastguard Worker const auto &checkElts = m.elements();
65*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < checkElts.size(); i++)
66*8975f5c5SAndroid Build Coastguard Worker {
67*8975f5c5SAndroid Build Coastguard Worker EXPECT_NEAR(golden[i], checkElts[i], floatFaultTolarance);
68*8975f5c5SAndroid Build Coastguard Worker }
69*8975f5c5SAndroid Build Coastguard Worker }
70*8975f5c5SAndroid Build Coastguard Worker
CheckMatrixCloseToGolden(const std::vector<float> & golden,const Mat4 & m)71*8975f5c5SAndroid Build Coastguard Worker void CheckMatrixCloseToGolden(const std::vector<float> &golden, const Mat4 &m)
72*8975f5c5SAndroid Build Coastguard Worker {
73*8975f5c5SAndroid Build Coastguard Worker const float floatFaultTolarance = 0.000001f;
74*8975f5c5SAndroid Build Coastguard Worker const auto &checkElts = m.elements();
75*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < golden.size(); i++)
76*8975f5c5SAndroid Build Coastguard Worker {
77*8975f5c5SAndroid Build Coastguard Worker EXPECT_NEAR(golden[i], checkElts[i], floatFaultTolarance);
78*8975f5c5SAndroid Build Coastguard Worker }
79*8975f5c5SAndroid Build Coastguard Worker }
80*8975f5c5SAndroid Build Coastguard Worker } // namespace
81*8975f5c5SAndroid Build Coastguard Worker
82*8975f5c5SAndroid Build Coastguard Worker namespace
83*8975f5c5SAndroid Build Coastguard Worker {
84*8975f5c5SAndroid Build Coastguard Worker
85*8975f5c5SAndroid Build Coastguard Worker const unsigned int minDimensions = 2;
86*8975f5c5SAndroid Build Coastguard Worker const unsigned int maxDimensions = 4;
87*8975f5c5SAndroid Build Coastguard Worker
TEST(MatrixUtilsTest,MatrixConstructorTest)88*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, MatrixConstructorTest)
89*8975f5c5SAndroid Build Coastguard Worker {
90*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = minDimensions; i <= maxDimensions; i++)
91*8975f5c5SAndroid Build Coastguard Worker {
92*8975f5c5SAndroid Build Coastguard Worker for (unsigned int j = minDimensions; j <= maxDimensions; j++)
93*8975f5c5SAndroid Build Coastguard Worker {
94*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = i * j;
95*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m(std::vector<float>(numElements, 1.0f), i, j);
96*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.rows(), i);
97*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.columns(), j);
98*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.elements(), std::vector<float>(numElements, 1.0f));
99*8975f5c5SAndroid Build Coastguard Worker }
100*8975f5c5SAndroid Build Coastguard Worker }
101*8975f5c5SAndroid Build Coastguard Worker
102*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = minDimensions; i <= maxDimensions; i++)
103*8975f5c5SAndroid Build Coastguard Worker {
104*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = i * i;
105*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m(std::vector<float>(numElements, 1.0f), i);
106*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.size(), i);
107*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.columns(), m.columns());
108*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.elements(), std::vector<float>(numElements, 1.0f));
109*8975f5c5SAndroid Build Coastguard Worker }
110*8975f5c5SAndroid Build Coastguard Worker }
111*8975f5c5SAndroid Build Coastguard Worker
TEST(MatrixUtilsTest,MatrixCompMultTest)112*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, MatrixCompMultTest)
113*8975f5c5SAndroid Build Coastguard Worker {
114*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = minDimensions; i <= maxDimensions; i++)
115*8975f5c5SAndroid Build Coastguard Worker {
116*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = i * i;
117*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m1(std::vector<float>(numElements, 2.0f), i);
118*8975f5c5SAndroid Build Coastguard Worker Matrix<float> actualResult = m1.compMult(m1);
119*8975f5c5SAndroid Build Coastguard Worker std::vector<float> actualResultElements = actualResult.elements();
120*8975f5c5SAndroid Build Coastguard Worker std::vector<float> expectedResultElements(numElements, 4.0f);
121*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(expectedResultElements, actualResultElements);
122*8975f5c5SAndroid Build Coastguard Worker }
123*8975f5c5SAndroid Build Coastguard Worker }
124*8975f5c5SAndroid Build Coastguard Worker
TEST(MatrixUtilsTest,MatrixOuterProductTest)125*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, MatrixOuterProductTest)
126*8975f5c5SAndroid Build Coastguard Worker {
127*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = minDimensions; i <= maxDimensions; i++)
128*8975f5c5SAndroid Build Coastguard Worker {
129*8975f5c5SAndroid Build Coastguard Worker for (unsigned int j = minDimensions; j <= maxDimensions; j++)
130*8975f5c5SAndroid Build Coastguard Worker {
131*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = i * j;
132*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m1(std::vector<float>(numElements, 2.0f), i, 1);
133*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m2(std::vector<float>(numElements, 2.0f), 1, j);
134*8975f5c5SAndroid Build Coastguard Worker Matrix<float> actualResult = m1.outerProduct(m2);
135*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(actualResult.rows(), i);
136*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(actualResult.columns(), j);
137*8975f5c5SAndroid Build Coastguard Worker std::vector<float> actualResultElements = actualResult.elements();
138*8975f5c5SAndroid Build Coastguard Worker std::vector<float> expectedResultElements(numElements, 4.0f);
139*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(expectedResultElements, actualResultElements);
140*8975f5c5SAndroid Build Coastguard Worker }
141*8975f5c5SAndroid Build Coastguard Worker }
142*8975f5c5SAndroid Build Coastguard Worker }
143*8975f5c5SAndroid Build Coastguard Worker
TEST(MatrixUtilsTest,MatrixTransposeTest)144*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, MatrixTransposeTest)
145*8975f5c5SAndroid Build Coastguard Worker {
146*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = minDimensions; i <= maxDimensions; i++)
147*8975f5c5SAndroid Build Coastguard Worker {
148*8975f5c5SAndroid Build Coastguard Worker for (unsigned int j = minDimensions; j <= maxDimensions; j++)
149*8975f5c5SAndroid Build Coastguard Worker {
150*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = i * j;
151*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m1(std::vector<float>(numElements, 2.0f), i, j);
152*8975f5c5SAndroid Build Coastguard Worker Matrix<float> expectedResult =
153*8975f5c5SAndroid Build Coastguard Worker Matrix<float>(std::vector<float>(numElements, 2.0f), j, i);
154*8975f5c5SAndroid Build Coastguard Worker Matrix<float> actualResult = m1.transpose();
155*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(expectedResult.elements(), actualResult.elements());
156*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(actualResult.rows(), expectedResult.rows());
157*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(actualResult.columns(), expectedResult.columns());
158*8975f5c5SAndroid Build Coastguard Worker // transpose(transpose(A)) = A
159*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m2 = actualResult.transpose();
160*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m1.elements(), m2.elements());
161*8975f5c5SAndroid Build Coastguard Worker }
162*8975f5c5SAndroid Build Coastguard Worker }
163*8975f5c5SAndroid Build Coastguard Worker }
164*8975f5c5SAndroid Build Coastguard Worker
TEST(MatrixUtilsTest,MatrixDeterminantTest)165*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, MatrixDeterminantTest)
166*8975f5c5SAndroid Build Coastguard Worker {
167*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = minDimensions; i <= maxDimensions; i++)
168*8975f5c5SAndroid Build Coastguard Worker {
169*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = i * i;
170*8975f5c5SAndroid Build Coastguard Worker Matrix<float> m(std::vector<float>(numElements, 2.0f), i);
171*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(m.determinant(), 0.0f);
172*8975f5c5SAndroid Build Coastguard Worker }
173*8975f5c5SAndroid Build Coastguard Worker }
174*8975f5c5SAndroid Build Coastguard Worker
175*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, 2x2MatrixInverseTest)
176*8975f5c5SAndroid Build Coastguard Worker {
177*8975f5c5SAndroid Build Coastguard Worker float inputElements[] = {2.0f, 5.0f, 3.0f, 7.0f};
178*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = 4;
179*8975f5c5SAndroid Build Coastguard Worker std::vector<float> input(inputElements, inputElements + numElements);
180*8975f5c5SAndroid Build Coastguard Worker Matrix<float> inputMatrix(input, 2);
181*8975f5c5SAndroid Build Coastguard Worker float identityElements[] = {1.0f, 0.0f, 0.0f, 1.0f};
182*8975f5c5SAndroid Build Coastguard Worker std::vector<float> identityMatrix(identityElements, identityElements + numElements);
183*8975f5c5SAndroid Build Coastguard Worker // A * inverse(A) = I, where I is identity matrix.
184*8975f5c5SAndroid Build Coastguard Worker Matrix<float> result = inputMatrix * inputMatrix.inverse();
185*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(identityMatrix, result.elements());
186*8975f5c5SAndroid Build Coastguard Worker }
187*8975f5c5SAndroid Build Coastguard Worker
188*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, 3x3MatrixInverseTest)
189*8975f5c5SAndroid Build Coastguard Worker {
190*8975f5c5SAndroid Build Coastguard Worker float inputElements[] = {11.0f, 23.0f, 37.0f, 13.0f, 29.0f, 41.0f, 19.0f, 31.0f, 43.0f};
191*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = 9;
192*8975f5c5SAndroid Build Coastguard Worker std::vector<float> input(inputElements, inputElements + numElements);
193*8975f5c5SAndroid Build Coastguard Worker Matrix<float> inputMatrix(input, 3);
194*8975f5c5SAndroid Build Coastguard Worker float identityElements[] = {1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f};
195*8975f5c5SAndroid Build Coastguard Worker std::vector<float> identityMatrix(identityElements, identityElements + numElements);
196*8975f5c5SAndroid Build Coastguard Worker // A * inverse(A) = I, where I is identity matrix.
197*8975f5c5SAndroid Build Coastguard Worker Matrix<float> result = inputMatrix * inputMatrix.inverse();
198*8975f5c5SAndroid Build Coastguard Worker std::vector<float> resultElements = result.elements();
199*8975f5c5SAndroid Build Coastguard Worker const float floatFaultTolarance = 0.000001f;
200*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < numElements; i++)
201*8975f5c5SAndroid Build Coastguard Worker EXPECT_NEAR(resultElements[i], identityMatrix[i], floatFaultTolarance);
202*8975f5c5SAndroid Build Coastguard Worker }
203*8975f5c5SAndroid Build Coastguard Worker
204*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, 4x4MatrixInverseTest)
205*8975f5c5SAndroid Build Coastguard Worker {
206*8975f5c5SAndroid Build Coastguard Worker float inputElements[] = {29.0f, 43.0f, 61.0f, 79.0f, 31.0f, 47.0f, 67.0f, 83.0f,
207*8975f5c5SAndroid Build Coastguard Worker 37.0f, 53.0f, 71.0f, 89.0f, 41.0f, 59.0f, 73.0f, 97.0f};
208*8975f5c5SAndroid Build Coastguard Worker unsigned int numElements = 16;
209*8975f5c5SAndroid Build Coastguard Worker std::vector<float> input(inputElements, inputElements + numElements);
210*8975f5c5SAndroid Build Coastguard Worker Matrix<float> inputMatrix(input, 4);
211*8975f5c5SAndroid Build Coastguard Worker float identityElements[] = {
212*8975f5c5SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
213*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
214*8975f5c5SAndroid Build Coastguard Worker };
215*8975f5c5SAndroid Build Coastguard Worker std::vector<float> identityMatrix(identityElements, identityElements + numElements);
216*8975f5c5SAndroid Build Coastguard Worker // A * inverse(A) = I, where I is identity matrix.
217*8975f5c5SAndroid Build Coastguard Worker Matrix<float> result = inputMatrix * inputMatrix.inverse();
218*8975f5c5SAndroid Build Coastguard Worker std::vector<float> resultElements = result.elements();
219*8975f5c5SAndroid Build Coastguard Worker const float floatFaultTolarance = 0.00001f;
220*8975f5c5SAndroid Build Coastguard Worker for (unsigned int i = 0; i < numElements; i++)
221*8975f5c5SAndroid Build Coastguard Worker EXPECT_NEAR(resultElements[i], identityMatrix[i], floatFaultTolarance);
222*8975f5c5SAndroid Build Coastguard Worker }
223*8975f5c5SAndroid Build Coastguard Worker
224*8975f5c5SAndroid Build Coastguard Worker // Tests constructors for mat4; using raw float*, std::vector<float>,
225*8975f5c5SAndroid Build Coastguard Worker // and Matrix<float>.
TEST(MatrixUtilsTest,Mat4Construction)226*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Construction)
227*8975f5c5SAndroid Build Coastguard Worker {
228*8975f5c5SAndroid Build Coastguard Worker float elements[] = {
229*8975f5c5SAndroid Build Coastguard Worker 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f,
230*8975f5c5SAndroid Build Coastguard Worker 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f,
231*8975f5c5SAndroid Build Coastguard Worker };
232*8975f5c5SAndroid Build Coastguard Worker
233*8975f5c5SAndroid Build Coastguard Worker std::vector<float> elementsVector(16, 0);
234*8975f5c5SAndroid Build Coastguard Worker for (int i = 0; i < 16; i++)
235*8975f5c5SAndroid Build Coastguard Worker {
236*8975f5c5SAndroid Build Coastguard Worker elementsVector[i] = elements[i];
237*8975f5c5SAndroid Build Coastguard Worker }
238*8975f5c5SAndroid Build Coastguard Worker
239*8975f5c5SAndroid Build Coastguard Worker Matrix<float> a(elements, 4);
240*8975f5c5SAndroid Build Coastguard Worker Mat4 b(elements);
241*8975f5c5SAndroid Build Coastguard Worker Mat4 bVec(elementsVector);
242*8975f5c5SAndroid Build Coastguard Worker
243*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(a, b);
244*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(b, bVec);
245*8975f5c5SAndroid Build Coastguard Worker
246*8975f5c5SAndroid Build Coastguard Worker a.setToIdentity();
247*8975f5c5SAndroid Build Coastguard Worker b = Mat4();
248*8975f5c5SAndroid Build Coastguard Worker
249*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(a, b);
250*8975f5c5SAndroid Build Coastguard Worker
251*8975f5c5SAndroid Build Coastguard Worker Mat4 c(0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f,
252*8975f5c5SAndroid Build Coastguard Worker 14.0f, 15.0f);
253*8975f5c5SAndroid Build Coastguard Worker Mat4 d(elements);
254*8975f5c5SAndroid Build Coastguard Worker Mat4 e(Matrix<float>(elements, 4));
255*8975f5c5SAndroid Build Coastguard Worker
256*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(c, d);
257*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(e, d);
258*8975f5c5SAndroid Build Coastguard Worker }
259*8975f5c5SAndroid Build Coastguard Worker
260*8975f5c5SAndroid Build Coastguard Worker // Tests rotation matrices.
TEST(MatrixUtilsTest,Mat4Rotate)261*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Rotate)
262*8975f5c5SAndroid Build Coastguard Worker {
263*8975f5c5SAndroid Build Coastguard Worker // Confidence check.
264*8975f5c5SAndroid Build Coastguard Worker float elementsExpected[] = {
265*8975f5c5SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
266*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
267*8975f5c5SAndroid Build Coastguard Worker };
268*8975f5c5SAndroid Build Coastguard Worker
269*8975f5c5SAndroid Build Coastguard Worker std::vector<float> elementsExpectedVector(16, 0);
270*8975f5c5SAndroid Build Coastguard Worker for (int i = 0; i < 16; i++)
271*8975f5c5SAndroid Build Coastguard Worker {
272*8975f5c5SAndroid Build Coastguard Worker elementsExpectedVector[i] = elementsExpected[i];
273*8975f5c5SAndroid Build Coastguard Worker }
274*8975f5c5SAndroid Build Coastguard Worker
275*8975f5c5SAndroid Build Coastguard Worker Mat4 r = Mat4::Rotate(0.f, Vector3(0.f, 0.f, 1.f));
276*8975f5c5SAndroid Build Coastguard Worker Mat4 golden(elementsExpected);
277*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(elementsExpected, r);
278*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(elementsExpectedVector, r);
279*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(r, golden);
280*8975f5c5SAndroid Build Coastguard Worker
281*8975f5c5SAndroid Build Coastguard Worker // Randomly-generated inputs, outputs using GLM.
282*8975f5c5SAndroid Build Coastguard Worker std::vector<RotateArgs> rotationGoldenInputs;
283*8975f5c5SAndroid Build Coastguard Worker std::vector<std::vector<float>> rotationGoldenOutputs;
284*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
285*8975f5c5SAndroid Build Coastguard Worker {-123.2026214599609375f,
286*8975f5c5SAndroid Build Coastguard Worker Vector3(1.4951171875000000f, 8.4370708465576172f, 1.8489227294921875f)});
287*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
288*8975f5c5SAndroid Build Coastguard Worker {-185.3049316406250000f,
289*8975f5c5SAndroid Build Coastguard Worker Vector3(8.3313980102539062f, 5.8317651748657227f, -5.5201716423034668f)});
290*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
291*8975f5c5SAndroid Build Coastguard Worker {89.1301574707031250f,
292*8975f5c5SAndroid Build Coastguard Worker Vector3(-8.5962724685668945f, 2.4547367095947266f, -3.2461600303649902f)});
293*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
294*8975f5c5SAndroid Build Coastguard Worker {64.2547302246093750f,
295*8975f5c5SAndroid Build Coastguard Worker Vector3(-1.9640445709228516f, -9.6942234039306641f, 9.1921043395996094f)});
296*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
297*8975f5c5SAndroid Build Coastguard Worker {-298.5585021972656250f,
298*8975f5c5SAndroid Build Coastguard Worker Vector3(-5.3600544929504395f, -6.4333534240722656f, -5.3734750747680664f)});
299*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
300*8975f5c5SAndroid Build Coastguard Worker {288.2606201171875000f,
301*8975f5c5SAndroid Build Coastguard Worker Vector3(-2.3043875694274902f, -9.8447618484497070f, -0.9124794006347656f)});
302*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
303*8975f5c5SAndroid Build Coastguard Worker {142.3956298828125000f,
304*8975f5c5SAndroid Build Coastguard Worker Vector3(-1.0044975280761719f, -2.5834980010986328f, -0.8451175689697266f)});
305*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
306*8975f5c5SAndroid Build Coastguard Worker {-140.0445861816406250f,
307*8975f5c5SAndroid Build Coastguard Worker Vector3(-1.3710060119628906f, -2.5042991638183594f, -9.7572088241577148f)});
308*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
309*8975f5c5SAndroid Build Coastguard Worker {-338.5443420410156250f,
310*8975f5c5SAndroid Build Coastguard Worker Vector3(6.8056621551513672f, 2.7508878707885742f, -5.8343429565429688f)});
311*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
312*8975f5c5SAndroid Build Coastguard Worker {79.0578613281250000f,
313*8975f5c5SAndroid Build Coastguard Worker Vector3(9.0518493652343750f, -5.5615901947021484f, 6.3559799194335938f)});
314*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
315*8975f5c5SAndroid Build Coastguard Worker {4464.6367187500000000f,
316*8975f5c5SAndroid Build Coastguard Worker Vector3(-53.9424285888671875f, -10.3614959716796875f, 54.3564453125000000f)});
317*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
318*8975f5c5SAndroid Build Coastguard Worker {-2820.6347656250000000f,
319*8975f5c5SAndroid Build Coastguard Worker Vector3(62.1694793701171875f, 82.4977569580078125f, -60.0084800720214844f)});
320*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
321*8975f5c5SAndroid Build Coastguard Worker {3371.0527343750000000f,
322*8975f5c5SAndroid Build Coastguard Worker Vector3(-74.5660324096679688f, -31.3026275634765625f, 96.7252349853515625f)});
323*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
324*8975f5c5SAndroid Build Coastguard Worker {5501.7167968750000000f,
325*8975f5c5SAndroid Build Coastguard Worker Vector3(15.0308380126953125f, 23.2323913574218750f, 66.8295593261718750f)});
326*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
327*8975f5c5SAndroid Build Coastguard Worker {392.1757812500000000f,
328*8975f5c5SAndroid Build Coastguard Worker Vector3(36.5722198486328125f, 69.2820892333984375f, 24.1789474487304688f)});
329*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
330*8975f5c5SAndroid Build Coastguard Worker {-2206.7138671875000000f,
331*8975f5c5SAndroid Build Coastguard Worker Vector3(-91.5292282104492188f, 68.2716674804687500f, 42.0627288818359375f)});
332*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
333*8975f5c5SAndroid Build Coastguard Worker {-4648.8623046875000000f,
334*8975f5c5SAndroid Build Coastguard Worker Vector3(50.7790374755859375f, 43.3964080810546875f, -36.3877525329589844f)});
335*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
336*8975f5c5SAndroid Build Coastguard Worker {2794.6015625000000000f,
337*8975f5c5SAndroid Build Coastguard Worker Vector3(76.2934265136718750f, 63.4901885986328125f, 79.5993041992187500f)});
338*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
339*8975f5c5SAndroid Build Coastguard Worker {2294.6787109375000000f,
340*8975f5c5SAndroid Build Coastguard Worker Vector3(-81.3662338256835938f, 77.6944580078125000f, 10.8423461914062500f)});
341*8975f5c5SAndroid Build Coastguard Worker rotationGoldenInputs.push_back(
342*8975f5c5SAndroid Build Coastguard Worker {2451.0468750000000000f,
343*8975f5c5SAndroid Build Coastguard Worker Vector3(-80.6299896240234375f, 51.8244628906250000f, 13.6877517700195312f)});
344*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
345*8975f5c5SAndroid Build Coastguard Worker -0.5025786161422729f,
346*8975f5c5SAndroid Build Coastguard Worker 0.0775775760412216f,
347*8975f5c5SAndroid Build Coastguard Worker 0.8610438108444214f,
348*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
349*8975f5c5SAndroid Build Coastguard Worker 0.4305581450462341f,
350*8975f5c5SAndroid Build Coastguard Worker 0.8861245512962341f,
351*8975f5c5SAndroid Build Coastguard Worker 0.1714731603860855f,
352*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
353*8975f5c5SAndroid Build Coastguard Worker -0.7496895790100098f,
354*8975f5c5SAndroid Build Coastguard Worker 0.4569081664085388f,
355*8975f5c5SAndroid Build Coastguard Worker -0.4787489175796509f,
356*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
357*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
358*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
359*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
360*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
361*8975f5c5SAndroid Build Coastguard Worker });
362*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
363*8975f5c5SAndroid Build Coastguard Worker 0.0388860106468201f,
364*8975f5c5SAndroid Build Coastguard Worker 0.6800884604454041f,
365*8975f5c5SAndroid Build Coastguard Worker -0.7320981621742249f,
366*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
367*8975f5c5SAndroid Build Coastguard Worker 0.7683026194572449f,
368*8975f5c5SAndroid Build Coastguard Worker -0.4887983798980713f,
369*8975f5c5SAndroid Build Coastguard Worker -0.4132642149925232f,
370*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
371*8975f5c5SAndroid Build Coastguard Worker -0.6389046907424927f,
372*8975f5c5SAndroid Build Coastguard Worker -0.5464027523994446f,
373*8975f5c5SAndroid Build Coastguard Worker -0.5415209531784058f,
374*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
375*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
376*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
377*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
378*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
379*8975f5c5SAndroid Build Coastguard Worker });
380*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
381*8975f5c5SAndroid Build Coastguard Worker 0.8196773529052734f,
382*8975f5c5SAndroid Build Coastguard Worker -0.5709969997406006f,
383*8975f5c5SAndroid Build Coastguard Worker 0.0457325875759125f,
384*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
385*8975f5c5SAndroid Build Coastguard Worker 0.1115358471870422f,
386*8975f5c5SAndroid Build Coastguard Worker 0.0807825028896332f,
387*8975f5c5SAndroid Build Coastguard Worker -0.9904716014862061f,
388*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
389*8975f5c5SAndroid Build Coastguard Worker 0.5618618726730347f,
390*8975f5c5SAndroid Build Coastguard Worker 0.8169679641723633f,
391*8975f5c5SAndroid Build Coastguard Worker 0.1299021989107132f,
392*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
393*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
394*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
395*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
396*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
397*8975f5c5SAndroid Build Coastguard Worker });
398*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
399*8975f5c5SAndroid Build Coastguard Worker 0.4463376104831696f,
400*8975f5c5SAndroid Build Coastguard Worker 0.6722379326820374f,
401*8975f5c5SAndroid Build Coastguard Worker 0.5906597971916199f,
402*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
403*8975f5c5SAndroid Build Coastguard Worker -0.5541059374809265f,
404*8975f5c5SAndroid Build Coastguard Worker 0.7259115576744080f,
405*8975f5c5SAndroid Build Coastguard Worker -0.4074544310569763f,
406*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
407*8975f5c5SAndroid Build Coastguard Worker -0.7026730179786682f,
408*8975f5c5SAndroid Build Coastguard Worker -0.1454258561134338f,
409*8975f5c5SAndroid Build Coastguard Worker 0.6964926123619080f,
410*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
411*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
412*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
413*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
414*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
415*8975f5c5SAndroid Build Coastguard Worker });
416*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
417*8975f5c5SAndroid Build Coastguard Worker 0.6295375227928162f,
418*8975f5c5SAndroid Build Coastguard Worker -0.2925493717193604f,
419*8975f5c5SAndroid Build Coastguard Worker 0.7197898030281067f,
420*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
421*8975f5c5SAndroid Build Coastguard Worker 0.6561784744262695f,
422*8975f5c5SAndroid Build Coastguard Worker 0.6962769031524658f,
423*8975f5c5SAndroid Build Coastguard Worker -0.2909094095230103f,
424*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
425*8975f5c5SAndroid Build Coastguard Worker -0.4160676598548889f,
426*8975f5c5SAndroid Build Coastguard Worker 0.6554489731788635f,
427*8975f5c5SAndroid Build Coastguard Worker 0.6302970647811890f,
428*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
429*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
430*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
431*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
432*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
433*8975f5c5SAndroid Build Coastguard Worker });
434*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
435*8975f5c5SAndroid Build Coastguard Worker 0.3487194776535034f,
436*8975f5c5SAndroid Build Coastguard Worker 0.2365041077136993f,
437*8975f5c5SAndroid Build Coastguard Worker -0.9068960547447205f,
438*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
439*8975f5c5SAndroid Build Coastguard Worker 0.0657925531268120f,
440*8975f5c5SAndroid Build Coastguard Worker 0.9590729475021362f,
441*8975f5c5SAndroid Build Coastguard Worker 0.2754095196723938f,
442*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
443*8975f5c5SAndroid Build Coastguard Worker 0.9349150061607361f,
444*8975f5c5SAndroid Build Coastguard Worker -0.1557076722383499f,
445*8975f5c5SAndroid Build Coastguard Worker 0.3188872337341309f,
446*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
447*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
448*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
449*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
450*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
451*8975f5c5SAndroid Build Coastguard Worker });
452*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
453*8975f5c5SAndroid Build Coastguard Worker -0.5768983364105225f,
454*8975f5c5SAndroid Build Coastguard Worker 0.3758956193923950f,
455*8975f5c5SAndroid Build Coastguard Worker 0.7251832485198975f,
456*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
457*8975f5c5SAndroid Build Coastguard Worker 0.7318079471588135f,
458*8975f5c5SAndroid Build Coastguard Worker 0.6322251558303833f,
459*8975f5c5SAndroid Build Coastguard Worker 0.2544573545455933f,
460*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
461*8975f5c5SAndroid Build Coastguard Worker -0.3628296852111816f,
462*8975f5c5SAndroid Build Coastguard Worker 0.6774909496307373f,
463*8975f5c5SAndroid Build Coastguard Worker -0.6398130059242249f,
464*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
465*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
466*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
467*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
468*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
469*8975f5c5SAndroid Build Coastguard Worker });
470*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
471*8975f5c5SAndroid Build Coastguard Worker -0.7344170808792114f,
472*8975f5c5SAndroid Build Coastguard Worker 0.6750319004058838f,
473*8975f5c5SAndroid Build Coastguard Worker 0.0704519301652908f,
474*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
475*8975f5c5SAndroid Build Coastguard Worker -0.5576634407043457f,
476*8975f5c5SAndroid Build Coastguard Worker -0.6593509316444397f,
477*8975f5c5SAndroid Build Coastguard Worker 0.5042498111724854f,
478*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
479*8975f5c5SAndroid Build Coastguard Worker 0.3868372440338135f,
480*8975f5c5SAndroid Build Coastguard Worker 0.3310411870479584f,
481*8975f5c5SAndroid Build Coastguard Worker 0.8606789708137512f,
482*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
483*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
484*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
485*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
486*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
487*8975f5c5SAndroid Build Coastguard Worker });
488*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
489*8975f5c5SAndroid Build Coastguard Worker 0.9672066569328308f,
490*8975f5c5SAndroid Build Coastguard Worker -0.2128375321626663f,
491*8975f5c5SAndroid Build Coastguard Worker -0.1386056393384933f,
492*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
493*8975f5c5SAndroid Build Coastguard Worker 0.2423491925001144f,
494*8975f5c5SAndroid Build Coastguard Worker 0.9366652965545654f,
495*8975f5c5SAndroid Build Coastguard Worker 0.2528339624404907f,
496*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
497*8975f5c5SAndroid Build Coastguard Worker 0.0760145336389542f,
498*8975f5c5SAndroid Build Coastguard Worker -0.2781336307525635f,
499*8975f5c5SAndroid Build Coastguard Worker 0.9575299024581909f,
500*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
501*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
502*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
503*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
504*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
505*8975f5c5SAndroid Build Coastguard Worker });
506*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
507*8975f5c5SAndroid Build Coastguard Worker 0.6229416728019714f,
508*8975f5c5SAndroid Build Coastguard Worker 0.2379529774188995f,
509*8975f5c5SAndroid Build Coastguard Worker 0.7451993227005005f,
510*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
511*8975f5c5SAndroid Build Coastguard Worker -0.7701886892318726f,
512*8975f5c5SAndroid Build Coastguard Worker 0.3533243536949158f,
513*8975f5c5SAndroid Build Coastguard Worker 0.5310096740722656f,
514*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
515*8975f5c5SAndroid Build Coastguard Worker -0.1369417309761047f,
516*8975f5c5SAndroid Build Coastguard Worker -0.9047321081161499f,
517*8975f5c5SAndroid Build Coastguard Worker 0.4033691287040710f,
518*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
519*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
520*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
521*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
522*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
523*8975f5c5SAndroid Build Coastguard Worker });
524*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
525*8975f5c5SAndroid Build Coastguard Worker 0.0691163539886475f,
526*8975f5c5SAndroid Build Coastguard Worker 0.5770183801651001f,
527*8975f5c5SAndroid Build Coastguard Worker -0.8138013482093811f,
528*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
529*8975f5c5SAndroid Build Coastguard Worker -0.2371776401996613f,
530*8975f5c5SAndroid Build Coastguard Worker -0.7828579545021057f,
531*8975f5c5SAndroid Build Coastguard Worker -0.5752218365669250f,
532*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
533*8975f5c5SAndroid Build Coastguard Worker -0.9690044522285461f,
534*8975f5c5SAndroid Build Coastguard Worker 0.2327727228403091f,
535*8975f5c5SAndroid Build Coastguard Worker 0.0827475786209106f,
536*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
537*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
538*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
539*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
540*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
541*8975f5c5SAndroid Build Coastguard Worker });
542*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
543*8975f5c5SAndroid Build Coastguard Worker 0.6423799991607666f,
544*8975f5c5SAndroid Build Coastguard Worker -0.2559574246406555f,
545*8975f5c5SAndroid Build Coastguard Worker -0.7223805189132690f,
546*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
547*8975f5c5SAndroid Build Coastguard Worker 0.6084498763084412f,
548*8975f5c5SAndroid Build Coastguard Worker 0.7434381246566772f,
549*8975f5c5SAndroid Build Coastguard Worker 0.2776480317115784f,
550*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
551*8975f5c5SAndroid Build Coastguard Worker 0.4659791886806488f,
552*8975f5c5SAndroid Build Coastguard Worker -0.6178879141807556f,
553*8975f5c5SAndroid Build Coastguard Worker 0.6333070397377014f,
554*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
555*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
556*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
557*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
558*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
559*8975f5c5SAndroid Build Coastguard Worker });
560*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
561*8975f5c5SAndroid Build Coastguard Worker -0.0772442221641541f,
562*8975f5c5SAndroid Build Coastguard Worker 0.8218145370483398f,
563*8975f5c5SAndroid Build Coastguard Worker -0.5644945502281189f,
564*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
565*8975f5c5SAndroid Build Coastguard Worker -0.3352625370025635f,
566*8975f5c5SAndroid Build Coastguard Worker -0.5546256303787231f,
567*8975f5c5SAndroid Build Coastguard Worker -0.7615703344345093f,
568*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
569*8975f5c5SAndroid Build Coastguard Worker -0.9389528036117554f,
570*8975f5c5SAndroid Build Coastguard Worker 0.1304270327091217f,
571*8975f5c5SAndroid Build Coastguard Worker 0.3183652758598328f,
572*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
573*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
574*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
575*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
576*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
577*8975f5c5SAndroid Build Coastguard Worker });
578*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
579*8975f5c5SAndroid Build Coastguard Worker -0.1511210501194000f,
580*8975f5c5SAndroid Build Coastguard Worker 0.9849811196327209f,
581*8975f5c5SAndroid Build Coastguard Worker -0.0835132896900177f,
582*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
583*8975f5c5SAndroid Build Coastguard Worker -0.8243820667266846f,
584*8975f5c5SAndroid Build Coastguard Worker -0.0789582207798958f,
585*8975f5c5SAndroid Build Coastguard Worker 0.5604994893074036f,
586*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
587*8975f5c5SAndroid Build Coastguard Worker 0.5454874038696289f,
588*8975f5c5SAndroid Build Coastguard Worker 0.1535501033067703f,
589*8975f5c5SAndroid Build Coastguard Worker 0.8239331245422363f,
590*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
591*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
592*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
593*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
594*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
595*8975f5c5SAndroid Build Coastguard Worker });
596*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
597*8975f5c5SAndroid Build Coastguard Worker 0.8769769668579102f,
598*8975f5c5SAndroid Build Coastguard Worker 0.2149325907230377f,
599*8975f5c5SAndroid Build Coastguard Worker -0.4297852218151093f,
600*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
601*8975f5c5SAndroid Build Coastguard Worker -0.0991527736186981f,
602*8975f5c5SAndroid Build Coastguard Worker 0.9560844898223877f,
603*8975f5c5SAndroid Build Coastguard Worker 0.2758098840713501f,
604*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
605*8975f5c5SAndroid Build Coastguard Worker 0.4701915681362152f,
606*8975f5c5SAndroid Build Coastguard Worker -0.1992645263671875f,
607*8975f5c5SAndroid Build Coastguard Worker 0.8597752451896667f,
608*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
609*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
610*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
611*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
612*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
613*8975f5c5SAndroid Build Coastguard Worker });
614*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
615*8975f5c5SAndroid Build Coastguard Worker 0.8634905815124512f,
616*8975f5c5SAndroid Build Coastguard Worker -0.3842780590057373f,
617*8975f5c5SAndroid Build Coastguard Worker 0.3266716897487640f,
618*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
619*8975f5c5SAndroid Build Coastguard Worker 0.1189628839492798f,
620*8975f5c5SAndroid Build Coastguard Worker 0.7845909595489502f,
621*8975f5c5SAndroid Build Coastguard Worker 0.6084939241409302f,
622*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
623*8975f5c5SAndroid Build Coastguard Worker -0.4901345074176788f,
624*8975f5c5SAndroid Build Coastguard Worker -0.4865669906139374f,
625*8975f5c5SAndroid Build Coastguard Worker 0.7232017517089844f,
626*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
627*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
628*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
629*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
630*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
631*8975f5c5SAndroid Build Coastguard Worker });
632*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
633*8975f5c5SAndroid Build Coastguard Worker 0.9201348423957825f,
634*8975f5c5SAndroid Build Coastguard Worker -0.1924955844879150f,
635*8975f5c5SAndroid Build Coastguard Worker -0.3410238325595856f,
636*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
637*8975f5c5SAndroid Build Coastguard Worker 0.3022402822971344f,
638*8975f5c5SAndroid Build Coastguard Worker 0.9028221964836121f,
639*8975f5c5SAndroid Build Coastguard Worker 0.3058805167675018f,
640*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
641*8975f5c5SAndroid Build Coastguard Worker 0.2490032464265823f,
642*8975f5c5SAndroid Build Coastguard Worker -0.3845224678516388f,
643*8975f5c5SAndroid Build Coastguard Worker 0.8888981342315674f,
644*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
645*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
646*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
647*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
648*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
649*8975f5c5SAndroid Build Coastguard Worker });
650*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
651*8975f5c5SAndroid Build Coastguard Worker 0.4109522104263306f,
652*8975f5c5SAndroid Build Coastguard Worker -0.3483857214450836f,
653*8975f5c5SAndroid Build Coastguard Worker 0.8424642086029053f,
654*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
655*8975f5c5SAndroid Build Coastguard Worker 0.8988372087478638f,
656*8975f5c5SAndroid Build Coastguard Worker 0.3092637956142426f,
657*8975f5c5SAndroid Build Coastguard Worker -0.3105604350566864f,
658*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
659*8975f5c5SAndroid Build Coastguard Worker -0.1523487865924835f,
660*8975f5c5SAndroid Build Coastguard Worker 0.8848635554313660f,
661*8975f5c5SAndroid Build Coastguard Worker 0.4402346611022949f,
662*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
663*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
664*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
665*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
666*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
667*8975f5c5SAndroid Build Coastguard Worker });
668*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
669*8975f5c5SAndroid Build Coastguard Worker 0.1795312762260437f,
670*8975f5c5SAndroid Build Coastguard Worker -0.7746179103851318f,
671*8975f5c5SAndroid Build Coastguard Worker -0.6064119935035706f,
672*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
673*8975f5c5SAndroid Build Coastguard Worker -0.9110413789749146f,
674*8975f5c5SAndroid Build Coastguard Worker 0.1016657948493958f,
675*8975f5c5SAndroid Build Coastguard Worker -0.3995841145515442f,
676*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
677*8975f5c5SAndroid Build Coastguard Worker 0.3711764216423035f,
678*8975f5c5SAndroid Build Coastguard Worker 0.6242043375968933f,
679*8975f5c5SAndroid Build Coastguard Worker -0.6874569058418274f,
680*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
681*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
682*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
683*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
684*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
685*8975f5c5SAndroid Build Coastguard Worker });
686*8975f5c5SAndroid Build Coastguard Worker rotationGoldenOutputs.push_back({
687*8975f5c5SAndroid Build Coastguard Worker 0.8035809993743896f,
688*8975f5c5SAndroid Build Coastguard Worker -0.4176068902015686f,
689*8975f5c5SAndroid Build Coastguard Worker 0.4241013824939728f,
690*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
691*8975f5c5SAndroid Build Coastguard Worker -0.1537265181541443f,
692*8975f5c5SAndroid Build Coastguard Worker 0.5427432060241699f,
693*8975f5c5SAndroid Build Coastguard Worker 0.8257105946540833f,
694*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
695*8975f5c5SAndroid Build Coastguard Worker -0.5750005841255188f,
696*8975f5c5SAndroid Build Coastguard Worker -0.7287209630012512f,
697*8975f5c5SAndroid Build Coastguard Worker 0.3719408810138702f,
698*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
699*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
700*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
701*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
702*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
703*8975f5c5SAndroid Build Coastguard Worker });
704*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(rotationGoldenInputs.size(), rotationGoldenOutputs.size());
705*8975f5c5SAndroid Build Coastguard Worker
706*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < rotationGoldenInputs.size(); i++)
707*8975f5c5SAndroid Build Coastguard Worker {
708*8975f5c5SAndroid Build Coastguard Worker const auto &input = rotationGoldenInputs[i];
709*8975f5c5SAndroid Build Coastguard Worker const auto &output = rotationGoldenOutputs[i];
710*8975f5c5SAndroid Build Coastguard Worker Mat4 rot = Mat4::Rotate(input.angle, input.axis);
711*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(output, rot);
712*8975f5c5SAndroid Build Coastguard Worker }
713*8975f5c5SAndroid Build Coastguard Worker }
714*8975f5c5SAndroid Build Coastguard Worker
715*8975f5c5SAndroid Build Coastguard Worker // Tests mat4 translation.
TEST(MatrixUtilsTest,Mat4Translate)716*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Translate)
717*8975f5c5SAndroid Build Coastguard Worker {
718*8975f5c5SAndroid Build Coastguard Worker float elementsExpected[] = {
719*8975f5c5SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
720*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
721*8975f5c5SAndroid Build Coastguard Worker };
722*8975f5c5SAndroid Build Coastguard Worker
723*8975f5c5SAndroid Build Coastguard Worker std::vector<float> elementsExpectedVector(16, 0);
724*8975f5c5SAndroid Build Coastguard Worker for (int i = 0; i < 16; i++)
725*8975f5c5SAndroid Build Coastguard Worker {
726*8975f5c5SAndroid Build Coastguard Worker elementsExpectedVector[i] = elementsExpected[i];
727*8975f5c5SAndroid Build Coastguard Worker }
728*8975f5c5SAndroid Build Coastguard Worker
729*8975f5c5SAndroid Build Coastguard Worker Mat4 r = Mat4::Translate(Vector3(0.f, 0.f, 0.f));
730*8975f5c5SAndroid Build Coastguard Worker Mat4 golden(elementsExpected);
731*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(elementsExpected, r);
732*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(elementsExpectedVector, r);
733*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(r, golden);
734*8975f5c5SAndroid Build Coastguard Worker
735*8975f5c5SAndroid Build Coastguard Worker float elementsExpected1[] = {
736*8975f5c5SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
737*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f,
738*8975f5c5SAndroid Build Coastguard Worker };
739*8975f5c5SAndroid Build Coastguard Worker
740*8975f5c5SAndroid Build Coastguard Worker float elementsExpected2[] = {
741*8975f5c5SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
742*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f, 0.0f, 2.0f, 2.0f, 2.0f, 1.0f,
743*8975f5c5SAndroid Build Coastguard Worker };
744*8975f5c5SAndroid Build Coastguard Worker
745*8975f5c5SAndroid Build Coastguard Worker Mat4 golden1(elementsExpected1);
746*8975f5c5SAndroid Build Coastguard Worker Mat4 golden2(elementsExpected2);
747*8975f5c5SAndroid Build Coastguard Worker
748*8975f5c5SAndroid Build Coastguard Worker Mat4 t1 = Mat4::Translate(Vector3(1.f, 1.f, 1.f));
749*8975f5c5SAndroid Build Coastguard Worker Mat4 t2 = Mat4::Translate(Vector3(2.f, 2.f, 2.f));
750*8975f5c5SAndroid Build Coastguard Worker Mat4 t1t1 = t1.product(t1);
751*8975f5c5SAndroid Build Coastguard Worker
752*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(t1, golden1);
753*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(t2, golden2);
754*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(t1t1, golden2);
755*8975f5c5SAndroid Build Coastguard Worker }
756*8975f5c5SAndroid Build Coastguard Worker
757*8975f5c5SAndroid Build Coastguard Worker // Tests scale for mat4.
TEST(MatrixUtilsTest,Mat4Scale)758*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Scale)
759*8975f5c5SAndroid Build Coastguard Worker {
760*8975f5c5SAndroid Build Coastguard Worker
761*8975f5c5SAndroid Build Coastguard Worker // Confidence check.
762*8975f5c5SAndroid Build Coastguard Worker float elementsExpected[] = {
763*8975f5c5SAndroid Build Coastguard Worker 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
764*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
765*8975f5c5SAndroid Build Coastguard Worker };
766*8975f5c5SAndroid Build Coastguard Worker
767*8975f5c5SAndroid Build Coastguard Worker std::vector<float> elementsExpectedVector(16, 0);
768*8975f5c5SAndroid Build Coastguard Worker for (int i = 0; i < 16; i++)
769*8975f5c5SAndroid Build Coastguard Worker {
770*8975f5c5SAndroid Build Coastguard Worker elementsExpectedVector[i] = elementsExpected[i];
771*8975f5c5SAndroid Build Coastguard Worker }
772*8975f5c5SAndroid Build Coastguard Worker
773*8975f5c5SAndroid Build Coastguard Worker Mat4 r = Mat4::Scale(Vector3(1.f, 1.f, 1.f));
774*8975f5c5SAndroid Build Coastguard Worker Mat4 golden(elementsExpected);
775*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(elementsExpected, r);
776*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(elementsExpectedVector, r);
777*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(r, golden);
778*8975f5c5SAndroid Build Coastguard Worker
779*8975f5c5SAndroid Build Coastguard Worker float elementsExpected2[] = {
780*8975f5c5SAndroid Build Coastguard Worker 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 0.0f, 0.0f,
781*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
782*8975f5c5SAndroid Build Coastguard Worker };
783*8975f5c5SAndroid Build Coastguard Worker
784*8975f5c5SAndroid Build Coastguard Worker float elementsExpected4[] = {
785*8975f5c5SAndroid Build Coastguard Worker 4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 4.0f, 0.0f, 0.0f,
786*8975f5c5SAndroid Build Coastguard Worker 0.0f, 0.0f, 4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
787*8975f5c5SAndroid Build Coastguard Worker };
788*8975f5c5SAndroid Build Coastguard Worker
789*8975f5c5SAndroid Build Coastguard Worker Mat4 golden2(elementsExpected2);
790*8975f5c5SAndroid Build Coastguard Worker Mat4 golden4(elementsExpected4);
791*8975f5c5SAndroid Build Coastguard Worker
792*8975f5c5SAndroid Build Coastguard Worker Mat4 t2 = Mat4::Scale(Vector3(2.f, 2.f, 2.f));
793*8975f5c5SAndroid Build Coastguard Worker Mat4 t2t2 = t2.product(t2);
794*8975f5c5SAndroid Build Coastguard Worker
795*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(t2, golden2);
796*8975f5c5SAndroid Build Coastguard Worker CheckMat4ExactlyEq(t2t2, golden4);
797*8975f5c5SAndroid Build Coastguard Worker }
798*8975f5c5SAndroid Build Coastguard Worker
799*8975f5c5SAndroid Build Coastguard Worker // Tests frustum matrices.
TEST(MatrixUtilsTest,Mat4Frustum)800*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Frustum)
801*8975f5c5SAndroid Build Coastguard Worker {
802*8975f5c5SAndroid Build Coastguard Worker // Randomly-generated inputs, outputs using GLM.
803*8975f5c5SAndroid Build Coastguard Worker std::vector<FrustumArgs> frustumGoldenInputs;
804*8975f5c5SAndroid Build Coastguard Worker std::vector<std::vector<float>> frustumGoldenOutputs;
805*8975f5c5SAndroid Build Coastguard Worker
806*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(frustumGoldenInputs.size(), frustumGoldenOutputs.size());
807*8975f5c5SAndroid Build Coastguard Worker
808*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({6.5640869140625000f, 2.6196002960205078f, 7.6299438476562500f,
809*8975f5c5SAndroid Build Coastguard Worker -3.5341463088989258f, 1.5971517562866211f, 3.3254327774047852f});
810*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({-9.4570913314819336f, -5.3334407806396484f, 0.8660326004028320f,
811*8975f5c5SAndroid Build Coastguard Worker -4.5830192565917969f, -6.7980914115905762f,
812*8975f5c5SAndroid Build Coastguard Worker 4.4744148254394531f});
813*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({1.4876422882080078f, 2.8094434738159180f, -1.6803054809570312f,
814*8975f5c5SAndroid Build Coastguard Worker -0.8823823928833008f, 9.7977848052978516f,
815*8975f5c5SAndroid Build Coastguard Worker -8.6204166412353516f});
816*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({-3.3456401824951172f, 9.8235015869140625f, 3.5869121551513672f,
817*8975f5c5SAndroid Build Coastguard Worker 5.2356719970703125f, -4.0609388351440430f, 7.7973194122314453f});
818*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({9.5381393432617188f, 7.5244369506835938f, 3.2054557800292969f,
819*8975f5c5SAndroid Build Coastguard Worker -5.9051651954650879f, -8.1114397048950195f,
820*8975f5c5SAndroid Build Coastguard Worker -8.9626598358154297f});
821*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({4.5731735229492188f, 1.3278274536132812f, -3.2062773704528809f,
822*8975f5c5SAndroid Build Coastguard Worker -7.9090023040771484f, -6.6076564788818359f,
823*8975f5c5SAndroid Build Coastguard Worker 5.1205596923828125f});
824*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({1.2519702911376953f, 1.8767604827880859f, 2.7256736755371094f,
825*8975f5c5SAndroid Build Coastguard Worker -9.6021852493286133f, -3.9267930984497070f,
826*8975f5c5SAndroid Build Coastguard Worker 2.3794260025024414f});
827*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({-8.9887380599975586f, 6.2763042449951172f, 5.8243169784545898f,
828*8975f5c5SAndroid Build Coastguard Worker 9.2890701293945312f, 1.3859443664550781f, -6.4422101974487305f});
829*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({5.7714862823486328f, 1.3688507080078125f, 6.2611656188964844f,
830*8975f5c5SAndroid Build Coastguard Worker -8.5859031677246094f, -3.2825427055358887f,
831*8975f5c5SAndroid Build Coastguard Worker -9.7015857696533203f});
832*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({5.4493808746337891f, 7.7383766174316406f, -1.1092796325683594f,
833*8975f5c5SAndroid Build Coastguard Worker -3.6691951751708984f, -8.1641988754272461f,
834*8975f5c5SAndroid Build Coastguard Worker 4.3122081756591797f});
835*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({-47.3135452270507812f, 1.1683349609375000f, 36.1483764648437500f,
836*8975f5c5SAndroid Build Coastguard Worker -54.2228546142578125f, 76.4831085205078125f,
837*8975f5c5SAndroid Build Coastguard Worker 51.5773468017578125f});
838*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({60.6750030517578125f, -35.2967681884765625f,
839*8975f5c5SAndroid Build Coastguard Worker -32.8269577026367188f, 77.3887939453125000f,
840*8975f5c5SAndroid Build Coastguard Worker 73.3114624023437500f, -54.2619438171386719f});
841*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({19.5157546997070312f, 1.3348083496093750f, 34.2350463867187500f,
842*8975f5c5SAndroid Build Coastguard Worker -11.5907974243164062f, -6.4835968017578125f,
843*8975f5c5SAndroid Build Coastguard Worker 30.2026824951171875f});
844*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({16.5014953613281250f, -59.4170761108398438f,
845*8975f5c5SAndroid Build Coastguard Worker -22.8201065063476562f, 62.5094299316406250f,
846*8975f5c5SAndroid Build Coastguard Worker -3.9552688598632812f, -76.2280197143554688f});
847*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({35.6607666015625000f, -49.5569000244140625f,
848*8975f5c5SAndroid Build Coastguard Worker 97.1632690429687500f, 23.1938247680664062f, 18.6621780395507812f,
849*8975f5c5SAndroid Build Coastguard Worker 55.2039489746093750f});
850*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({12.7565383911132812f, -0.8035964965820312f, 94.0040435791015625f,
851*8975f5c5SAndroid Build Coastguard Worker -73.9960327148437500f, -51.3727264404296875f,
852*8975f5c5SAndroid Build Coastguard Worker -21.3958053588867188f});
853*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({0.6055984497070312f, -21.7872161865234375f, 22.3246612548828125f,
854*8975f5c5SAndroid Build Coastguard Worker 10.5279464721679688f, -56.8082237243652344f,
855*8975f5c5SAndroid Build Coastguard Worker 24.1726150512695312f});
856*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({69.2176513671875000f, -59.0015220642089844f,
857*8975f5c5SAndroid Build Coastguard Worker -38.5509605407714844f, 74.0315246582031250f,
858*8975f5c5SAndroid Build Coastguard Worker 47.9032897949218750f, -89.4692459106445312f});
859*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({90.4153137207031250f, 10.0325012207031250f, 16.1712417602539062f,
860*8975f5c5SAndroid Build Coastguard Worker -9.9705123901367188f, 25.6828689575195312f,
861*8975f5c5SAndroid Build Coastguard Worker 51.8659057617187500f});
862*8975f5c5SAndroid Build Coastguard Worker frustumGoldenInputs.push_back({-89.5869369506835938f, -87.6541290283203125f,
863*8975f5c5SAndroid Build Coastguard Worker -3.0015182495117188f, -46.5026855468750000f,
864*8975f5c5SAndroid Build Coastguard Worker 29.3566131591796875f, -3.5230865478515625f});
865*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
866*8975f5c5SAndroid Build Coastguard Worker -0.8098147511482239f,
867*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
868*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
869*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
870*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
871*8975f5c5SAndroid Build Coastguard Worker -0.2861230373382568f,
872*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
873*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
874*8975f5c5SAndroid Build Coastguard Worker -2.3282337188720703f,
875*8975f5c5SAndroid Build Coastguard Worker -0.3668724894523621f,
876*8975f5c5SAndroid Build Coastguard Worker -2.8482546806335449f,
877*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
878*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
879*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
880*8975f5c5SAndroid Build Coastguard Worker -6.1462464332580566f,
881*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
882*8975f5c5SAndroid Build Coastguard Worker });
883*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
884*8975f5c5SAndroid Build Coastguard Worker -3.2971229553222656f,
885*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
886*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
887*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
888*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
889*8975f5c5SAndroid Build Coastguard Worker 2.4951465129852295f,
890*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
891*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
892*8975f5c5SAndroid Build Coastguard Worker -3.5867569446563721f,
893*8975f5c5SAndroid Build Coastguard Worker 0.6821345686912537f,
894*8975f5c5SAndroid Build Coastguard Worker 0.2061366289854050f,
895*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
896*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
897*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
898*8975f5c5SAndroid Build Coastguard Worker 5.3967552185058594f,
899*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
900*8975f5c5SAndroid Build Coastguard Worker });
901*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
902*8975f5c5SAndroid Build Coastguard Worker 14.8248996734619141f,
903*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
904*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
905*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
906*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
907*8975f5c5SAndroid Build Coastguard Worker 24.5582180023193359f,
908*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
909*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
910*8975f5c5SAndroid Build Coastguard Worker 3.2509319782257080f,
911*8975f5c5SAndroid Build Coastguard Worker -3.2116978168487549f,
912*8975f5c5SAndroid Build Coastguard Worker 0.0639241635799408f,
913*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
914*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
915*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
916*8975f5c5SAndroid Build Coastguard Worker -9.1714696884155273f,
917*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
918*8975f5c5SAndroid Build Coastguard Worker });
919*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
920*8975f5c5SAndroid Build Coastguard Worker -0.6167355179786682f,
921*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
922*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
923*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
924*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
925*8975f5c5SAndroid Build Coastguard Worker -4.9260525703430176f,
926*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
927*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
928*8975f5c5SAndroid Build Coastguard Worker 0.4918970167636871f,
929*8975f5c5SAndroid Build Coastguard Worker 5.3510427474975586f,
930*8975f5c5SAndroid Build Coastguard Worker -0.3150867819786072f,
931*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
932*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
933*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
934*8975f5c5SAndroid Build Coastguard Worker 5.3404870033264160f,
935*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
936*8975f5c5SAndroid Build Coastguard Worker });
937*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
938*8975f5c5SAndroid Build Coastguard Worker 8.0562448501586914f,
939*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
940*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
941*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
942*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
943*8975f5c5SAndroid Build Coastguard Worker 1.7806558609008789f,
944*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
945*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
946*8975f5c5SAndroid Build Coastguard Worker -8.4732360839843750f,
947*8975f5c5SAndroid Build Coastguard Worker 0.2963255345821381f,
948*8975f5c5SAndroid Build Coastguard Worker -20.0583839416503906f,
949*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
950*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
951*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
952*8975f5c5SAndroid Build Coastguard Worker 170.8137969970703125f,
953*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
954*8975f5c5SAndroid Build Coastguard Worker });
955*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
956*8975f5c5SAndroid Build Coastguard Worker 4.0720810890197754f,
957*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
958*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
959*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
960*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
961*8975f5c5SAndroid Build Coastguard Worker 2.8101394176483154f,
962*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
963*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
964*8975f5c5SAndroid Build Coastguard Worker -1.8182963132858276f,
965*8975f5c5SAndroid Build Coastguard Worker 2.3635828495025635f,
966*8975f5c5SAndroid Build Coastguard Worker 0.1267964988946915f,
967*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
968*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
969*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
970*8975f5c5SAndroid Build Coastguard Worker 5.7698287963867188f,
971*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
972*8975f5c5SAndroid Build Coastguard Worker });
973*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
974*8975f5c5SAndroid Build Coastguard Worker -12.5699577331542969f,
975*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
976*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
977*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
978*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
979*8975f5c5SAndroid Build Coastguard Worker 0.6370600461959839f,
980*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
981*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
982*8975f5c5SAndroid Build Coastguard Worker 5.0076503753662109f,
983*8975f5c5SAndroid Build Coastguard Worker 0.5578025579452515f,
984*8975f5c5SAndroid Build Coastguard Worker 0.2453716099262238f,
985*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
986*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
987*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
988*8975f5c5SAndroid Build Coastguard Worker 2.9632694721221924f,
989*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
990*8975f5c5SAndroid Build Coastguard Worker });
991*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
992*8975f5c5SAndroid Build Coastguard Worker 0.1815840899944305f,
993*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
994*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
995*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
996*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
997*8975f5c5SAndroid Build Coastguard Worker 0.8000248670578003f,
998*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
999*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1000*8975f5c5SAndroid Build Coastguard Worker -0.1776892393827438f,
1001*8975f5c5SAndroid Build Coastguard Worker 4.3620386123657227f,
1002*8975f5c5SAndroid Build Coastguard Worker -0.6459077596664429f,
1003*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1004*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1005*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1006*8975f5c5SAndroid Build Coastguard Worker -2.2811365127563477f,
1007*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1008*8975f5c5SAndroid Build Coastguard Worker });
1009*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1010*8975f5c5SAndroid Build Coastguard Worker 1.4911717176437378f,
1011*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1012*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1013*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1014*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1015*8975f5c5SAndroid Build Coastguard Worker 0.4421805739402771f,
1016*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1017*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1018*8975f5c5SAndroid Build Coastguard Worker -1.6218323707580566f,
1019*8975f5c5SAndroid Build Coastguard Worker 0.1565788835287094f,
1020*8975f5c5SAndroid Build Coastguard Worker -2.0227515697479248f,
1021*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1022*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1023*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1024*8975f5c5SAndroid Build Coastguard Worker 9.9223108291625977f,
1025*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1026*8975f5c5SAndroid Build Coastguard Worker });
1027*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1028*8975f5c5SAndroid Build Coastguard Worker -7.1334328651428223f,
1029*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1030*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1031*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1032*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1033*8975f5c5SAndroid Build Coastguard Worker 6.3784909248352051f,
1034*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1035*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1036*8975f5c5SAndroid Build Coastguard Worker 5.7613725662231445f,
1037*8975f5c5SAndroid Build Coastguard Worker 1.8666533231735229f,
1038*8975f5c5SAndroid Build Coastguard Worker 0.3087419867515564f,
1039*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1040*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1041*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1042*8975f5c5SAndroid Build Coastguard Worker 5.6435680389404297f,
1043*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1044*8975f5c5SAndroid Build Coastguard Worker });
1045*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1046*8975f5c5SAndroid Build Coastguard Worker 3.1551213264465332f,
1047*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1048*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1049*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1050*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1051*8975f5c5SAndroid Build Coastguard Worker -1.6926428079605103f,
1052*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1053*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1054*8975f5c5SAndroid Build Coastguard Worker -0.9518032073974609f,
1055*8975f5c5SAndroid Build Coastguard Worker 0.2000025659799576f,
1056*8975f5c5SAndroid Build Coastguard Worker 5.1418004035949707f,
1057*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1058*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1059*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1060*8975f5c5SAndroid Build Coastguard Worker 316.7777709960937500f,
1061*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1062*8975f5c5SAndroid Build Coastguard Worker });
1063*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1064*8975f5c5SAndroid Build Coastguard Worker -1.5277713537216187f,
1065*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1066*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1067*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1068*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1069*8975f5c5SAndroid Build Coastguard Worker 1.3303264379501343f,
1070*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1071*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1072*8975f5c5SAndroid Build Coastguard Worker -0.2644343674182892f,
1073*8975f5c5SAndroid Build Coastguard Worker 0.4043145775794983f,
1074*8975f5c5SAndroid Build Coastguard Worker 0.1493220180273056f,
1075*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1076*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1077*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1078*8975f5c5SAndroid Build Coastguard Worker -62.3644447326660156f,
1079*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1080*8975f5c5SAndroid Build Coastguard Worker });
1081*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1082*8975f5c5SAndroid Build Coastguard Worker 0.7132298350334167f,
1083*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1084*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1085*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1086*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1087*8975f5c5SAndroid Build Coastguard Worker 0.2829668223857880f,
1088*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1089*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1090*8975f5c5SAndroid Build Coastguard Worker -1.1468359231948853f,
1091*8975f5c5SAndroid Build Coastguard Worker -0.4941370785236359f,
1092*8975f5c5SAndroid Build Coastguard Worker -0.6465383172035217f,
1093*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1094*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1095*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1096*8975f5c5SAndroid Build Coastguard Worker 10.6754913330078125f,
1097*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1098*8975f5c5SAndroid Build Coastguard Worker });
1099*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1100*8975f5c5SAndroid Build Coastguard Worker 0.1041976660490036f,
1101*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1102*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1103*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1104*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1105*8975f5c5SAndroid Build Coastguard Worker -0.0927057415246964f,
1106*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1107*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1108*8975f5c5SAndroid Build Coastguard Worker 0.5652843713760376f,
1109*8975f5c5SAndroid Build Coastguard Worker 0.4651299417018890f,
1110*8975f5c5SAndroid Build Coastguard Worker -1.1094539165496826f,
1111*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1112*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1113*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1114*8975f5c5SAndroid Build Coastguard Worker 8.3434572219848633f,
1115*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1116*8975f5c5SAndroid Build Coastguard Worker });
1117*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1118*8975f5c5SAndroid Build Coastguard Worker -0.4379884898662567f,
1119*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1120*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1121*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1122*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1123*8975f5c5SAndroid Build Coastguard Worker -0.5045915246009827f,
1124*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1125*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1126*8975f5c5SAndroid Build Coastguard Worker 0.1630663424730301f,
1127*8975f5c5SAndroid Build Coastguard Worker -1.6271190643310547f,
1128*8975f5c5SAndroid Build Coastguard Worker -2.0214161872863770f,
1129*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1130*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1131*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1132*8975f5c5SAndroid Build Coastguard Worker -56.3862075805664062f,
1133*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1134*8975f5c5SAndroid Build Coastguard Worker });
1135*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1136*8975f5c5SAndroid Build Coastguard Worker 7.5770230293273926f,
1137*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1138*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1139*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1140*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1141*8975f5c5SAndroid Build Coastguard Worker 0.6115797758102417f,
1142*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1143*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1144*8975f5c5SAndroid Build Coastguard Worker -0.8814766407012939f,
1145*8975f5c5SAndroid Build Coastguard Worker -0.1190952509641647f,
1146*8975f5c5SAndroid Build Coastguard Worker 2.4274852275848389f,
1147*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1148*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1149*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1150*8975f5c5SAndroid Build Coastguard Worker -73.3338088989257812f,
1151*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1152*8975f5c5SAndroid Build Coastguard Worker });
1153*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1154*8975f5c5SAndroid Build Coastguard Worker 5.0737905502319336f,
1155*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1156*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1157*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1158*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1159*8975f5c5SAndroid Build Coastguard Worker 9.6311941146850586f,
1160*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1161*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1162*8975f5c5SAndroid Build Coastguard Worker 0.9459113478660583f,
1163*8975f5c5SAndroid Build Coastguard Worker -2.7848947048187256f,
1164*8975f5c5SAndroid Build Coastguard Worker 0.4030041098594666f,
1165*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1166*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1167*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1168*8975f5c5SAndroid Build Coastguard Worker 33.9142799377441406f,
1169*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1170*8975f5c5SAndroid Build Coastguard Worker });
1171*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1172*8975f5c5SAndroid Build Coastguard Worker -0.7472094297409058f,
1173*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1174*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1175*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1176*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1177*8975f5c5SAndroid Build Coastguard Worker 0.8509900569915771f,
1178*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1179*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1180*8975f5c5SAndroid Build Coastguard Worker -0.0796770751476288f,
1181*8975f5c5SAndroid Build Coastguard Worker 0.3151517212390900f,
1182*8975f5c5SAndroid Build Coastguard Worker -0.3025783598423004f,
1183*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1184*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1185*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1186*8975f5c5SAndroid Build Coastguard Worker -62.3977890014648438f,
1187*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1188*8975f5c5SAndroid Build Coastguard Worker });
1189*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1190*8975f5c5SAndroid Build Coastguard Worker -0.6390139460563660f,
1191*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1192*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1193*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1194*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1195*8975f5c5SAndroid Build Coastguard Worker -1.9648925065994263f,
1196*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1197*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1198*8975f5c5SAndroid Build Coastguard Worker -1.2496180534362793f,
1199*8975f5c5SAndroid Build Coastguard Worker -0.2371963709592819f,
1200*8975f5c5SAndroid Build Coastguard Worker -2.9617946147918701f,
1201*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1202*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1203*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1204*8975f5c5SAndroid Build Coastguard Worker -101.7502517700195312f,
1205*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1206*8975f5c5SAndroid Build Coastguard Worker });
1207*8975f5c5SAndroid Build Coastguard Worker frustumGoldenOutputs.push_back({
1208*8975f5c5SAndroid Build Coastguard Worker 30.3771648406982422f,
1209*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1210*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1211*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1212*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1213*8975f5c5SAndroid Build Coastguard Worker -1.3496931791305542f,
1214*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1215*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1216*8975f5c5SAndroid Build Coastguard Worker -91.7013320922851562f,
1217*8975f5c5SAndroid Build Coastguard Worker 1.1379971504211426f,
1218*8975f5c5SAndroid Build Coastguard Worker 0.7856983542442322f,
1219*8975f5c5SAndroid Build Coastguard Worker -1.0000000000000000f,
1220*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1221*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1222*8975f5c5SAndroid Build Coastguard Worker -6.2911696434020996f,
1223*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1224*8975f5c5SAndroid Build Coastguard Worker });
1225*8975f5c5SAndroid Build Coastguard Worker
1226*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < frustumGoldenInputs.size(); i++)
1227*8975f5c5SAndroid Build Coastguard Worker {
1228*8975f5c5SAndroid Build Coastguard Worker const auto &input = frustumGoldenInputs[i];
1229*8975f5c5SAndroid Build Coastguard Worker const auto &output = frustumGoldenOutputs[i];
1230*8975f5c5SAndroid Build Coastguard Worker Mat4 r = Mat4::Frustum(input.l, input.r, input.b, input.t, input.n, input.f);
1231*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(output, r);
1232*8975f5c5SAndroid Build Coastguard Worker }
1233*8975f5c5SAndroid Build Coastguard Worker }
1234*8975f5c5SAndroid Build Coastguard Worker
1235*8975f5c5SAndroid Build Coastguard Worker // Tests orthographic projection matrices.
TEST(MatrixUtilsTest,Mat4Ortho)1236*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Ortho)
1237*8975f5c5SAndroid Build Coastguard Worker {
1238*8975f5c5SAndroid Build Coastguard Worker // Randomly-generated inputs, outputs using GLM.
1239*8975f5c5SAndroid Build Coastguard Worker std::vector<FrustumArgs> orthoGoldenInputs;
1240*8975f5c5SAndroid Build Coastguard Worker std::vector<std::vector<float>> orthoGoldenOutputs;
1241*8975f5c5SAndroid Build Coastguard Worker
1242*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-1.2515230178833008f, 5.6523618698120117f, -0.7427234649658203f,
1243*8975f5c5SAndroid Build Coastguard Worker -2.9657564163208008f, -5.4732933044433594f, -9.6416902542114258f});
1244*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-7.8948307037353516f, -8.4146118164062500f, -4.3893952369689941f,
1245*8975f5c5SAndroid Build Coastguard Worker 7.4392738342285156f, -8.1261911392211914f, 3.1107978820800781f});
1246*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({3.1667709350585938f, 3.9134168624877930f, -7.1993961334228516f,
1247*8975f5c5SAndroid Build Coastguard Worker -0.2519502639770508f, 5.4625358581542969f, 8.8320560455322266f});
1248*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({0.3597183227539062f, 5.7859621047973633f, 4.6786174774169922f,
1249*8975f5c5SAndroid Build Coastguard Worker -6.4736566543579102f, -2.7510557174682617f, 2.9977531433105469f});
1250*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({3.2480134963989258f, 9.3551750183105469f, -7.5922241210937500f,
1251*8975f5c5SAndroid Build Coastguard Worker -2.5135083198547363f, -4.5282001495361328f, -5.4564580917358398f});
1252*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-6.6918325424194336f, -9.6249752044677734f, -6.9591665267944336f,
1253*8975f5c5SAndroid Build Coastguard Worker -2.7099137306213379f, -5.5196690559387207f, -9.0791969299316406f});
1254*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({5.9386453628540039f, -9.1784019470214844f, -1.4078102111816406f,
1255*8975f5c5SAndroid Build Coastguard Worker -1.0552892684936523f, 3.7563705444335938f, -6.6715431213378906f});
1256*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-8.6238059997558594f, -0.2995386123657227f, 5.6623821258544922f,
1257*8975f5c5SAndroid Build Coastguard Worker 7.6483421325683594f, 5.6686410903930664f, -7.1456899642944336f});
1258*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({2.3857555389404297f, -2.6020836830139160f, 6.7841358184814453f,
1259*8975f5c5SAndroid Build Coastguard Worker 0.9868297576904297f, 5.6463518142700195f, -1.7597074508666992f});
1260*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({4.6028537750244141f, 0.1757516860961914f, -6.1434607505798340f,
1261*8975f5c5SAndroid Build Coastguard Worker 6.8524093627929688f, 8.4380626678466797f, -1.4824752807617188f});
1262*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({40.3382720947265625f, -34.5338973999023438f, -11.1726379394531250f,
1263*8975f5c5SAndroid Build Coastguard Worker 21.4206924438476562f, 17.5087890625000000f, 70.2734069824218750f});
1264*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({85.2872314453125000f, 22.3899002075195312f, -92.8537139892578125f,
1265*8975f5c5SAndroid Build Coastguard Worker 7.6059341430664062f, 32.9500732421875000f, -8.1374511718750000f});
1266*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({33.8771057128906250f, -27.6973648071289062f, 90.3841094970703125f,
1267*8975f5c5SAndroid Build Coastguard Worker 85.8473358154296875f, 36.0423278808593750f,
1268*8975f5c5SAndroid Build Coastguard Worker -36.5140991210937500f});
1269*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-92.4729461669921875f, 7.1592102050781250f, -75.2177963256835938f,
1270*8975f5c5SAndroid Build Coastguard Worker 14.4945983886718750f, 10.6297378540039062f, 53.9828796386718750f});
1271*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({90.2037658691406250f, 54.5332946777343750f, -58.9839515686035156f,
1272*8975f5c5SAndroid Build Coastguard Worker 56.7301330566406250f, 63.2403869628906250f, 81.1043853759765625f});
1273*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-78.6419067382812500f, 65.5156250000000000f, -78.8265304565429688f,
1274*8975f5c5SAndroid Build Coastguard Worker -37.5036048889160156f, 76.9322204589843750f,
1275*8975f5c5SAndroid Build Coastguard Worker -0.2213287353515625f});
1276*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({80.1368560791015625f, 60.2946777343750000f, -27.3523788452148438f,
1277*8975f5c5SAndroid Build Coastguard Worker 88.5419616699218750f, -75.3445968627929688f,
1278*8975f5c5SAndroid Build Coastguard Worker 83.3852081298828125f});
1279*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({55.0712585449218750f, -17.4033813476562500f, -98.6088104248046875f,
1280*8975f5c5SAndroid Build Coastguard Worker 81.6600952148437500f, 61.1217803955078125f, 73.5973815917968750f});
1281*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-48.7522583007812500f, 20.8100433349609375f, -45.6365356445312500f,
1282*8975f5c5SAndroid Build Coastguard Worker -13.2819519042968750f, -29.7577133178710938f,
1283*8975f5c5SAndroid Build Coastguard Worker 62.1014862060546875f});
1284*8975f5c5SAndroid Build Coastguard Worker orthoGoldenInputs.push_back({-60.3634567260742188f, 71.4023284912109375f, 59.0719757080078125f,
1285*8975f5c5SAndroid Build Coastguard Worker 22.6195831298828125f, -32.6802139282226562f,
1286*8975f5c5SAndroid Build Coastguard Worker -56.3766899108886719f});
1287*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1288*8975f5c5SAndroid Build Coastguard Worker 0.2896919548511505f,
1289*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1290*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1291*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1292*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1293*8975f5c5SAndroid Build Coastguard Worker -0.8996717929840088f,
1294*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1295*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1296*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1297*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1298*8975f5c5SAndroid Build Coastguard Worker 0.4798007607460022f,
1299*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1300*8975f5c5SAndroid Build Coastguard Worker -0.6374438405036926f,
1301*8975f5c5SAndroid Build Coastguard Worker -1.6682072877883911f,
1302*8975f5c5SAndroid Build Coastguard Worker -3.6260902881622314f,
1303*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1304*8975f5c5SAndroid Build Coastguard Worker });
1305*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1306*8975f5c5SAndroid Build Coastguard Worker -3.8477735519409180f,
1307*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1308*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1309*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1310*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1311*8975f5c5SAndroid Build Coastguard Worker 0.1690807342529297f,
1312*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1313*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1314*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1315*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1316*8975f5c5SAndroid Build Coastguard Worker -0.1779836267232895f,
1317*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1318*8975f5c5SAndroid Build Coastguard Worker -31.3775196075439453f,
1319*8975f5c5SAndroid Build Coastguard Worker -0.2578378617763519f,
1320*8975f5c5SAndroid Build Coastguard Worker 0.4463289380073547f,
1321*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1322*8975f5c5SAndroid Build Coastguard Worker });
1323*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1324*8975f5c5SAndroid Build Coastguard Worker 2.6786458492279053f,
1325*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1326*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1327*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1328*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1329*8975f5c5SAndroid Build Coastguard Worker 0.2878755927085876f,
1330*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1331*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1332*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1333*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1334*8975f5c5SAndroid Build Coastguard Worker -0.5935563445091248f,
1335*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1336*8975f5c5SAndroid Build Coastguard Worker -9.4826574325561523f,
1337*8975f5c5SAndroid Build Coastguard Worker 1.0725302696228027f,
1338*8975f5c5SAndroid Build Coastguard Worker -4.2423224449157715f,
1339*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1340*8975f5c5SAndroid Build Coastguard Worker });
1341*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1342*8975f5c5SAndroid Build Coastguard Worker 0.3685790896415710f,
1343*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1344*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1345*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1346*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1347*8975f5c5SAndroid Build Coastguard Worker -0.1793356239795685f,
1348*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1349*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1350*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1351*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1352*8975f5c5SAndroid Build Coastguard Worker -0.3478981554508209f,
1353*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1354*8975f5c5SAndroid Build Coastguard Worker -1.1325846910476685f,
1355*8975f5c5SAndroid Build Coastguard Worker -0.1609572321176529f,
1356*8975f5c5SAndroid Build Coastguard Worker -0.0429127886891365f,
1357*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1358*8975f5c5SAndroid Build Coastguard Worker });
1359*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1360*8975f5c5SAndroid Build Coastguard Worker 0.3274843692779541f,
1361*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1362*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1363*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1364*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1365*8975f5c5SAndroid Build Coastguard Worker 0.3938003480434418f,
1366*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1367*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1368*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1369*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1370*8975f5c5SAndroid Build Coastguard Worker 2.1545734405517578f,
1371*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1372*8975f5c5SAndroid Build Coastguard Worker -2.0636737346649170f,
1373*8975f5c5SAndroid Build Coastguard Worker 1.9898203611373901f,
1374*8975f5c5SAndroid Build Coastguard Worker -10.7563400268554688f,
1375*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1376*8975f5c5SAndroid Build Coastguard Worker });
1377*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1378*8975f5c5SAndroid Build Coastguard Worker -0.6818625330924988f,
1379*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1380*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1381*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1382*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1383*8975f5c5SAndroid Build Coastguard Worker 0.4706709980964661f,
1384*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1385*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1386*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1387*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1388*8975f5c5SAndroid Build Coastguard Worker 0.5618722438812256f,
1389*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1390*8975f5c5SAndroid Build Coastguard Worker -5.5629096031188965f,
1391*8975f5c5SAndroid Build Coastguard Worker 2.2754778861999512f,
1392*8975f5c5SAndroid Build Coastguard Worker -4.1013488769531250f,
1393*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1394*8975f5c5SAndroid Build Coastguard Worker });
1395*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1396*8975f5c5SAndroid Build Coastguard Worker -0.1323009729385376f,
1397*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1398*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1399*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1400*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1401*8975f5c5SAndroid Build Coastguard Worker 5.6734218597412109f,
1402*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1403*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1404*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1405*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1406*8975f5c5SAndroid Build Coastguard Worker 0.1917929202318192f,
1407*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1408*8975f5c5SAndroid Build Coastguard Worker -0.2143114656209946f,
1409*8975f5c5SAndroid Build Coastguard Worker 6.9871010780334473f,
1410*8975f5c5SAndroid Build Coastguard Worker -0.2795547246932983f,
1411*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1412*8975f5c5SAndroid Build Coastguard Worker });
1413*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1414*8975f5c5SAndroid Build Coastguard Worker 0.2402613908052444f,
1415*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1416*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1417*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1418*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1419*8975f5c5SAndroid Build Coastguard Worker 1.0070695877075195f,
1420*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1421*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1422*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1423*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1424*8975f5c5SAndroid Build Coastguard Worker 0.1560752540826797f,
1425*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1426*8975f5c5SAndroid Build Coastguard Worker 1.0719676017761230f,
1427*8975f5c5SAndroid Build Coastguard Worker -6.7024130821228027f,
1428*8975f5c5SAndroid Build Coastguard Worker -0.1152653917670250f,
1429*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1430*8975f5c5SAndroid Build Coastguard Worker });
1431*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1432*8975f5c5SAndroid Build Coastguard Worker -0.4009752273559570f,
1433*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1434*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1435*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1436*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1437*8975f5c5SAndroid Build Coastguard Worker -0.3449878096580505f,
1438*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1439*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1440*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1441*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1442*8975f5c5SAndroid Build Coastguard Worker 0.2700491547584534f,
1443*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1444*8975f5c5SAndroid Build Coastguard Worker -0.0433711148798466f,
1445*8975f5c5SAndroid Build Coastguard Worker 1.3404442071914673f,
1446*8975f5c5SAndroid Build Coastguard Worker 0.5247924923896790f,
1447*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1448*8975f5c5SAndroid Build Coastguard Worker });
1449*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1450*8975f5c5SAndroid Build Coastguard Worker -0.4517627954483032f,
1451*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1452*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1453*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1454*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1455*8975f5c5SAndroid Build Coastguard Worker 0.1538950353860855f,
1456*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1457*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1458*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1459*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1460*8975f5c5SAndroid Build Coastguard Worker 0.2016019672155380f,
1461*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1462*8975f5c5SAndroid Build Coastguard Worker 1.0793980360031128f,
1463*8975f5c5SAndroid Build Coastguard Worker -0.0545518361032009f,
1464*8975f5c5SAndroid Build Coastguard Worker 0.7011300325393677f,
1465*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1466*8975f5c5SAndroid Build Coastguard Worker });
1467*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1468*8975f5c5SAndroid Build Coastguard Worker -0.0267121959477663f,
1469*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1470*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1471*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1472*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1473*8975f5c5SAndroid Build Coastguard Worker 0.0613622479140759f,
1474*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1475*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1476*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1477*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1478*8975f5c5SAndroid Build Coastguard Worker -0.0379041880369186f,
1479*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1480*8975f5c5SAndroid Build Coastguard Worker 0.0775237977504730f,
1481*8975f5c5SAndroid Build Coastguard Worker -0.3144218325614929f,
1482*8975f5c5SAndroid Build Coastguard Worker -1.6636564731597900f,
1483*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1484*8975f5c5SAndroid Build Coastguard Worker });
1485*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1486*8975f5c5SAndroid Build Coastguard Worker -0.0317978523671627f,
1487*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1488*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1489*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1490*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1491*8975f5c5SAndroid Build Coastguard Worker 0.0199084915220737f,
1492*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1493*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1494*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1495*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1496*8975f5c5SAndroid Build Coastguard Worker 0.0486765764653683f,
1497*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1498*8975f5c5SAndroid Build Coastguard Worker 1.7119507789611816f,
1499*8975f5c5SAndroid Build Coastguard Worker 0.8485773205757141f,
1500*8975f5c5SAndroid Build Coastguard Worker 0.6038967370986938f,
1501*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1502*8975f5c5SAndroid Build Coastguard Worker });
1503*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1504*8975f5c5SAndroid Build Coastguard Worker -0.0324809923768044f,
1505*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1506*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1507*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1508*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1509*8975f5c5SAndroid Build Coastguard Worker -0.4408419132232666f,
1510*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1511*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1512*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1513*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1514*8975f5c5SAndroid Build Coastguard Worker 0.0275647528469563f,
1515*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1516*8975f5c5SAndroid Build Coastguard Worker 0.1003620624542236f,
1517*8975f5c5SAndroid Build Coastguard Worker 38.8451042175292969f,
1518*8975f5c5SAndroid Build Coastguard Worker -0.0065021286718547f,
1519*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1520*8975f5c5SAndroid Build Coastguard Worker });
1521*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1522*8975f5c5SAndroid Build Coastguard Worker 0.0200738403946161f,
1523*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1524*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1525*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1526*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1527*8975f5c5SAndroid Build Coastguard Worker 0.0222934633493423f,
1528*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1529*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1530*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1531*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1532*8975f5c5SAndroid Build Coastguard Worker -0.0461327582597733f,
1533*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1534*8975f5c5SAndroid Build Coastguard Worker 0.8562871813774109f,
1535*8975f5c5SAndroid Build Coastguard Worker 0.6768652200698853f,
1536*8975f5c5SAndroid Build Coastguard Worker -1.4903790950775146f,
1537*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1538*8975f5c5SAndroid Build Coastguard Worker });
1539*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1540*8975f5c5SAndroid Build Coastguard Worker -0.0560687854886055f,
1541*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1542*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1543*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1544*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1545*8975f5c5SAndroid Build Coastguard Worker 0.0172839816659689f,
1546*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1547*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1548*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1549*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1550*8975f5c5SAndroid Build Coastguard Worker -0.1119570210576057f,
1551*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1552*8975f5c5SAndroid Build Coastguard Worker 4.0576157569885254f,
1553*8975f5c5SAndroid Build Coastguard Worker 0.0194774791598320f,
1554*8975f5c5SAndroid Build Coastguard Worker -8.0802049636840820f,
1555*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1556*8975f5c5SAndroid Build Coastguard Worker });
1557*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1558*8975f5c5SAndroid Build Coastguard Worker 0.0138737112283707f,
1559*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1560*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1561*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1562*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1563*8975f5c5SAndroid Build Coastguard Worker 0.0483992844820023f,
1564*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1565*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1566*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1567*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1568*8975f5c5SAndroid Build Coastguard Worker 0.0259223338216543f,
1569*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1570*8975f5c5SAndroid Build Coastguard Worker 0.0910551249980927f,
1571*8975f5c5SAndroid Build Coastguard Worker 2.8151476383209229f,
1572*8975f5c5SAndroid Build Coastguard Worker 0.9942626357078552f,
1573*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1574*8975f5c5SAndroid Build Coastguard Worker });
1575*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1576*8975f5c5SAndroid Build Coastguard Worker -0.1007953882217407f,
1577*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1578*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1579*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1580*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1581*8975f5c5SAndroid Build Coastguard Worker 0.0172570981085300f,
1582*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1583*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1584*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1585*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1586*8975f5c5SAndroid Build Coastguard Worker -0.0126000288873911f,
1587*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1588*8975f5c5SAndroid Build Coastguard Worker 7.0774250030517578f,
1589*8975f5c5SAndroid Build Coastguard Worker -0.5279772877693176f,
1590*8975f5c5SAndroid Build Coastguard Worker -0.0506559647619724f,
1591*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1592*8975f5c5SAndroid Build Coastguard Worker });
1593*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1594*8975f5c5SAndroid Build Coastguard Worker -0.0275958590209484f,
1595*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1596*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1597*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1598*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1599*8975f5c5SAndroid Build Coastguard Worker 0.0110945366322994f,
1600*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1601*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1602*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1603*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1604*8975f5c5SAndroid Build Coastguard Worker -0.1603129208087921f,
1605*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1606*8975f5c5SAndroid Build Coastguard Worker 0.5197387337684631f,
1607*8975f5c5SAndroid Build Coastguard Worker 0.0940190702676773f,
1608*8975f5c5SAndroid Build Coastguard Worker -10.7986106872558594f,
1609*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1610*8975f5c5SAndroid Build Coastguard Worker });
1611*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1612*8975f5c5SAndroid Build Coastguard Worker 0.0287512056529522f,
1613*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1614*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1615*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1616*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1617*8975f5c5SAndroid Build Coastguard Worker 0.0618150420486927f,
1618*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1619*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1620*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1621*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1622*8975f5c5SAndroid Build Coastguard Worker -0.0217724516987801f,
1623*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1624*8975f5c5SAndroid Build Coastguard Worker 0.4016861617565155f,
1625*8975f5c5SAndroid Build Coastguard Worker 1.8210244178771973f,
1626*8975f5c5SAndroid Build Coastguard Worker -0.3521016240119934f,
1627*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1628*8975f5c5SAndroid Build Coastguard Worker });
1629*8975f5c5SAndroid Build Coastguard Worker orthoGoldenOutputs.push_back({
1630*8975f5c5SAndroid Build Coastguard Worker 0.0151784475892782f,
1631*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1632*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1633*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1634*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1635*8975f5c5SAndroid Build Coastguard Worker -0.0548660829663277f,
1636*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1637*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1638*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1639*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1640*8975f5c5SAndroid Build Coastguard Worker 0.0844007357954979f,
1641*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1642*8975f5c5SAndroid Build Coastguard Worker -0.0837764739990234f,
1643*8975f5c5SAndroid Build Coastguard Worker 2.2410478591918945f,
1644*8975f5c5SAndroid Build Coastguard Worker -3.7582340240478516f,
1645*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1646*8975f5c5SAndroid Build Coastguard Worker });
1647*8975f5c5SAndroid Build Coastguard Worker
1648*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(orthoGoldenInputs.size(), orthoGoldenOutputs.size());
1649*8975f5c5SAndroid Build Coastguard Worker
1650*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < orthoGoldenInputs.size(); i++)
1651*8975f5c5SAndroid Build Coastguard Worker {
1652*8975f5c5SAndroid Build Coastguard Worker const auto &input = orthoGoldenInputs[i];
1653*8975f5c5SAndroid Build Coastguard Worker const auto &output = orthoGoldenOutputs[i];
1654*8975f5c5SAndroid Build Coastguard Worker Mat4 r = Mat4::Ortho(input.l, input.r, input.b, input.t, input.n, input.f);
1655*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(output, r);
1656*8975f5c5SAndroid Build Coastguard Worker }
1657*8975f5c5SAndroid Build Coastguard Worker }
1658*8975f5c5SAndroid Build Coastguard Worker
1659*8975f5c5SAndroid Build Coastguard Worker // Tests for inverse transpose of mat4, which is a frequent operation done to
1660*8975f5c5SAndroid Build Coastguard Worker // the modelview matrix, for things such as transformation of normals.
TEST(MatrixUtilsTest,Mat4InvTr)1661*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4InvTr)
1662*8975f5c5SAndroid Build Coastguard Worker {
1663*8975f5c5SAndroid Build Coastguard Worker
1664*8975f5c5SAndroid Build Coastguard Worker std::vector<std::vector<float>> invTrInputs;
1665*8975f5c5SAndroid Build Coastguard Worker std::vector<std::vector<float>> invTrOutputs;
1666*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1667*8975f5c5SAndroid Build Coastguard Worker 0.3247877955436707f,
1668*8975f5c5SAndroid Build Coastguard Worker -0.8279561400413513f,
1669*8975f5c5SAndroid Build Coastguard Worker 0.4571666717529297f,
1670*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1671*8975f5c5SAndroid Build Coastguard Worker 0.9041201472282410f,
1672*8975f5c5SAndroid Build Coastguard Worker 0.1299063563346863f,
1673*8975f5c5SAndroid Build Coastguard Worker -0.4070515632629395f,
1674*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1675*8975f5c5SAndroid Build Coastguard Worker 0.2776319682598114f,
1676*8975f5c5SAndroid Build Coastguard Worker 0.5455390810966492f,
1677*8975f5c5SAndroid Build Coastguard Worker 0.7907638549804688f,
1678*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1679*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1680*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1681*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1682*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1683*8975f5c5SAndroid Build Coastguard Worker });
1684*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1685*8975f5c5SAndroid Build Coastguard Worker -0.8843839168548584f,
1686*8975f5c5SAndroid Build Coastguard Worker 0.3047805428504944f,
1687*8975f5c5SAndroid Build Coastguard Worker -0.3535164594650269f,
1688*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1689*8975f5c5SAndroid Build Coastguard Worker 0.4647803902626038f,
1690*8975f5c5SAndroid Build Coastguard Worker 0.6447106003761292f,
1691*8975f5c5SAndroid Build Coastguard Worker -0.6068999171257019f,
1692*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1693*8975f5c5SAndroid Build Coastguard Worker 0.0429445058107376f,
1694*8975f5c5SAndroid Build Coastguard Worker -0.7010400891304016f,
1695*8975f5c5SAndroid Build Coastguard Worker -0.7118276357650757f,
1696*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1697*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1698*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1699*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1700*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1701*8975f5c5SAndroid Build Coastguard Worker });
1702*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1703*8975f5c5SAndroid Build Coastguard Worker -0.4487786889076233f,
1704*8975f5c5SAndroid Build Coastguard Worker 0.8632985353469849f,
1705*8975f5c5SAndroid Build Coastguard Worker 0.2308966517448425f,
1706*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1707*8975f5c5SAndroid Build Coastguard Worker -0.5765564441680908f,
1708*8975f5c5SAndroid Build Coastguard Worker -0.0823006033897400f,
1709*8975f5c5SAndroid Build Coastguard Worker -0.8129017353057861f,
1710*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
1711*8975f5c5SAndroid Build Coastguard Worker -0.6827739477157593f,
1712*8975f5c5SAndroid Build Coastguard Worker -0.4979379475116730f,
1713*8975f5c5SAndroid Build Coastguard Worker 0.5346751213073730f,
1714*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1715*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1716*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1717*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1718*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1719*8975f5c5SAndroid Build Coastguard Worker });
1720*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1721*8975f5c5SAndroid Build Coastguard Worker 0.9865614175796509f,
1722*8975f5c5SAndroid Build Coastguard Worker 0.0901400744915009f,
1723*8975f5c5SAndroid Build Coastguard Worker -0.1362765878438950f,
1724*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1725*8975f5c5SAndroid Build Coastguard Worker 0.0155128352344036f,
1726*8975f5c5SAndroid Build Coastguard Worker 0.7786107659339905f,
1727*8975f5c5SAndroid Build Coastguard Worker 0.6273153424263000f,
1728*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1729*8975f5c5SAndroid Build Coastguard Worker 0.1626526862382889f,
1730*8975f5c5SAndroid Build Coastguard Worker -0.6209991574287415f,
1731*8975f5c5SAndroid Build Coastguard Worker 0.7667490243911743f,
1732*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1733*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1734*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1735*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1736*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1737*8975f5c5SAndroid Build Coastguard Worker });
1738*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1739*8975f5c5SAndroid Build Coastguard Worker -0.5566663742065430f,
1740*8975f5c5SAndroid Build Coastguard Worker 0.8302737474441528f,
1741*8975f5c5SAndroid Build Coastguard Worker -0.0277124047279358f,
1742*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1743*8975f5c5SAndroid Build Coastguard Worker -0.0281167924404144f,
1744*8975f5c5SAndroid Build Coastguard Worker 0.0145094990730286f,
1745*8975f5c5SAndroid Build Coastguard Worker 0.9994993209838867f,
1746*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1747*8975f5c5SAndroid Build Coastguard Worker 0.8302601575851440f,
1748*8975f5c5SAndroid Build Coastguard Worker 0.5571669340133667f,
1749*8975f5c5SAndroid Build Coastguard Worker 0.0152677297592163f,
1750*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1751*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1752*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1753*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1754*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1755*8975f5c5SAndroid Build Coastguard Worker });
1756*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1757*8975f5c5SAndroid Build Coastguard Worker 0.4160673320293427f,
1758*8975f5c5SAndroid Build Coastguard Worker -0.9093281030654907f,
1759*8975f5c5SAndroid Build Coastguard Worker 0.0032218396663666f,
1760*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1761*8975f5c5SAndroid Build Coastguard Worker -0.1397584974765778f,
1762*8975f5c5SAndroid Build Coastguard Worker -0.0674473643302917f,
1763*8975f5c5SAndroid Build Coastguard Worker -0.9878858327865601f,
1764*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
1765*8975f5c5SAndroid Build Coastguard Worker 0.8985296487808228f,
1766*8975f5c5SAndroid Build Coastguard Worker 0.4105767309665680f,
1767*8975f5c5SAndroid Build Coastguard Worker -0.1551489830017090f,
1768*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1769*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1770*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1771*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1772*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1773*8975f5c5SAndroid Build Coastguard Worker });
1774*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1775*8975f5c5SAndroid Build Coastguard Worker 0.9039891958236694f,
1776*8975f5c5SAndroid Build Coastguard Worker -0.3967807590961456f,
1777*8975f5c5SAndroid Build Coastguard Worker -0.1592751741409302f,
1778*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1779*8975f5c5SAndroid Build Coastguard Worker 0.4139676988124847f,
1780*8975f5c5SAndroid Build Coastguard Worker 0.9054293632507324f,
1781*8975f5c5SAndroid Build Coastguard Worker 0.0939593166112900f,
1782*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1783*8975f5c5SAndroid Build Coastguard Worker 0.1069311797618866f,
1784*8975f5c5SAndroid Build Coastguard Worker -0.1508729904890060f,
1785*8975f5c5SAndroid Build Coastguard Worker 0.9827527999877930f,
1786*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1787*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1788*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1789*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1790*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1791*8975f5c5SAndroid Build Coastguard Worker });
1792*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1793*8975f5c5SAndroid Build Coastguard Worker 0.3662135303020477f,
1794*8975f5c5SAndroid Build Coastguard Worker 0.2184857577085495f,
1795*8975f5c5SAndroid Build Coastguard Worker 0.9045174121856689f,
1796*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1797*8975f5c5SAndroid Build Coastguard Worker -0.6651677489280701f,
1798*8975f5c5SAndroid Build Coastguard Worker 0.7412178516387939f,
1799*8975f5c5SAndroid Build Coastguard Worker 0.0902667641639709f,
1800*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1801*8975f5c5SAndroid Build Coastguard Worker -0.6507223844528198f,
1802*8975f5c5SAndroid Build Coastguard Worker -0.6347126960754395f,
1803*8975f5c5SAndroid Build Coastguard Worker 0.4167736768722534f,
1804*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1805*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1806*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1807*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1808*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1809*8975f5c5SAndroid Build Coastguard Worker });
1810*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1811*8975f5c5SAndroid Build Coastguard Worker 0.3791426718235016f,
1812*8975f5c5SAndroid Build Coastguard Worker 0.7277372479438782f,
1813*8975f5c5SAndroid Build Coastguard Worker -0.5715323686599731f,
1814*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1815*8975f5c5SAndroid Build Coastguard Worker -0.3511379361152649f,
1816*8975f5c5SAndroid Build Coastguard Worker 0.6845993995666504f,
1817*8975f5c5SAndroid Build Coastguard Worker 0.6387689113616943f,
1818*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1819*8975f5c5SAndroid Build Coastguard Worker 0.8561266660690308f,
1820*8975f5c5SAndroid Build Coastguard Worker -0.0414978563785553f,
1821*8975f5c5SAndroid Build Coastguard Worker 0.5150970220565796f,
1822*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1823*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1824*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1825*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1826*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1827*8975f5c5SAndroid Build Coastguard Worker });
1828*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1829*8975f5c5SAndroid Build Coastguard Worker -0.6766842603683472f,
1830*8975f5c5SAndroid Build Coastguard Worker -0.0953263640403748f,
1831*8975f5c5SAndroid Build Coastguard Worker -0.7300762534141541f,
1832*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
1833*8975f5c5SAndroid Build Coastguard Worker -0.5922094583511353f,
1834*8975f5c5SAndroid Build Coastguard Worker 0.6596454977989197f,
1835*8975f5c5SAndroid Build Coastguard Worker 0.4627699255943298f,
1836*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1837*8975f5c5SAndroid Build Coastguard Worker 0.4374772906303406f,
1838*8975f5c5SAndroid Build Coastguard Worker 0.7455072402954102f,
1839*8975f5c5SAndroid Build Coastguard Worker -0.5028247833251953f,
1840*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1841*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1842*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1843*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1844*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1845*8975f5c5SAndroid Build Coastguard Worker });
1846*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1847*8975f5c5SAndroid Build Coastguard Worker 0.8012667894363403f,
1848*8975f5c5SAndroid Build Coastguard Worker -0.5429225564002991f,
1849*8975f5c5SAndroid Build Coastguard Worker 0.2514090538024902f,
1850*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1851*8975f5c5SAndroid Build Coastguard Worker 0.3384204804897308f,
1852*8975f5c5SAndroid Build Coastguard Worker 0.7577887773513794f,
1853*8975f5c5SAndroid Build Coastguard Worker 0.5578778386116028f,
1854*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1855*8975f5c5SAndroid Build Coastguard Worker -0.4933994412422180f,
1856*8975f5c5SAndroid Build Coastguard Worker -0.3619270324707031f,
1857*8975f5c5SAndroid Build Coastguard Worker 0.7909271121025085f,
1858*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1859*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1860*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1861*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1862*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1863*8975f5c5SAndroid Build Coastguard Worker });
1864*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1865*8975f5c5SAndroid Build Coastguard Worker 0.6100972890853882f,
1866*8975f5c5SAndroid Build Coastguard Worker 0.4051006734371185f,
1867*8975f5c5SAndroid Build Coastguard Worker 0.6809366941452026f,
1868*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1869*8975f5c5SAndroid Build Coastguard Worker -0.6470826864242554f,
1870*8975f5c5SAndroid Build Coastguard Worker 0.7507012486457825f,
1871*8975f5c5SAndroid Build Coastguard Worker 0.1331603974103928f,
1872*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1873*8975f5c5SAndroid Build Coastguard Worker -0.4572366476058960f,
1874*8975f5c5SAndroid Build Coastguard Worker -0.5218631625175476f,
1875*8975f5c5SAndroid Build Coastguard Worker 0.7201343774795532f,
1876*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1877*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1878*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1879*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1880*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1881*8975f5c5SAndroid Build Coastguard Worker });
1882*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1883*8975f5c5SAndroid Build Coastguard Worker 0.6304160356521606f,
1884*8975f5c5SAndroid Build Coastguard Worker 0.2796489298343658f,
1885*8975f5c5SAndroid Build Coastguard Worker -0.7241353392601013f,
1886*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1887*8975f5c5SAndroid Build Coastguard Worker 0.3735889792442322f,
1888*8975f5c5SAndroid Build Coastguard Worker 0.7084143161773682f,
1889*8975f5c5SAndroid Build Coastguard Worker 0.5988158583641052f,
1890*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1891*8975f5c5SAndroid Build Coastguard Worker 0.6804460883140564f,
1892*8975f5c5SAndroid Build Coastguard Worker -0.6480321288108826f,
1893*8975f5c5SAndroid Build Coastguard Worker 0.3421219885349274f,
1894*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1895*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1896*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1897*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1898*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1899*8975f5c5SAndroid Build Coastguard Worker });
1900*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1901*8975f5c5SAndroid Build Coastguard Worker -0.2888220548629761f,
1902*8975f5c5SAndroid Build Coastguard Worker 0.9278694987297058f,
1903*8975f5c5SAndroid Build Coastguard Worker -0.2358816564083099f,
1904*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1905*8975f5c5SAndroid Build Coastguard Worker 0.8899697065353394f,
1906*8975f5c5SAndroid Build Coastguard Worker 0.1693908572196960f,
1907*8975f5c5SAndroid Build Coastguard Worker -0.4233919680118561f,
1908*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1909*8975f5c5SAndroid Build Coastguard Worker -0.3528962731361389f,
1910*8975f5c5SAndroid Build Coastguard Worker -0.3322124481201172f,
1911*8975f5c5SAndroid Build Coastguard Worker -0.8746994137763977f,
1912*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
1913*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1914*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1915*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1916*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1917*8975f5c5SAndroid Build Coastguard Worker });
1918*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1919*8975f5c5SAndroid Build Coastguard Worker 0.7878623008728027f,
1920*8975f5c5SAndroid Build Coastguard Worker 0.2866843938827515f,
1921*8975f5c5SAndroid Build Coastguard Worker 0.5450551509857178f,
1922*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1923*8975f5c5SAndroid Build Coastguard Worker -0.5206709504127502f,
1924*8975f5c5SAndroid Build Coastguard Worker 0.7827371954917908f,
1925*8975f5c5SAndroid Build Coastguard Worker 0.3409168124198914f,
1926*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1927*8975f5c5SAndroid Build Coastguard Worker -0.3288993835449219f,
1928*8975f5c5SAndroid Build Coastguard Worker -0.5523898601531982f,
1929*8975f5c5SAndroid Build Coastguard Worker 0.7659573554992676f,
1930*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1931*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1932*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1933*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1934*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1935*8975f5c5SAndroid Build Coastguard Worker });
1936*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1937*8975f5c5SAndroid Build Coastguard Worker -0.3225378990173340f,
1938*8975f5c5SAndroid Build Coastguard Worker 0.9464974999427795f,
1939*8975f5c5SAndroid Build Coastguard Worker 0.0105716586112976f,
1940*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1941*8975f5c5SAndroid Build Coastguard Worker -0.4923008084297180f,
1942*8975f5c5SAndroid Build Coastguard Worker -0.1582012772560120f,
1943*8975f5c5SAndroid Build Coastguard Worker -0.8559277057647705f,
1944*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
1945*8975f5c5SAndroid Build Coastguard Worker -0.8084610104560852f,
1946*8975f5c5SAndroid Build Coastguard Worker -0.2812736034393311f,
1947*8975f5c5SAndroid Build Coastguard Worker 0.5169874429702759f,
1948*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1949*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1950*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1951*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1952*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1953*8975f5c5SAndroid Build Coastguard Worker });
1954*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1955*8975f5c5SAndroid Build Coastguard Worker 0.3137793838977814f,
1956*8975f5c5SAndroid Build Coastguard Worker 0.3656709790229797f,
1957*8975f5c5SAndroid Build Coastguard Worker 0.8762575387954712f,
1958*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1959*8975f5c5SAndroid Build Coastguard Worker 0.8767655491828918f,
1960*8975f5c5SAndroid Build Coastguard Worker 0.2426431477069855f,
1961*8975f5c5SAndroid Build Coastguard Worker -0.4152186512947083f,
1962*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1963*8975f5c5SAndroid Build Coastguard Worker -0.3644512593746185f,
1964*8975f5c5SAndroid Build Coastguard Worker 0.8985595107078552f,
1965*8975f5c5SAndroid Build Coastguard Worker -0.2444712668657303f,
1966*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1967*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1968*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1969*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1970*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1971*8975f5c5SAndroid Build Coastguard Worker });
1972*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1973*8975f5c5SAndroid Build Coastguard Worker 0.8862395882606506f,
1974*8975f5c5SAndroid Build Coastguard Worker -0.3831786513328552f,
1975*8975f5c5SAndroid Build Coastguard Worker 0.2602950036525726f,
1976*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1977*8975f5c5SAndroid Build Coastguard Worker 0.4416945576667786f,
1978*8975f5c5SAndroid Build Coastguard Worker 0.8683440685272217f,
1979*8975f5c5SAndroid Build Coastguard Worker -0.2255758643150330f,
1980*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1981*8975f5c5SAndroid Build Coastguard Worker -0.1395897567272186f,
1982*8975f5c5SAndroid Build Coastguard Worker 0.3148851394653320f,
1983*8975f5c5SAndroid Build Coastguard Worker 0.9388087987899780f,
1984*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1985*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1986*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1987*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1988*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
1989*8975f5c5SAndroid Build Coastguard Worker });
1990*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
1991*8975f5c5SAndroid Build Coastguard Worker 0.4614841341972351f,
1992*8975f5c5SAndroid Build Coastguard Worker -0.8635553717613220f,
1993*8975f5c5SAndroid Build Coastguard Worker -0.2032356113195419f,
1994*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1995*8975f5c5SAndroid Build Coastguard Worker -0.7492366433143616f,
1996*8975f5c5SAndroid Build Coastguard Worker -0.5020523071289062f,
1997*8975f5c5SAndroid Build Coastguard Worker 0.4319583475589752f,
1998*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
1999*8975f5c5SAndroid Build Coastguard Worker -0.4750548601150513f,
2000*8975f5c5SAndroid Build Coastguard Worker -0.0470703244209290f,
2001*8975f5c5SAndroid Build Coastguard Worker -0.8786963224411011f,
2002*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2003*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2004*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2005*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2006*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2007*8975f5c5SAndroid Build Coastguard Worker });
2008*8975f5c5SAndroid Build Coastguard Worker invTrInputs.push_back({
2009*8975f5c5SAndroid Build Coastguard Worker 0.7327640056610107f,
2010*8975f5c5SAndroid Build Coastguard Worker -0.5076418519020081f,
2011*8975f5c5SAndroid Build Coastguard Worker 0.4531629979610443f,
2012*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2013*8975f5c5SAndroid Build Coastguard Worker -0.0702797919511795f,
2014*8975f5c5SAndroid Build Coastguard Worker 0.6059250831604004f,
2015*8975f5c5SAndroid Build Coastguard Worker 0.7924112081527710f,
2016*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2017*8975f5c5SAndroid Build Coastguard Worker -0.6768439412117004f,
2018*8975f5c5SAndroid Build Coastguard Worker -0.6124986410140991f,
2019*8975f5c5SAndroid Build Coastguard Worker 0.4083231091499329f,
2020*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2021*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2022*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2023*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2024*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2025*8975f5c5SAndroid Build Coastguard Worker });
2026*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2027*8975f5c5SAndroid Build Coastguard Worker 0.3247878849506378f,
2028*8975f5c5SAndroid Build Coastguard Worker -0.8279562592506409f,
2029*8975f5c5SAndroid Build Coastguard Worker 0.4571668505668640f,
2030*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2031*8975f5c5SAndroid Build Coastguard Worker 0.9041203260421753f,
2032*8975f5c5SAndroid Build Coastguard Worker 0.1299064010381699f,
2033*8975f5c5SAndroid Build Coastguard Worker -0.4070515930652618f,
2034*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2035*8975f5c5SAndroid Build Coastguard Worker 0.2776320576667786f,
2036*8975f5c5SAndroid Build Coastguard Worker 0.5455390810966492f,
2037*8975f5c5SAndroid Build Coastguard Worker 0.7907639741897583f,
2038*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2039*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2040*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2041*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2042*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2043*8975f5c5SAndroid Build Coastguard Worker });
2044*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2045*8975f5c5SAndroid Build Coastguard Worker -0.8843840360641479f,
2046*8975f5c5SAndroid Build Coastguard Worker 0.3047805130481720f,
2047*8975f5c5SAndroid Build Coastguard Worker -0.3535164594650269f,
2048*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2049*8975f5c5SAndroid Build Coastguard Worker 0.4647804200649261f,
2050*8975f5c5SAndroid Build Coastguard Worker 0.6447105407714844f,
2051*8975f5c5SAndroid Build Coastguard Worker -0.6068999171257019f,
2052*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2053*8975f5c5SAndroid Build Coastguard Worker 0.0429445207118988f,
2054*8975f5c5SAndroid Build Coastguard Worker -0.7010400891304016f,
2055*8975f5c5SAndroid Build Coastguard Worker -0.7118277549743652f,
2056*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2057*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2058*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2059*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2060*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2061*8975f5c5SAndroid Build Coastguard Worker });
2062*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2063*8975f5c5SAndroid Build Coastguard Worker -0.4487787485122681f,
2064*8975f5c5SAndroid Build Coastguard Worker 0.8632985949516296f,
2065*8975f5c5SAndroid Build Coastguard Worker 0.2308966219425201f,
2066*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2067*8975f5c5SAndroid Build Coastguard Worker -0.5765565037727356f,
2068*8975f5c5SAndroid Build Coastguard Worker -0.0823005959391594f,
2069*8975f5c5SAndroid Build Coastguard Worker -0.8129017353057861f,
2070*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2071*8975f5c5SAndroid Build Coastguard Worker -0.6827740073204041f,
2072*8975f5c5SAndroid Build Coastguard Worker -0.4979379475116730f,
2073*8975f5c5SAndroid Build Coastguard Worker 0.5346751213073730f,
2074*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2075*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2076*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2077*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2078*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2079*8975f5c5SAndroid Build Coastguard Worker });
2080*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2081*8975f5c5SAndroid Build Coastguard Worker 0.9865614175796509f,
2082*8975f5c5SAndroid Build Coastguard Worker 0.0901400819420815f,
2083*8975f5c5SAndroid Build Coastguard Worker -0.1362766027450562f,
2084*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2085*8975f5c5SAndroid Build Coastguard Worker 0.0155128324404359f,
2086*8975f5c5SAndroid Build Coastguard Worker 0.7786108255386353f,
2087*8975f5c5SAndroid Build Coastguard Worker 0.6273154020309448f,
2088*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2089*8975f5c5SAndroid Build Coastguard Worker 0.1626526862382889f,
2090*8975f5c5SAndroid Build Coastguard Worker -0.6209992170333862f,
2091*8975f5c5SAndroid Build Coastguard Worker 0.7667490839958191f,
2092*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2093*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2094*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2095*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2096*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2097*8975f5c5SAndroid Build Coastguard Worker });
2098*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2099*8975f5c5SAndroid Build Coastguard Worker -0.5566664934158325f,
2100*8975f5c5SAndroid Build Coastguard Worker 0.8302738070487976f,
2101*8975f5c5SAndroid Build Coastguard Worker -0.0277124084532261f,
2102*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2103*8975f5c5SAndroid Build Coastguard Worker -0.0281168315559626f,
2104*8975f5c5SAndroid Build Coastguard Worker 0.0145094739273190f,
2105*8975f5c5SAndroid Build Coastguard Worker 0.9994993805885315f,
2106*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2107*8975f5c5SAndroid Build Coastguard Worker 0.8302602171897888f,
2108*8975f5c5SAndroid Build Coastguard Worker 0.5571669340133667f,
2109*8975f5c5SAndroid Build Coastguard Worker 0.0152676850557327f,
2110*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2111*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2112*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2113*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2114*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2115*8975f5c5SAndroid Build Coastguard Worker });
2116*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2117*8975f5c5SAndroid Build Coastguard Worker 0.4160673320293427f,
2118*8975f5c5SAndroid Build Coastguard Worker -0.9093281030654907f,
2119*8975f5c5SAndroid Build Coastguard Worker 0.0032218731939793f,
2120*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2121*8975f5c5SAndroid Build Coastguard Worker -0.1397585272789001f,
2122*8975f5c5SAndroid Build Coastguard Worker -0.0674473419785500f,
2123*8975f5c5SAndroid Build Coastguard Worker -0.9878858327865601f,
2124*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2125*8975f5c5SAndroid Build Coastguard Worker 0.8985296487808228f,
2126*8975f5c5SAndroid Build Coastguard Worker 0.4105767309665680f,
2127*8975f5c5SAndroid Build Coastguard Worker -0.1551489681005478f,
2128*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2129*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2130*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2131*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2132*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2133*8975f5c5SAndroid Build Coastguard Worker });
2134*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2135*8975f5c5SAndroid Build Coastguard Worker 0.9039891958236694f,
2136*8975f5c5SAndroid Build Coastguard Worker -0.3967807590961456f,
2137*8975f5c5SAndroid Build Coastguard Worker -0.1592751741409302f,
2138*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2139*8975f5c5SAndroid Build Coastguard Worker 0.4139677286148071f,
2140*8975f5c5SAndroid Build Coastguard Worker 0.9054294228553772f,
2141*8975f5c5SAndroid Build Coastguard Worker 0.0939593166112900f,
2142*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2143*8975f5c5SAndroid Build Coastguard Worker 0.1069311797618866f,
2144*8975f5c5SAndroid Build Coastguard Worker -0.1508729755878448f,
2145*8975f5c5SAndroid Build Coastguard Worker 0.9827527999877930f,
2146*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2147*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2148*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2149*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2150*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2151*8975f5c5SAndroid Build Coastguard Worker });
2152*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2153*8975f5c5SAndroid Build Coastguard Worker 0.3662134706974030f,
2154*8975f5c5SAndroid Build Coastguard Worker 0.2184857726097107f,
2155*8975f5c5SAndroid Build Coastguard Worker 0.9045172333717346f,
2156*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2157*8975f5c5SAndroid Build Coastguard Worker -0.6651675701141357f,
2158*8975f5c5SAndroid Build Coastguard Worker 0.7412176728248596f,
2159*8975f5c5SAndroid Build Coastguard Worker 0.0902667865157127f,
2160*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2161*8975f5c5SAndroid Build Coastguard Worker -0.6507222652435303f,
2162*8975f5c5SAndroid Build Coastguard Worker -0.6347125172615051f,
2163*8975f5c5SAndroid Build Coastguard Worker 0.4167735874652863f,
2164*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2165*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2166*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2167*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2168*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2169*8975f5c5SAndroid Build Coastguard Worker });
2170*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2171*8975f5c5SAndroid Build Coastguard Worker 0.3791427314281464f,
2172*8975f5c5SAndroid Build Coastguard Worker 0.7277373671531677f,
2173*8975f5c5SAndroid Build Coastguard Worker -0.5715324282646179f,
2174*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2175*8975f5c5SAndroid Build Coastguard Worker -0.3511379957199097f,
2176*8975f5c5SAndroid Build Coastguard Worker 0.6845995187759399f,
2177*8975f5c5SAndroid Build Coastguard Worker 0.6387690305709839f,
2178*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2179*8975f5c5SAndroid Build Coastguard Worker 0.8561268448829651f,
2180*8975f5c5SAndroid Build Coastguard Worker -0.0414978675544262f,
2181*8975f5c5SAndroid Build Coastguard Worker 0.5150971412658691f,
2182*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2183*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2184*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2185*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2186*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2187*8975f5c5SAndroid Build Coastguard Worker });
2188*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2189*8975f5c5SAndroid Build Coastguard Worker -0.6766842603683472f,
2190*8975f5c5SAndroid Build Coastguard Worker -0.0953262373805046f,
2191*8975f5c5SAndroid Build Coastguard Worker -0.7300761342048645f,
2192*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2193*8975f5c5SAndroid Build Coastguard Worker -0.5922094583511353f,
2194*8975f5c5SAndroid Build Coastguard Worker 0.6596452593803406f,
2195*8975f5c5SAndroid Build Coastguard Worker 0.4627698063850403f,
2196*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2197*8975f5c5SAndroid Build Coastguard Worker 0.4374772608280182f,
2198*8975f5c5SAndroid Build Coastguard Worker 0.7455070018768311f,
2199*8975f5c5SAndroid Build Coastguard Worker -0.5028247833251953f,
2200*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2201*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2202*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2203*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2204*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2205*8975f5c5SAndroid Build Coastguard Worker });
2206*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2207*8975f5c5SAndroid Build Coastguard Worker 0.8012669086456299f,
2208*8975f5c5SAndroid Build Coastguard Worker -0.5429226160049438f,
2209*8975f5c5SAndroid Build Coastguard Worker 0.2514090836048126f,
2210*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2211*8975f5c5SAndroid Build Coastguard Worker 0.3384204804897308f,
2212*8975f5c5SAndroid Build Coastguard Worker 0.7577888369560242f,
2213*8975f5c5SAndroid Build Coastguard Worker 0.5578778982162476f,
2214*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2215*8975f5c5SAndroid Build Coastguard Worker -0.4933995306491852f,
2216*8975f5c5SAndroid Build Coastguard Worker -0.3619270920753479f,
2217*8975f5c5SAndroid Build Coastguard Worker 0.7909271717071533f,
2218*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2219*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2220*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2221*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2222*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2223*8975f5c5SAndroid Build Coastguard Worker });
2224*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2225*8975f5c5SAndroid Build Coastguard Worker 0.6100972294807434f,
2226*8975f5c5SAndroid Build Coastguard Worker 0.4051006138324738f,
2227*8975f5c5SAndroid Build Coastguard Worker 0.6809366941452026f,
2228*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2229*8975f5c5SAndroid Build Coastguard Worker -0.6470826268196106f,
2230*8975f5c5SAndroid Build Coastguard Worker 0.7507011294364929f,
2231*8975f5c5SAndroid Build Coastguard Worker 0.1331604123115540f,
2232*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2233*8975f5c5SAndroid Build Coastguard Worker -0.4572366178035736f,
2234*8975f5c5SAndroid Build Coastguard Worker -0.5218631029129028f,
2235*8975f5c5SAndroid Build Coastguard Worker 0.7201343774795532f,
2236*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2237*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2238*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2239*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2240*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2241*8975f5c5SAndroid Build Coastguard Worker });
2242*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2243*8975f5c5SAndroid Build Coastguard Worker 0.6304160952568054f,
2244*8975f5c5SAndroid Build Coastguard Worker 0.2796489298343658f,
2245*8975f5c5SAndroid Build Coastguard Worker -0.7241354584693909f,
2246*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2247*8975f5c5SAndroid Build Coastguard Worker 0.3735889494419098f,
2248*8975f5c5SAndroid Build Coastguard Worker 0.7084143161773682f,
2249*8975f5c5SAndroid Build Coastguard Worker 0.5988159179687500f,
2250*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2251*8975f5c5SAndroid Build Coastguard Worker 0.6804461479187012f,
2252*8975f5c5SAndroid Build Coastguard Worker -0.6480321288108826f,
2253*8975f5c5SAndroid Build Coastguard Worker 0.3421220481395721f,
2254*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2255*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2256*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2257*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2258*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2259*8975f5c5SAndroid Build Coastguard Worker });
2260*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2261*8975f5c5SAndroid Build Coastguard Worker -0.2888221442699432f,
2262*8975f5c5SAndroid Build Coastguard Worker 0.9278693199157715f,
2263*8975f5c5SAndroid Build Coastguard Worker -0.2358815670013428f,
2264*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2265*8975f5c5SAndroid Build Coastguard Worker 0.8899695873260498f,
2266*8975f5c5SAndroid Build Coastguard Worker 0.1693906933069229f,
2267*8975f5c5SAndroid Build Coastguard Worker -0.4233919084072113f,
2268*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2269*8975f5c5SAndroid Build Coastguard Worker -0.3528962433338165f,
2270*8975f5c5SAndroid Build Coastguard Worker -0.3322124481201172f,
2271*8975f5c5SAndroid Build Coastguard Worker -0.8746994137763977f,
2272*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2273*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2274*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2275*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2276*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2277*8975f5c5SAndroid Build Coastguard Worker });
2278*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2279*8975f5c5SAndroid Build Coastguard Worker 0.7878623008728027f,
2280*8975f5c5SAndroid Build Coastguard Worker 0.2866844236850739f,
2281*8975f5c5SAndroid Build Coastguard Worker 0.5450551509857178f,
2282*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2283*8975f5c5SAndroid Build Coastguard Worker -0.5206709504127502f,
2284*8975f5c5SAndroid Build Coastguard Worker 0.7827371954917908f,
2285*8975f5c5SAndroid Build Coastguard Worker 0.3409168422222137f,
2286*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2287*8975f5c5SAndroid Build Coastguard Worker -0.3288994133472443f,
2288*8975f5c5SAndroid Build Coastguard Worker -0.5523898601531982f,
2289*8975f5c5SAndroid Build Coastguard Worker 0.7659573554992676f,
2290*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2291*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2292*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2293*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2294*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2295*8975f5c5SAndroid Build Coastguard Worker });
2296*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2297*8975f5c5SAndroid Build Coastguard Worker -0.3225379288196564f,
2298*8975f5c5SAndroid Build Coastguard Worker 0.9464974999427795f,
2299*8975f5c5SAndroid Build Coastguard Worker 0.0105716586112976f,
2300*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2301*8975f5c5SAndroid Build Coastguard Worker -0.4923008382320404f,
2302*8975f5c5SAndroid Build Coastguard Worker -0.1582012772560120f,
2303*8975f5c5SAndroid Build Coastguard Worker -0.8559277057647705f,
2304*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2305*8975f5c5SAndroid Build Coastguard Worker -0.8084610104560852f,
2306*8975f5c5SAndroid Build Coastguard Worker -0.2812735736370087f,
2307*8975f5c5SAndroid Build Coastguard Worker 0.5169873833656311f,
2308*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2309*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2310*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2311*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2312*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2313*8975f5c5SAndroid Build Coastguard Worker });
2314*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2315*8975f5c5SAndroid Build Coastguard Worker 0.3137793540954590f,
2316*8975f5c5SAndroid Build Coastguard Worker 0.3656708896160126f,
2317*8975f5c5SAndroid Build Coastguard Worker 0.8762574791908264f,
2318*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2319*8975f5c5SAndroid Build Coastguard Worker 0.8767654895782471f,
2320*8975f5c5SAndroid Build Coastguard Worker 0.2426430881023407f,
2321*8975f5c5SAndroid Build Coastguard Worker -0.4152186512947083f,
2322*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2323*8975f5c5SAndroid Build Coastguard Worker -0.3644512593746185f,
2324*8975f5c5SAndroid Build Coastguard Worker 0.8985593318939209f,
2325*8975f5c5SAndroid Build Coastguard Worker -0.2444712817668915f,
2326*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2327*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2328*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2329*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2330*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2331*8975f5c5SAndroid Build Coastguard Worker });
2332*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2333*8975f5c5SAndroid Build Coastguard Worker 0.8862395882606506f,
2334*8975f5c5SAndroid Build Coastguard Worker -0.3831786811351776f,
2335*8975f5c5SAndroid Build Coastguard Worker 0.2602950334548950f,
2336*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2337*8975f5c5SAndroid Build Coastguard Worker 0.4416945576667786f,
2338*8975f5c5SAndroid Build Coastguard Worker 0.8683440685272217f,
2339*8975f5c5SAndroid Build Coastguard Worker -0.2255758792161942f,
2340*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2341*8975f5c5SAndroid Build Coastguard Worker -0.1395897865295410f,
2342*8975f5c5SAndroid Build Coastguard Worker 0.3148851692676544f,
2343*8975f5c5SAndroid Build Coastguard Worker 0.9388088583946228f,
2344*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2345*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2346*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2347*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2348*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2349*8975f5c5SAndroid Build Coastguard Worker });
2350*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2351*8975f5c5SAndroid Build Coastguard Worker 0.4614838957786560f,
2352*8975f5c5SAndroid Build Coastguard Worker -0.8635552525520325f,
2353*8975f5c5SAndroid Build Coastguard Worker -0.2032355368137360f,
2354*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2355*8975f5c5SAndroid Build Coastguard Worker -0.7492365241050720f,
2356*8975f5c5SAndroid Build Coastguard Worker -0.5020524263381958f,
2357*8975f5c5SAndroid Build Coastguard Worker 0.4319583177566528f,
2358*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2359*8975f5c5SAndroid Build Coastguard Worker -0.4750548005104065f,
2360*8975f5c5SAndroid Build Coastguard Worker -0.0470703467726707f,
2361*8975f5c5SAndroid Build Coastguard Worker -0.8786963820457458f,
2362*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2363*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2364*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2365*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2366*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2367*8975f5c5SAndroid Build Coastguard Worker });
2368*8975f5c5SAndroid Build Coastguard Worker invTrOutputs.push_back({
2369*8975f5c5SAndroid Build Coastguard Worker 0.7327639460563660f,
2370*8975f5c5SAndroid Build Coastguard Worker -0.5076418519020081f,
2371*8975f5c5SAndroid Build Coastguard Worker 0.4531629383563995f,
2372*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2373*8975f5c5SAndroid Build Coastguard Worker -0.0702798143029213f,
2374*8975f5c5SAndroid Build Coastguard Worker 0.6059250235557556f,
2375*8975f5c5SAndroid Build Coastguard Worker 0.7924111485481262f,
2376*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2377*8975f5c5SAndroid Build Coastguard Worker -0.6768438220024109f,
2378*8975f5c5SAndroid Build Coastguard Worker -0.6124985218048096f,
2379*8975f5c5SAndroid Build Coastguard Worker 0.4083230793476105f,
2380*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2381*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2382*8975f5c5SAndroid Build Coastguard Worker 0.0000000000000000f,
2383*8975f5c5SAndroid Build Coastguard Worker -0.0000000000000000f,
2384*8975f5c5SAndroid Build Coastguard Worker 1.0000000000000000f,
2385*8975f5c5SAndroid Build Coastguard Worker });
2386*8975f5c5SAndroid Build Coastguard Worker
2387*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(invTrInputs.size(), invTrInputs.size());
2388*8975f5c5SAndroid Build Coastguard Worker
2389*8975f5c5SAndroid Build Coastguard Worker for (size_t i = 0; i < invTrInputs.size(); i++)
2390*8975f5c5SAndroid Build Coastguard Worker {
2391*8975f5c5SAndroid Build Coastguard Worker Mat4 a(invTrInputs[i]);
2392*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(invTrOutputs[i], a.transpose().inverse());
2393*8975f5c5SAndroid Build Coastguard Worker }
2394*8975f5c5SAndroid Build Coastguard Worker }
2395*8975f5c5SAndroid Build Coastguard Worker
2396*8975f5c5SAndroid Build Coastguard Worker // Tests mat4 matrix/matrix multiplication by multiplying two translation matrices.
TEST(MatrixUtilsTest,Mat4Mult)2397*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, Mat4Mult)
2398*8975f5c5SAndroid Build Coastguard Worker {
2399*8975f5c5SAndroid Build Coastguard Worker Mat4 a, b;
2400*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(a.data(), a.product(b));
2401*8975f5c5SAndroid Build Coastguard Worker
2402*8975f5c5SAndroid Build Coastguard Worker Mat4 r = Mat4::Translate(Vector3(1.f, 1.f, 1.f));
2403*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(r.data(), a.product(r));
2404*8975f5c5SAndroid Build Coastguard Worker
2405*8975f5c5SAndroid Build Coastguard Worker Mat4 s = Mat4::Translate(Vector3(2.f, 2.f, 2.f));
2406*8975f5c5SAndroid Build Coastguard Worker Mat4 t = r.product(r);
2407*8975f5c5SAndroid Build Coastguard Worker CheckMatrixCloseToGolden(s.data(), t);
2408*8975f5c5SAndroid Build Coastguard Worker }
2409*8975f5c5SAndroid Build Coastguard Worker
2410*8975f5c5SAndroid Build Coastguard Worker // Tests exact equality.
TEST(MatrixUtilsTest,ExactEquality)2411*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, ExactEquality)
2412*8975f5c5SAndroid Build Coastguard Worker {
2413*8975f5c5SAndroid Build Coastguard Worker Matrix<float> a(std::vector<float>(16), 4, 4);
2414*8975f5c5SAndroid Build Coastguard Worker Matrix<float> b(std::vector<float>(16), 4, 4);
2415*8975f5c5SAndroid Build Coastguard Worker EXPECT_EQ(a, b);
2416*8975f5c5SAndroid Build Coastguard Worker Matrix<float> c(std::vector<float>(16), 4, 4);
2417*8975f5c5SAndroid Build Coastguard Worker c(0, 0) += 0.000001f;
2418*8975f5c5SAndroid Build Coastguard Worker EXPECT_NE(a, c);
2419*8975f5c5SAndroid Build Coastguard Worker }
2420*8975f5c5SAndroid Build Coastguard Worker
2421*8975f5c5SAndroid Build Coastguard Worker // Tests near equality.
TEST(MatrixUtilsTest,NearEquality)2422*8975f5c5SAndroid Build Coastguard Worker TEST(MatrixUtilsTest, NearEquality)
2423*8975f5c5SAndroid Build Coastguard Worker {
2424*8975f5c5SAndroid Build Coastguard Worker Matrix<float> a(std::vector<float>(16), 4, 4);
2425*8975f5c5SAndroid Build Coastguard Worker Matrix<float> b(std::vector<float>(16), 4, 4);
2426*8975f5c5SAndroid Build Coastguard Worker
2427*8975f5c5SAndroid Build Coastguard Worker float *bData = b.data();
2428*8975f5c5SAndroid Build Coastguard Worker for (int i = 0; i < 16; i++)
2429*8975f5c5SAndroid Build Coastguard Worker {
2430*8975f5c5SAndroid Build Coastguard Worker bData[i] += 0.09f;
2431*8975f5c5SAndroid Build Coastguard Worker }
2432*8975f5c5SAndroid Build Coastguard Worker
2433*8975f5c5SAndroid Build Coastguard Worker EXPECT_TRUE(a.nearlyEqual(0.1f, b));
2434*8975f5c5SAndroid Build Coastguard Worker
2435*8975f5c5SAndroid Build Coastguard Worker for (int i = 0; i < 16; i++)
2436*8975f5c5SAndroid Build Coastguard Worker {
2437*8975f5c5SAndroid Build Coastguard Worker bData[i] -= 2 * 0.09f;
2438*8975f5c5SAndroid Build Coastguard Worker }
2439*8975f5c5SAndroid Build Coastguard Worker
2440*8975f5c5SAndroid Build Coastguard Worker EXPECT_TRUE(a.nearlyEqual(0.1f, b));
2441*8975f5c5SAndroid Build Coastguard Worker }
2442*8975f5c5SAndroid Build Coastguard Worker
2443*8975f5c5SAndroid Build Coastguard Worker } // namespace
2444