math3d/qmatrix4x4.cpp

Switch to Source codePreprocessed file
LineSource CodeCoverage
1 -
2 -
3 -
4static const float inv_dist_to_plane = 1.0f / 1024.0f; -
5QMatrix4x4::QMatrix4x4(const float *values) -
6{ -
7 for (int row = 0; row < 4; ++row)
evaluated: row < 4
TRUEFALSE
yes
Evaluation Count:476
yes
Evaluation Count:119
119-476
8 for (int col = 0; col < 4; ++col)
evaluated: col < 4
TRUEFALSE
yes
Evaluation Count:1904
yes
Evaluation Count:476
476-1904
9 m[col][row] = values[row * 4 + col];
executed: m[col][row] = values[row * 4 + col];
Execution Count:1904
1904
10 flagBits = General; -
11}
executed: }
Execution Count:119
119
12QMatrix4x4::QMatrix4x4(const float *values, int cols, int rows) -
13{ -
14 for (int col = 0; col < 4; ++col) {
evaluated: col < 4
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:1
1-4
15 for (int row = 0; row < 4; ++row) {
evaluated: row < 4
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:4
4-16
16 if (col < cols && row < rows)
partially evaluated: col < cols
TRUEFALSE
yes
Evaluation Count:16
no
Evaluation Count:0
evaluated: row < rows
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:4
0-16
17 m[col][row] = values[col * rows + row];
executed: m[col][row] = values[col * rows + row];
Execution Count:12
12
18 else if (col == row)
evaluated: col == row
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3
1-3
19 m[col][row] = 1.0f;
executed: m[col][row] = 1.0f;
Execution Count:1
1
20 else -
21 m[col][row] = 0.0f;
executed: m[col][row] = 0.0f;
Execution Count:3
3
22 } -
23 }
executed: }
Execution Count:4
4
24 flagBits = General; -
25}
executed: }
Execution Count:1
1
26QMatrix4x4::QMatrix4x4(const QMatrix& matrix) -
27{ -
28 m[0][0] = matrix.m11(); -
29 m[0][1] = matrix.m12(); -
30 m[0][2] = 0.0f; -
31 m[0][3] = 0.0f; -
32 m[1][0] = matrix.m21(); -
33 m[1][1] = matrix.m22(); -
34 m[1][2] = 0.0f; -
35 m[1][3] = 0.0f; -
36 m[2][0] = 0.0f; -
37 m[2][1] = 0.0f; -
38 m[2][2] = 1.0f; -
39 m[2][3] = 0.0f; -
40 m[3][0] = matrix.dx(); -
41 m[3][1] = matrix.dy(); -
42 m[3][2] = 0.0f; -
43 m[3][3] = 1.0f; -
44 flagBits = Translation | Scale | Rotation2D; -
45}
executed: }
Execution Count:3
3
46QMatrix4x4::QMatrix4x4(const QTransform& transform) -
47{ -
48 m[0][0] = transform.m11(); -
49 m[0][1] = transform.m12(); -
50 m[0][2] = 0.0f; -
51 m[0][3] = transform.m13(); -
52 m[1][0] = transform.m21(); -
53 m[1][1] = transform.m22(); -
54 m[1][2] = 0.0f; -
55 m[1][3] = transform.m23(); -
56 m[2][0] = 0.0f; -
57 m[2][1] = 0.0f; -
58 m[2][2] = 1.0f; -
59 m[2][3] = 0.0f; -
60 m[3][0] = transform.dx(); -
61 m[3][1] = transform.dy(); -
62 m[3][2] = 0.0f; -
63 m[3][3] = transform.m33(); -
64 flagBits = General; -
65}
executed: }
Execution Count:2891
2891
66static inline double matrixDet2(const double m[4][4], int col0, int col1, int row0, int row1) -
67{ -
68 return m[col0][row0] * m[col1][row1] - m[col0][row1] * m[col1][row0];
executed: return m[col0][row0] * m[col1][row1] - m[col0][row1] * m[col1][row0];
Execution Count:668
668
69} -
70static inline double matrixDet3 -
71 (const double m[4][4], int col0, int col1, int col2, -
72 int row0, int row1, int row2) -
73{ -
74 return m[col0][row0] * matrixDet2(m, col1, col2, row1, row2) 218
75 - m[col1][row0] * matrixDet2(m, col0, col2, row1, row2) 218
76 + m[col2][row0] * matrixDet2(m, col0, col1, row1, row2);
executed: return m[col0][row0] * matrixDet2(m, col1, col2, row1, row2) - m[col1][row0] * matrixDet2(m, col0, col2, row1, row2) + m[col2][row0] * matrixDet2(m, col0, col1, row1, row2);
Execution Count:218
218
77} -
78 -
79 -
80static inline double matrixDet4(const double m[4][4]) -
81{ -
82 double det; -
83 det = m[0][0] * matrixDet3(m, 1, 2, 3, 1, 2, 3); -
84 det -= m[1][0] * matrixDet3(m, 0, 2, 3, 1, 2, 3); -
85 det += m[2][0] * matrixDet3(m, 0, 1, 3, 1, 2, 3); -
86 det -= m[3][0] * matrixDet3(m, 0, 1, 2, 1, 2, 3); -
87 return det;
executed: return det;
Execution Count:23
23
88} -
89 -
90static inline void copyToDoubles(const float m[4][4], double mm[4][4]) -
91{ -
92 for (int i = 0; i < 4; ++i)
evaluated: i < 4
TRUEFALSE
yes
Evaluation Count:168
yes
Evaluation Count:42
42-168
93 for (int j = 0; j < 4; ++j)
evaluated: j < 4
TRUEFALSE
yes
Evaluation Count:672
yes
Evaluation Count:168
168-672
94 mm[i][j] = double(m[i][j]);
executed: mm[i][j] = double(m[i][j]);
Execution Count:672
672
95}
executed: }
Execution Count:42
42
96 -
97 -
98 -
99 -
100double QMatrix4x4::determinant() const -
101{ -
102 if ((flagBits & ~(Translation | Rotation2D | Rotation)) == Identity)
partially evaluated: (flagBits & ~(Translation | Rotation2D | Rotation)) == Identity
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:12
0-12
103 return 1.0;
never executed: return 1.0;
0
104 -
105 double mm[4][4]; -
106 copyToDoubles(m, mm); -
107 if (flagBits < Rotation2D)
partially evaluated: flagBits < Rotation2D
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:12
0-12
108 return mm[0][0] * mm[1][1] * mm[2][2];
never executed: return mm[0][0] * mm[1][1] * mm[2][2];
0
109 if (flagBits < Perspective)
partially evaluated: flagBits < Perspective
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:12
0-12
110 return matrixDet3(mm, 0, 1, 2, 0, 1, 2);
never executed: return matrixDet3(mm, 0, 1, 2, 0, 1, 2);
0
111 return matrixDet4(mm);
executed: return matrixDet4(mm);
Execution Count:12
12
112} -
113QMatrix4x4 QMatrix4x4::inverted(bool *invertible) const -
114{ -
115 -
116 if (flagBits == Identity) {
evaluated: flagBits == Identity
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:16
3-16
117 if (invertible)
evaluated: invertible
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
1-2
118 *invertible = true;
executed: *invertible = true;
Execution Count:1
1
119 return QMatrix4x4();
executed: return QMatrix4x4();
Execution Count:3
3
120 } else if (flagBits == Translation) {
evaluated: flagBits == Translation
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:15
1-15
121 QMatrix4x4 inv; -
122 inv.m[3][0] = -m[3][0]; -
123 inv.m[3][1] = -m[3][1]; -
124 inv.m[3][2] = -m[3][2]; -
125 inv.flagBits = Translation; -
126 if (invertible)
partially evaluated: invertible
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
127 *invertible = true;
executed: *invertible = true;
Execution Count:1
1
128 return inv;
executed: return inv;
Execution Count:1
1
129 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:14
1-14
130 -
131 if (m[0][0] == 0 || m[1][1] == 0 || m[2][2] == 0) {
partially evaluated: m[0][0] == 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
partially evaluated: m[1][1] == 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
partially evaluated: m[2][2] == 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
132 if (invertible)
never evaluated: invertible
0
133 *invertible = false;
never executed: *invertible = false;
0
134 return QMatrix4x4();
never executed: return QMatrix4x4();
0
135 } -
136 QMatrix4x4 inv; -
137 inv.m[0][0] = 1.0f / m[0][0]; -
138 inv.m[1][1] = 1.0f / m[1][1]; -
139 inv.m[2][2] = 1.0f / m[2][2]; -
140 inv.m[3][0] = -m[3][0] * inv.m[0][0]; -
141 inv.m[3][1] = -m[3][1] * inv.m[1][1]; -
142 inv.m[3][2] = -m[3][2] * inv.m[2][2]; -
143 inv.flagBits = flagBits; -
144 -
145 if (invertible)
partially evaluated: invertible
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
146 *invertible = true;
executed: *invertible = true;
Execution Count:1
1
147 return inv;
executed: return inv;
Execution Count:1
1
148 } else if ((flagBits & ~(Translation | Rotation2D | Rotation)) == Identity) {
evaluated: (flagBits & ~(Translation | Rotation2D | Rotation)) == Identity
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:12
2-12
149 if (invertible)
evaluated: invertible
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1
150 *invertible = true;
executed: *invertible = true;
Execution Count:1
1
151 return orthonormalInverse();
executed: return orthonormalInverse();
Execution Count:2
2
152 } else if (flagBits < Perspective) {
evaluated: flagBits < Perspective
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11
1-11
153 QMatrix4x4 inv(1); -
154 -
155 double mm[4][4]; -
156 copyToDoubles(m, mm); -
157 -
158 double det = matrixDet3(mm, 0, 1, 2, 0, 1, 2); -
159 if (det == 0.0f) {
partially evaluated: det == 0.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
160 if (invertible)
never evaluated: invertible
0
161 *invertible = false;
never executed: *invertible = false;
0
162 return QMatrix4x4();
never executed: return QMatrix4x4();
0
163 } -
164 det = 1.0f / det; -
165 -
166 inv.m[0][0] = matrixDet2(mm, 1, 2, 1, 2) * det; -
167 inv.m[0][1] = -matrixDet2(mm, 0, 2, 1, 2) * det; -
168 inv.m[0][2] = matrixDet2(mm, 0, 1, 1, 2) * det; -
169 inv.m[0][3] = 0; -
170 inv.m[1][0] = -matrixDet2(mm, 1, 2, 0, 2) * det; -
171 inv.m[1][1] = matrixDet2(mm, 0, 2, 0, 2) * det; -
172 inv.m[1][2] = -matrixDet2(mm, 0, 1, 0, 2) * det; -
173 inv.m[1][3] = 0; -
174 inv.m[2][0] = matrixDet2(mm, 1, 2, 0, 1) * det; -
175 inv.m[2][1] = -matrixDet2(mm, 0, 2, 0, 1) * det; -
176 inv.m[2][2] = matrixDet2(mm, 0, 1, 0, 1) * det; -
177 inv.m[2][3] = 0; -
178 inv.m[3][0] = -inv.m[0][0] * m[3][0] - inv.m[1][0] * m[3][1] - inv.m[2][0] * m[3][2]; -
179 inv.m[3][1] = -inv.m[0][1] * m[3][0] - inv.m[1][1] * m[3][1] - inv.m[2][1] * m[3][2]; -
180 inv.m[3][2] = -inv.m[0][2] * m[3][0] - inv.m[1][2] * m[3][1] - inv.m[2][2] * m[3][2]; -
181 inv.m[3][3] = 1; -
182 inv.flagBits = flagBits; -
183 -
184 if (invertible)
partially evaluated: invertible
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
185 *invertible = true;
executed: *invertible = true;
Execution Count:1
1
186 return inv;
executed: return inv;
Execution Count:1
1
187 } -
188 -
189 QMatrix4x4 inv(1); -
190 -
191 double mm[4][4]; -
192 copyToDoubles(m, mm); -
193 -
194 double det = matrixDet4(mm); -
195 if (det == 0.0f) {
evaluated: det == 0.0f
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:7
4-7
196 if (invertible)
partially evaluated: invertible
TRUEFALSE
yes
Evaluation Count:4
no
Evaluation Count:0
0-4
197 *invertible = false;
executed: *invertible = false;
Execution Count:4
4
198 return QMatrix4x4();
executed: return QMatrix4x4();
Execution Count:4
4
199 } -
200 det = 1.0f / det; -
201 -
202 inv.m[0][0] = matrixDet3(mm, 1, 2, 3, 1, 2, 3) * det; -
203 inv.m[0][1] = -matrixDet3(mm, 0, 2, 3, 1, 2, 3) * det; -
204 inv.m[0][2] = matrixDet3(mm, 0, 1, 3, 1, 2, 3) * det; -
205 inv.m[0][3] = -matrixDet3(mm, 0, 1, 2, 1, 2, 3) * det; -
206 inv.m[1][0] = -matrixDet3(mm, 1, 2, 3, 0, 2, 3) * det; -
207 inv.m[1][1] = matrixDet3(mm, 0, 2, 3, 0, 2, 3) * det; -
208 inv.m[1][2] = -matrixDet3(mm, 0, 1, 3, 0, 2, 3) * det; -
209 inv.m[1][3] = matrixDet3(mm, 0, 1, 2, 0, 2, 3) * det; -
210 inv.m[2][0] = matrixDet3(mm, 1, 2, 3, 0, 1, 3) * det; -
211 inv.m[2][1] = -matrixDet3(mm, 0, 2, 3, 0, 1, 3) * det; -
212 inv.m[2][2] = matrixDet3(mm, 0, 1, 3, 0, 1, 3) * det; -
213 inv.m[2][3] = -matrixDet3(mm, 0, 1, 2, 0, 1, 3) * det; -
214 inv.m[3][0] = -matrixDet3(mm, 1, 2, 3, 0, 1, 2) * det; -
215 inv.m[3][1] = matrixDet3(mm, 0, 2, 3, 0, 1, 2) * det; -
216 inv.m[3][2] = -matrixDet3(mm, 0, 1, 3, 0, 1, 2) * det; -
217 inv.m[3][3] = matrixDet3(mm, 0, 1, 2, 0, 1, 2) * det; -
218 inv.flagBits = flagBits; -
219 -
220 if (invertible)
evaluated: invertible
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:3
3-4
221 *invertible = true;
executed: *invertible = true;
Execution Count:4
4
222 return inv;
executed: return inv;
Execution Count:7
7
223} -
224QMatrix3x3 QMatrix4x4::normalMatrix() const -
225{ -
226 QMatrix3x3 inv; -
227 -
228 -
229 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:16
2-16
230 -
231 return inv;
executed: return inv;
Execution Count:2
2
232 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:11
5-11
233 -
234 if (m[0][0] == 0.0f || m[1][1] == 0.0f || m[2][2] == 0.0f)
evaluated: m[0][0] == 0.0f
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:4
evaluated: m[1][1] == 0.0f
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3
evaluated: m[2][2] == 0.0f
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
1-4
235 return inv;
executed: return inv;
Execution Count:3
3
236 inv.data()[0] = 1.0f / m[0][0]; -
237 inv.data()[4] = 1.0f / m[1][1]; -
238 inv.data()[8] = 1.0f / m[2][2]; -
239 return inv;
executed: return inv;
Execution Count:2
2
240 } else if ((flagBits & ~(Translation | Rotation2D | Rotation)) == Identity) {
evaluated: (flagBits & ~(Translation | Rotation2D | Rotation)) == Identity
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:10
1-10
241 float *invm = inv.data(); -
242 invm[0 + 0 * 3] = m[0][0]; -
243 invm[1 + 0 * 3] = m[0][1]; -
244 invm[2 + 0 * 3] = m[0][2]; -
245 invm[0 + 1 * 3] = m[1][0]; -
246 invm[1 + 1 * 3] = m[1][1]; -
247 invm[2 + 1 * 3] = m[1][2]; -
248 invm[0 + 2 * 3] = m[2][0]; -
249 invm[1 + 2 * 3] = m[2][1]; -
250 invm[2 + 2 * 3] = m[2][2]; -
251 return inv;
executed: return inv;
Execution Count:1
1
252 } -
253 -
254 double mm[4][4]; -
255 copyToDoubles(m, mm); -
256 double det = matrixDet3(mm, 0, 1, 2, 0, 1, 2); -
257 if (det == 0.0f)
evaluated: det == 0.0f
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:5
5
258 return inv;
executed: return inv;
Execution Count:5
5
259 det = 1.0f / det; -
260 -
261 float *invm = inv.data(); -
262 -
263 -
264 invm[0 + 0 * 3] = (mm[1][1] * mm[2][2] - mm[2][1] * mm[1][2]) * det; -
265 invm[1 + 0 * 3] = -(mm[1][0] * mm[2][2] - mm[1][2] * mm[2][0]) * det; -
266 invm[2 + 0 * 3] = (mm[1][0] * mm[2][1] - mm[1][1] * mm[2][0]) * det; -
267 invm[0 + 1 * 3] = -(mm[0][1] * mm[2][2] - mm[2][1] * mm[0][2]) * det; -
268 invm[1 + 1 * 3] = (mm[0][0] * mm[2][2] - mm[0][2] * mm[2][0]) * det; -
269 invm[2 + 1 * 3] = -(mm[0][0] * mm[2][1] - mm[0][1] * mm[2][0]) * det; -
270 invm[0 + 2 * 3] = (mm[0][1] * mm[1][2] - mm[0][2] * mm[1][1]) * det; -
271 invm[1 + 2 * 3] = -(mm[0][0] * mm[1][2] - mm[0][2] * mm[1][0]) * det; -
272 invm[2 + 2 * 3] = (mm[0][0] * mm[1][1] - mm[1][0] * mm[0][1]) * det; -
273 -
274 return inv;
executed: return inv;
Execution Count:5
5
275} -
276 -
277 -
278 -
279 -
280QMatrix4x4 QMatrix4x4::transposed() const -
281{ -
282 QMatrix4x4 result(1); -
283 for (int row = 0; row < 4; ++row) {
evaluated: row < 4
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:3
3-12
284 for (int col = 0; col < 4; ++col) {
evaluated: col < 4
TRUEFALSE
yes
Evaluation Count:48
yes
Evaluation Count:12
12-48
285 result.m[col][row] = m[row][col]; -
286 }
executed: }
Execution Count:48
48
287 }
executed: }
Execution Count:12
12
288 -
289 result.flagBits = (flagBits & Translation ? General : flagBits);
evaluated: flagBits & Translation
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-2
290 return result;
executed: return result;
Execution Count:3
3
291} -
292QMatrix4x4& QMatrix4x4::operator/=(float divisor) -
293{ -
294 m[0][0] /= divisor; -
295 m[0][1] /= divisor; -
296 m[0][2] /= divisor; -
297 m[0][3] /= divisor; -
298 m[1][0] /= divisor; -
299 m[1][1] /= divisor; -
300 m[1][2] /= divisor; -
301 m[1][3] /= divisor; -
302 m[2][0] /= divisor; -
303 m[2][1] /= divisor; -
304 m[2][2] /= divisor; -
305 m[2][3] /= divisor; -
306 m[3][0] /= divisor; -
307 m[3][1] /= divisor; -
308 m[3][2] /= divisor; -
309 m[3][3] /= divisor; -
310 flagBits = General; -
311 return *this;
executed: return *this;
Execution Count:4
4
312} -
313QMatrix4x4 operator/(const QMatrix4x4& matrix, float divisor) -
314{ -
315 QMatrix4x4 m(1); -
316 m.m[0][0] = matrix.m[0][0] / divisor; -
317 m.m[0][1] = matrix.m[0][1] / divisor; -
318 m.m[0][2] = matrix.m[0][2] / divisor; -
319 m.m[0][3] = matrix.m[0][3] / divisor; -
320 m.m[1][0] = matrix.m[1][0] / divisor; -
321 m.m[1][1] = matrix.m[1][1] / divisor; -
322 m.m[1][2] = matrix.m[1][2] / divisor; -
323 m.m[1][3] = matrix.m[1][3] / divisor; -
324 m.m[2][0] = matrix.m[2][0] / divisor; -
325 m.m[2][1] = matrix.m[2][1] / divisor; -
326 m.m[2][2] = matrix.m[2][2] / divisor; -
327 m.m[2][3] = matrix.m[2][3] / divisor; -
328 m.m[3][0] = matrix.m[3][0] / divisor; -
329 m.m[3][1] = matrix.m[3][1] / divisor; -
330 m.m[3][2] = matrix.m[3][2] / divisor; -
331 m.m[3][3] = matrix.m[3][3] / divisor; -
332 m.flagBits = QMatrix4x4::General; -
333 return m;
executed: return m;
Execution Count:4
4
334} -
335void QMatrix4x4::scale(const QVector3D& vector) -
336{ -
337 float vx = vector.x(); -
338 float vy = vector.y(); -
339 float vz = vector.z(); -
340 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:7
7-9
341 m[0][0] = vx; -
342 m[1][1] = vy; -
343 m[2][2] = vz; -
344 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:5
executed: }
Execution Count:9
2-9
345 m[0][0] *= vx; -
346 m[1][1] *= vy; -
347 m[2][2] *= vz; -
348 } else if (flagBits < Rotation) {
partially evaluated: flagBits < Rotation
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
executed: }
Execution Count:2
0-5
349 m[0][0] *= vx; -
350 m[0][1] *= vx; -
351 m[1][0] *= vy; -
352 m[1][1] *= vy; -
353 m[2][2] *= vz; -
354 } else {
never executed: }
0
355 m[0][0] *= vx; -
356 m[0][1] *= vx; -
357 m[0][2] *= vx; -
358 m[0][3] *= vx; -
359 m[1][0] *= vy; -
360 m[1][1] *= vy; -
361 m[1][2] *= vy; -
362 m[1][3] *= vy; -
363 m[2][0] *= vz; -
364 m[2][1] *= vz; -
365 m[2][2] *= vz; -
366 m[2][3] *= vz; -
367 }
executed: }
Execution Count:5
5
368 flagBits |= Scale; -
369}
executed: }
Execution Count:16
16
370void QMatrix4x4::scale(float x, float y) -
371{ -
372 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:2
2-6
373 m[0][0] = x; -
374 m[1][1] = y; -
375 } else if (flagBits < Rotation2D) {
partially evaluated: flagBits < Rotation2D
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
executed: }
Execution Count:6
0-6
376 m[0][0] *= x; -
377 m[1][1] *= y; -
378 } else if (flagBits < Rotation) {
partially evaluated: flagBits < Rotation
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never executed: }
0-2
379 m[0][0] *= x; -
380 m[0][1] *= x; -
381 m[1][0] *= y; -
382 m[1][1] *= y; -
383 } else {
never executed: }
0
384 m[0][0] *= x; -
385 m[0][1] *= x; -
386 m[0][2] *= x; -
387 m[0][3] *= x; -
388 m[1][0] *= y; -
389 m[1][1] *= y; -
390 m[1][2] *= y; -
391 m[1][3] *= y; -
392 }
executed: }
Execution Count:2
2
393 flagBits |= Scale; -
394}
executed: }
Execution Count:8
8
395void QMatrix4x4::scale(float x, float y, float z) -
396{ -
397 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:17
yes
Evaluation Count:12
12-17
398 m[0][0] = x; -
399 m[1][1] = y; -
400 m[2][2] = z; -
401 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:10
executed: }
Execution Count:17
2-17
402 m[0][0] *= x; -
403 m[1][1] *= y; -
404 m[2][2] *= z; -
405 } else if (flagBits < Rotation) {
partially evaluated: flagBits < Rotation
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:10
executed: }
Execution Count:2
0-10
406 m[0][0] *= x; -
407 m[0][1] *= x; -
408 m[1][0] *= y; -
409 m[1][1] *= y; -
410 m[2][2] *= z; -
411 } else {
never executed: }
0
412 m[0][0] *= x; -
413 m[0][1] *= x; -
414 m[0][2] *= x; -
415 m[0][3] *= x; -
416 m[1][0] *= y; -
417 m[1][1] *= y; -
418 m[1][2] *= y; -
419 m[1][3] *= y; -
420 m[2][0] *= z; -
421 m[2][1] *= z; -
422 m[2][2] *= z; -
423 m[2][3] *= z; -
424 }
executed: }
Execution Count:10
10
425 flagBits |= Scale; -
426}
executed: }
Execution Count:29
29
427void QMatrix4x4::scale(float factor) -
428{ -
429 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:5
5-8
430 m[0][0] = factor; -
431 m[1][1] = factor; -
432 m[2][2] = factor; -
433 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:3
executed: }
Execution Count:8
2-8
434 m[0][0] *= factor; -
435 m[1][1] *= factor; -
436 m[2][2] *= factor; -
437 } else if (flagBits < Rotation) {
partially evaluated: flagBits < Rotation
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3
executed: }
Execution Count:2
0-3
438 m[0][0] *= factor; -
439 m[0][1] *= factor; -
440 m[1][0] *= factor; -
441 m[1][1] *= factor; -
442 m[2][2] *= factor; -
443 } else {
never executed: }
0
444 m[0][0] *= factor; -
445 m[0][1] *= factor; -
446 m[0][2] *= factor; -
447 m[0][3] *= factor; -
448 m[1][0] *= factor; -
449 m[1][1] *= factor; -
450 m[1][2] *= factor; -
451 m[1][3] *= factor; -
452 m[2][0] *= factor; -
453 m[2][1] *= factor; -
454 m[2][2] *= factor; -
455 m[2][3] *= factor; -
456 }
executed: }
Execution Count:3
3
457 flagBits |= Scale; -
458}
executed: }
Execution Count:13
13
459void QMatrix4x4::translate(const QVector3D& vector) -
460{ -
461 float vx = vector.x(); -
462 float vy = vector.y(); -
463 float vz = vector.z(); -
464 if (flagBits == Identity) {
evaluated: flagBits == Identity
TRUEFALSE
yes
Evaluation Count:5777
yes
Evaluation Count:5773
5773-5777
465 m[3][0] = vx; -
466 m[3][1] = vy; -
467 m[3][2] = vz; -
468 } else if (flagBits == Translation) {
evaluated: flagBits == Translation
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:5772
executed: }
Execution Count:5777
1-5777
469 m[3][0] += vx; -
470 m[3][1] += vy; -
471 m[3][2] += vz; -
472 } else if (flagBits == Scale) {
evaluated: flagBits == Scale
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:5771
executed: }
Execution Count:1
1-5771
473 m[3][0] = m[0][0] * vx; -
474 m[3][1] = m[1][1] * vy; -
475 m[3][2] = m[2][2] * vz; -
476 } else if (flagBits == (Translation | Scale)) {
evaluated: flagBits == (Translation | Scale)
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:5763
executed: }
Execution Count:1
1-5763
477 m[3][0] += m[0][0] * vx; -
478 m[3][1] += m[1][1] * vy; -
479 m[3][2] += m[2][2] * vz; -
480 } else if (flagBits < Rotation) {
evaluated: flagBits < Rotation
TRUEFALSE
yes
Evaluation Count:723
yes
Evaluation Count:5040
executed: }
Execution Count:8
8-5040
481 m[3][0] += m[0][0] * vx + m[1][0] * vy; -
482 m[3][1] += m[0][1] * vx + m[1][1] * vy; -
483 m[3][2] += m[2][2] * vz; -
484 } else {
executed: }
Execution Count:723
723
485 m[3][0] += m[0][0] * vx + m[1][0] * vy + m[2][0] * vz; -
486 m[3][1] += m[0][1] * vx + m[1][1] * vy + m[2][1] * vz; -
487 m[3][2] += m[0][2] * vx + m[1][2] * vy + m[2][2] * vz; -
488 m[3][3] += m[0][3] * vx + m[1][3] * vy + m[2][3] * vz; -
489 }
executed: }
Execution Count:5040
5040
490 flagBits |= Translation; -
491}
executed: }
Execution Count:11550
11550
492void QMatrix4x4::translate(float x, float y) -
493{ -
494 if (flagBits == Identity) {
evaluated: flagBits == Identity
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:2
2-6
495 m[3][0] = x; -
496 m[3][1] = y; -
497 } else if (flagBits == Translation) {
partially evaluated: flagBits == Translation
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
executed: }
Execution Count:6
0-6
498 m[3][0] += x; -
499 m[3][1] += y; -
500 } else if (flagBits == Scale) {
partially evaluated: flagBits == Scale
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never executed: }
0-2
501 m[3][0] = m[0][0] * x; -
502 m[3][1] = m[1][1] * y; -
503 } else if (flagBits == (Translation | Scale)) {
partially evaluated: flagBits == (Translation | Scale)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never executed: }
0-2
504 m[3][0] += m[0][0] * x; -
505 m[3][1] += m[1][1] * y; -
506 } else if (flagBits < Rotation) {
partially evaluated: flagBits < Rotation
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never executed: }
0-2
507 m[3][0] += m[0][0] * x + m[1][0] * y; -
508 m[3][1] += m[0][1] * x + m[1][1] * y; -
509 } else {
never executed: }
0
510 m[3][0] += m[0][0] * x + m[1][0] * y; -
511 m[3][1] += m[0][1] * x + m[1][1] * y; -
512 m[3][2] += m[0][2] * x + m[1][2] * y; -
513 m[3][3] += m[0][3] * x + m[1][3] * y; -
514 }
executed: }
Execution Count:2
2
515 flagBits |= Translation; -
516}
executed: }
Execution Count:8
8
517void QMatrix4x4::translate(float x, float y, float z) -
518{ -
519 if (flagBits == Identity) {
evaluated: flagBits == Identity
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:9
9-11
520 m[3][0] = x; -
521 m[3][1] = y; -
522 m[3][2] = z; -
523 } else if (flagBits == Translation) {
evaluated: flagBits == Translation
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:8
executed: }
Execution Count:11
1-11
524 m[3][0] += x; -
525 m[3][1] += y; -
526 m[3][2] += z; -
527 } else if (flagBits == Scale) {
evaluated: flagBits == Scale
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:7
executed: }
Execution Count:1
1-7
528 m[3][0] = m[0][0] * x; -
529 m[3][1] = m[1][1] * y; -
530 m[3][2] = m[2][2] * z; -
531 } else if (flagBits == (Translation | Scale)) {
evaluated: flagBits == (Translation | Scale)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:6
executed: }
Execution Count:1
1-6
532 m[3][0] += m[0][0] * x; -
533 m[3][1] += m[1][1] * y; -
534 m[3][2] += m[2][2] * z; -
535 } else if (flagBits < Rotation) {
evaluated: flagBits < Rotation
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:5
executed: }
Execution Count:1
1-5
536 m[3][0] += m[0][0] * x + m[1][0] * y; -
537 m[3][1] += m[0][1] * x + m[1][1] * y; -
538 m[3][2] += m[2][2] * z; -
539 } else {
executed: }
Execution Count:1
1
540 m[3][0] += m[0][0] * x + m[1][0] * y + m[2][0] * z; -
541 m[3][1] += m[0][1] * x + m[1][1] * y + m[2][1] * z; -
542 m[3][2] += m[0][2] * x + m[1][2] * y + m[2][2] * z; -
543 m[3][3] += m[0][3] * x + m[1][3] * y + m[2][3] * z; -
544 }
executed: }
Execution Count:5
5
545 flagBits |= Translation; -
546}
executed: }
Execution Count:20
20
547void QMatrix4x4::rotate(float angle, const QVector3D& vector) -
548{ -
549 rotate(angle, vector.x(), vector.y(), vector.z()); -
550}
executed: }
Execution Count:1814
1814
551void QMatrix4x4::rotate(float angle, float x, float y, float z) -
552{ -
553 if (angle == 0.0f)
evaluated: angle == 0.0f
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:1831
8-1831
554 return;
executed: return;
Execution Count:8
8
555 float c, s; -
556 if (angle == 90.0f || angle == -270.0f) {
evaluated: angle == 90.0f
TRUEFALSE
yes
Evaluation Count:27
yes
Evaluation Count:1804
partially evaluated: angle == -270.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1804
0-1804
557 s = 1.0f; -
558 c = 0.0f; -
559 } else if (angle == -90.0f || angle == 270.0f) {
partially evaluated: angle == -90.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1804
evaluated: angle == 270.0f
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:1799
executed: }
Execution Count:27
0-1804
560 s = -1.0f; -
561 c = 0.0f; -
562 } else if (angle == 180.0f || angle == -180.0f) {
evaluated: angle == 180.0f
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:1794
partially evaluated: angle == -180.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1794
executed: }
Execution Count:5
0-1794
563 s = 0.0f; -
564 c = -1.0f; -
565 } else {
executed: }
Execution Count:5
5
566 float a = angle * 3.14159265358979323846 / 180.0f; -
567 c = cosf(a); -
568 s = sinf(a); -
569 }
executed: }
Execution Count:1794
1794
570 if (x == 0.0f) {
evaluated: x == 0.0f
TRUEFALSE
yes
Evaluation Count:20
yes
Evaluation Count:1811
20-1811
571 if (y == 0.0f) {
evaluated: y == 0.0f
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:7
7-13
572 if (z != 0.0f) {
evaluated: z != 0.0f
TRUEFALSE
yes
Evaluation Count:10
yes
Evaluation Count:3
3-10
573 -
574 if (z < 0)
evaluated: z < 0
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:7
3-7
575 s = -s;
executed: s = -s;
Execution Count:3
3
576 float tmp; -
577 m[0][0] = (tmp = m[0][0]) * c + m[1][0] * s; -
578 m[1][0] = m[1][0] * c - tmp * s; -
579 m[0][1] = (tmp = m[0][1]) * c + m[1][1] * s; -
580 m[1][1] = m[1][1] * c - tmp * s; -
581 m[0][2] = (tmp = m[0][2]) * c + m[1][2] * s; -
582 m[1][2] = m[1][2] * c - tmp * s; -
583 m[0][3] = (tmp = m[0][3]) * c + m[1][3] * s; -
584 m[1][3] = m[1][3] * c - tmp * s; -
585 -
586 flagBits |= Rotation2D; -
587 return;
executed: return;
Execution Count:10
10
588 } -
589 } else if (z == 0.0f) {
partially evaluated: z == 0.0f
TRUEFALSE
yes
Evaluation Count:7
no
Evaluation Count:0
executed: }
Execution Count:3
0-7
590 -
591 if (y < 0)
evaluated: y < 0
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:4
3-4
592 s = -s;
executed: s = -s;
Execution Count:3
3
593 float tmp; -
594 m[2][0] = (tmp = m[2][0]) * c + m[0][0] * s; -
595 m[0][0] = m[0][0] * c - tmp * s; -
596 m[2][1] = (tmp = m[2][1]) * c + m[0][1] * s; -
597 m[0][1] = m[0][1] * c - tmp * s; -
598 m[2][2] = (tmp = m[2][2]) * c + m[0][2] * s; -
599 m[0][2] = m[0][2] * c - tmp * s; -
600 m[2][3] = (tmp = m[2][3]) * c + m[0][3] * s; -
601 m[0][3] = m[0][3] * c - tmp * s; -
602 -
603 flagBits |= Rotation; -
604 return;
executed: return;
Execution Count:7
7
605 } -
606 } else if (y == 0.0f && z == 0.0f) {
evaluated: y == 0.0f
TRUEFALSE
yes
Evaluation Count:368
yes
Evaluation Count:1443
evaluated: z == 0.0f
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:360
8-1443
607 -
608 if (x < 0)
evaluated: x < 0
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:5
3-5
609 s = -s;
executed: s = -s;
Execution Count:3
3
610 float tmp; -
611 m[1][0] = (tmp = m[1][0]) * c + m[2][0] * s; -
612 m[2][0] = m[2][0] * c - tmp * s; -
613 m[1][1] = (tmp = m[1][1]) * c + m[2][1] * s; -
614 m[2][1] = m[2][1] * c - tmp * s; -
615 m[1][2] = (tmp = m[1][2]) * c + m[2][2] * s; -
616 m[2][2] = m[2][2] * c - tmp * s; -
617 m[1][3] = (tmp = m[1][3]) * c + m[2][3] * s; -
618 m[2][3] = m[2][3] * c - tmp * s; -
619 -
620 flagBits |= Rotation; -
621 return;
executed: return;
Execution Count:8
8
622 } -
623 -
624 double len = double(x) * double(x) + -
625 double(y) * double(y) + -
626 double(z) * double(z); -
627 if (!qFuzzyCompare(len, 1.0) && !qFuzzyIsNull(len)) {
partially evaluated: !qFuzzyCompare(len, 1.0)
TRUEFALSE
yes
Evaluation Count:1806
no
Evaluation Count:0
evaluated: !qFuzzyIsNull(len)
TRUEFALSE
yes
Evaluation Count:1803
yes
Evaluation Count:3
0-1806
628 len = sqrt(len); -
629 x = float(double(x) / len); -
630 y = float(double(y) / len); -
631 z = float(double(z) / len); -
632 }
executed: }
Execution Count:1803
1803
633 float ic = 1.0f - c; -
634 QMatrix4x4 rot(1); -
635 rot.m[0][0] = x * x * ic + c; -
636 rot.m[1][0] = x * y * ic - z * s; -
637 rot.m[2][0] = x * z * ic + y * s; -
638 rot.m[3][0] = 0.0f; -
639 rot.m[0][1] = y * x * ic + z * s; -
640 rot.m[1][1] = y * y * ic + c; -
641 rot.m[2][1] = y * z * ic - x * s; -
642 rot.m[3][1] = 0.0f; -
643 rot.m[0][2] = x * z * ic - y * s; -
644 rot.m[1][2] = y * z * ic + x * s; -
645 rot.m[2][2] = z * z * ic + c; -
646 rot.m[3][2] = 0.0f; -
647 rot.m[0][3] = 0.0f; -
648 rot.m[1][3] = 0.0f; -
649 rot.m[2][3] = 0.0f; -
650 rot.m[3][3] = 1.0f; -
651 rot.flagBits = Rotation; -
652 *this *= rot; -
653}
executed: }
Execution Count:1806
1806
654 -
655 -
656 -
657 -
658void QMatrix4x4::projectedRotate(float angle, float x, float y, float z) -
659{ -
660 -
661 -
662 if (angle == 0.0f)
partially evaluated: angle == 0.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5763
0-5763
663 return;
never executed: return;
0
664 float c, s; -
665 if (angle == 90.0f || angle == -270.0f) {
evaluated: angle == 90.0f
TRUEFALSE
yes
Evaluation Count:18
yes
Evaluation Count:5745
partially evaluated: angle == -270.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5745
0-5745
666 s = 1.0f; -
667 c = 0.0f; -
668 } else if (angle == -90.0f || angle == 270.0f) {
executed: }
Execution Count:18
partially evaluated: angle == -90.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5745
evaluated: angle == 270.0f
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:5729
0-5745
669 s = -1.0f; -
670 c = 0.0f; -
671 } else if (angle == 180.0f || angle == -180.0f) {
executed: }
Execution Count:16
evaluated: angle == 180.0f
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:5713
partially evaluated: angle == -180.0f
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5713
0-5713
672 s = 0.0f; -
673 c = -1.0f; -
674 } else {
executed: }
Execution Count:16
16
675 float a = angle * 3.14159265358979323846 / 180.0f; -
676 c = cosf(a); -
677 s = sinf(a); -
678 }
executed: }
Execution Count:5713
5713
679 if (x == 0.0f) {
evaluated: x == 0.0f
TRUEFALSE
yes
Evaluation Count:1443
yes
Evaluation Count:4320
1443-4320
680 if (y == 0.0f) {
evaluated: y == 0.0f
TRUEFALSE
yes
Evaluation Count:723
yes
Evaluation Count:720
720-723
681 if (z != 0.0f) {
partially evaluated: z != 0.0f
TRUEFALSE
yes
Evaluation Count:723
no
Evaluation Count:0
0-723
682 -
683 if (z < 0)
partially evaluated: z < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:723
0-723
684 s = -s;
never executed: s = -s;
0
685 float tmp; -
686 m[0][0] = (tmp = m[0][0]) * c + m[1][0] * s; -
687 m[1][0] = m[1][0] * c - tmp * s; -
688 m[0][1] = (tmp = m[0][1]) * c + m[1][1] * s; -
689 m[1][1] = m[1][1] * c - tmp * s; -
690 m[0][2] = (tmp = m[0][2]) * c + m[1][2] * s; -
691 m[1][2] = m[1][2] * c - tmp * s; -
692 m[0][3] = (tmp = m[0][3]) * c + m[1][3] * s; -
693 m[1][3] = m[1][3] * c - tmp * s; -
694 -
695 flagBits |= Rotation2D; -
696 return;
executed: return;
Execution Count:723
723
697 } -
698 } else if (z == 0.0f) {
never executed: }
partially evaluated: z == 0.0f
TRUEFALSE
yes
Evaluation Count:720
no
Evaluation Count:0
0-720
699 -
700 if (y < 0)
partially evaluated: y < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:720
0-720
701 s = -s;
never executed: s = -s;
0
702 m[0][0] = m[0][0] * c + m[3][0] * s * inv_dist_to_plane; -
703 m[0][1] = m[0][1] * c + m[3][1] * s * inv_dist_to_plane; -
704 m[0][2] = m[0][2] * c + m[3][2] * s * inv_dist_to_plane; -
705 m[0][3] = m[0][3] * c + m[3][3] * s * inv_dist_to_plane; -
706 flagBits = General; -
707 return;
executed: return;
Execution Count:720
720
708 } -
709 } else if (y == 0.0f && z == 0.0f) {
evaluated: y == 0.0f
TRUEFALSE
yes
Evaluation Count:1440
yes
Evaluation Count:2880
evaluated: z == 0.0f
TRUEFALSE
yes
Evaluation Count:720
yes
Evaluation Count:720
720-2880
710 -
711 if (x < 0)
partially evaluated: x < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:720
0-720
712 s = -s;
never executed: s = -s;
0
713 m[1][0] = m[1][0] * c - m[3][0] * s * inv_dist_to_plane; -
714 m[1][1] = m[1][1] * c - m[3][1] * s * inv_dist_to_plane; -
715 m[1][2] = m[1][2] * c - m[3][2] * s * inv_dist_to_plane; -
716 m[1][3] = m[1][3] * c - m[3][3] * s * inv_dist_to_plane; -
717 flagBits = General; -
718 return;
executed: return;
Execution Count:720
720
719 } -
720 double len = double(x) * double(x) + -
721 double(y) * double(y) + -
722 double(z) * double(z); -
723 if (!qFuzzyCompare(len, 1.0) && !qFuzzyIsNull(len)) {
partially evaluated: !qFuzzyCompare(len, 1.0)
TRUEFALSE
yes
Evaluation Count:3600
no
Evaluation Count:0
partially evaluated: !qFuzzyIsNull(len)
TRUEFALSE
yes
Evaluation Count:3600
no
Evaluation Count:0
0-3600
724 len = sqrt(len); -
725 x = float(double(x) / len); -
726 y = float(double(y) / len); -
727 z = float(double(z) / len); -
728 }
executed: }
Execution Count:3600
3600
729 float ic = 1.0f - c; -
730 QMatrix4x4 rot(1); -
731 rot.m[0][0] = x * x * ic + c; -
732 rot.m[1][0] = x * y * ic - z * s; -
733 rot.m[2][0] = 0.0f; -
734 rot.m[3][0] = 0.0f; -
735 rot.m[0][1] = y * x * ic + z * s; -
736 rot.m[1][1] = y * y * ic + c; -
737 rot.m[2][1] = 0.0f; -
738 rot.m[3][1] = 0.0f; -
739 rot.m[0][2] = 0.0f; -
740 rot.m[1][2] = 0.0f; -
741 rot.m[2][2] = 1.0f; -
742 rot.m[3][2] = 0.0f; -
743 rot.m[0][3] = (x * z * ic - y * s) * -inv_dist_to_plane; -
744 rot.m[1][3] = (y * z * ic + x * s) * -inv_dist_to_plane; -
745 rot.m[2][3] = 0.0f; -
746 rot.m[3][3] = 1.0f; -
747 rot.flagBits = General; -
748 *this *= rot; -
749}
executed: }
Execution Count:3600
3600
750void QMatrix4x4::rotate(const QQuaternion& quaternion) -
751{ -
752 -
753 -
754 QMatrix4x4 m(1); -
755 float xx = quaternion.x() * quaternion.x(); -
756 float xy = quaternion.x() * quaternion.y(); -
757 float xz = quaternion.x() * quaternion.z(); -
758 float xw = quaternion.x() * quaternion.scalar(); -
759 float yy = quaternion.y() * quaternion.y(); -
760 float yz = quaternion.y() * quaternion.z(); -
761 float yw = quaternion.y() * quaternion.scalar(); -
762 float zz = quaternion.z() * quaternion.z(); -
763 float zw = quaternion.z() * quaternion.scalar(); -
764 m.m[0][0] = 1.0f - 2 * (yy + zz); -
765 m.m[1][0] = 2 * (xy - zw); -
766 m.m[2][0] = 2 * (xz + yw); -
767 m.m[3][0] = 0.0f; -
768 m.m[0][1] = 2 * (xy + zw); -
769 m.m[1][1] = 1.0f - 2 * (xx + zz); -
770 m.m[2][1] = 2 * (yz - xw); -
771 m.m[3][1] = 0.0f; -
772 m.m[0][2] = 2 * (xz - yw); -
773 m.m[1][2] = 2 * (yz + xw); -
774 m.m[2][2] = 1.0f - 2 * (xx + yy); -
775 m.m[3][2] = 0.0f; -
776 m.m[0][3] = 0.0f; -
777 m.m[1][3] = 0.0f; -
778 m.m[2][3] = 0.0f; -
779 m.m[3][3] = 1.0f; -
780 m.flagBits = Rotation; -
781 *this *= m; -
782}
executed: }
Execution Count:8
8
783void QMatrix4x4::ortho(const QRect& rect) -
784{ -
785 -
786 -
787 -
788 -
789 ortho(rect.x(), rect.x() + rect.width(), rect.y() + rect.height(), rect.y(), -1.0f, 1.0f); -
790}
executed: }
Execution Count:1
1
791void QMatrix4x4::ortho(const QRectF& rect) -
792{ -
793 ortho(rect.left(), rect.right(), rect.bottom(), rect.top(), -1.0f, 1.0f); -
794}
executed: }
Execution Count:1
1
795void QMatrix4x4::ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane) -
796{ -
797 -
798 if (left == right || bottom == top || nearPlane == farPlane)
evaluated: left == right
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:6
evaluated: bottom == top
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:5
evaluated: nearPlane == farPlane
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:4
1-6
799 return;
executed: return;
Execution Count:3
3
800 -
801 -
802 float width = right - left; -
803 float invheight = top - bottom; -
804 float clip = farPlane - nearPlane; -
805 QMatrix4x4 m(1); -
806 m.m[0][0] = 2.0f / width; -
807 m.m[1][0] = 0.0f; -
808 m.m[2][0] = 0.0f; -
809 m.m[3][0] = -(left + right) / width; -
810 m.m[0][1] = 0.0f; -
811 m.m[1][1] = 2.0f / invheight; -
812 m.m[2][1] = 0.0f; -
813 m.m[3][1] = -(top + bottom) / invheight; -
814 m.m[0][2] = 0.0f; -
815 m.m[1][2] = 0.0f; -
816 m.m[2][2] = -2.0f / clip; -
817 m.m[3][2] = -(nearPlane + farPlane) / clip; -
818 m.m[0][3] = 0.0f; -
819 m.m[1][3] = 0.0f; -
820 m.m[2][3] = 0.0f; -
821 m.m[3][3] = 1.0f; -
822 m.flagBits = Translation | Scale; -
823 -
824 -
825 *this *= m; -
826}
executed: }
Execution Count:4
4
827void QMatrix4x4::frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane) -
828{ -
829 -
830 if (left == right || bottom == top || nearPlane == farPlane)
evaluated: left == right
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3
evaluated: bottom == top
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
evaluated: nearPlane == farPlane
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1-3
831 return;
executed: return;
Execution Count:3
3
832 -
833 -
834 QMatrix4x4 m(1); -
835 float width = right - left; -
836 float invheight = top - bottom; -
837 float clip = farPlane - nearPlane; -
838 m.m[0][0] = 2.0f * nearPlane / width; -
839 m.m[1][0] = 0.0f; -
840 m.m[2][0] = (left + right) / width; -
841 m.m[3][0] = 0.0f; -
842 m.m[0][1] = 0.0f; -
843 m.m[1][1] = 2.0f * nearPlane / invheight; -
844 m.m[2][1] = (top + bottom) / invheight; -
845 m.m[3][1] = 0.0f; -
846 m.m[0][2] = 0.0f; -
847 m.m[1][2] = 0.0f; -
848 m.m[2][2] = -(nearPlane + farPlane) / clip; -
849 m.m[3][2] = -2.0f * nearPlane * farPlane / clip; -
850 m.m[0][3] = 0.0f; -
851 m.m[1][3] = 0.0f; -
852 m.m[2][3] = -1.0f; -
853 m.m[3][3] = 0.0f; -
854 m.flagBits = General; -
855 -
856 -
857 *this *= m; -
858}
executed: }
Execution Count:1
1
859void QMatrix4x4::perspective(float verticalAngle, float aspectRatio, float nearPlane, float farPlane) -
860{ -
861 -
862 if (nearPlane == farPlane || aspectRatio == 0.0f)
evaluated: nearPlane == farPlane
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3
evaluated: aspectRatio == 0.0f
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
1-3
863 return;
executed: return;
Execution Count:2
2
864 -
865 -
866 QMatrix4x4 m(1); -
867 float radians = (verticalAngle / 2.0f) * 3.14159265358979323846 / 180.0f; -
868 float sine = sinf(radians); -
869 if (sine == 0.0f)
evaluated: sine == 0.0f
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1
870 return;
executed: return;
Execution Count:1
1
871 float cotan = cosf(radians) / sine; -
872 float clip = farPlane - nearPlane; -
873 m.m[0][0] = cotan / aspectRatio; -
874 m.m[1][0] = 0.0f; -
875 m.m[2][0] = 0.0f; -
876 m.m[3][0] = 0.0f; -
877 m.m[0][1] = 0.0f; -
878 m.m[1][1] = cotan; -
879 m.m[2][1] = 0.0f; -
880 m.m[3][1] = 0.0f; -
881 m.m[0][2] = 0.0f; -
882 m.m[1][2] = 0.0f; -
883 m.m[2][2] = -(nearPlane + farPlane) / clip; -
884 m.m[3][2] = -(2.0f * nearPlane * farPlane) / clip; -
885 m.m[0][3] = 0.0f; -
886 m.m[1][3] = 0.0f; -
887 m.m[2][3] = -1.0f; -
888 m.m[3][3] = 0.0f; -
889 m.flagBits = General; -
890 -
891 -
892 *this *= m; -
893}
executed: }
Execution Count:1
1
894void QMatrix4x4::lookAt(const QVector3D& eye, const QVector3D& center, const QVector3D& up) -
895{ -
896 QVector3D forward = (center - eye).normalized(); -
897 QVector3D side = QVector3D::crossProduct(forward, up).normalized(); -
898 QVector3D upVector = QVector3D::crossProduct(side, forward); -
899 -
900 QMatrix4x4 m(1); -
901 m.m[0][0] = side.x(); -
902 m.m[1][0] = side.y(); -
903 m.m[2][0] = side.z(); -
904 m.m[3][0] = 0.0f; -
905 m.m[0][1] = upVector.x(); -
906 m.m[1][1] = upVector.y(); -
907 m.m[2][1] = upVector.z(); -
908 m.m[3][1] = 0.0f; -
909 m.m[0][2] = -forward.x(); -
910 m.m[1][2] = -forward.y(); -
911 m.m[2][2] = -forward.z(); -
912 m.m[3][2] = 0.0f; -
913 m.m[0][3] = 0.0f; -
914 m.m[1][3] = 0.0f; -
915 m.m[2][3] = 0.0f; -
916 m.m[3][3] = 1.0f; -
917 m.flagBits = Rotation; -
918 -
919 *this *= m; -
920 translate(-eye); -
921}
never executed: }
0
922void QMatrix4x4::flipCoordinates() -
923{ -
924 -
925 -
926 -
927 if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:1
1-3
928 -
929 m[1][1] = -m[1][1]; -
930 m[2][2] = -m[2][2]; -
931 } else {
executed: }
Execution Count:3
3
932 m[1][0] = -m[1][0]; -
933 m[1][1] = -m[1][1]; -
934 m[1][2] = -m[1][2]; -
935 m[1][3] = -m[1][3]; -
936 m[2][0] = -m[2][0]; -
937 m[2][1] = -m[2][1]; -
938 m[2][2] = -m[2][2]; -
939 m[2][3] = -m[2][3]; -
940 }
executed: }
Execution Count:1
1
941 flagBits |= Scale; -
942}
executed: }
Execution Count:4
4
943 -
944 -
945 -
946 -
947 -
948void QMatrix4x4::copyDataTo(float *values) const -
949{ -
950 for (int row = 0; row < 4; ++row)
evaluated: row < 4
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:1
1-4
951 for (int col = 0; col < 4; ++col)
evaluated: col < 4
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:4
4-16
952 values[row * 4 + col] = float(m[col][row]);
executed: values[row * 4 + col] = float(m[col][row]);
Execution Count:16
16
953}
executed: }
Execution Count:1
1
954QMatrix QMatrix4x4::toAffine() const -
955{ -
956 return QMatrix(m[0][0], m[0][1], 3
957 m[1][0], m[1][1], 3
958 m[3][0], m[3][1]);
executed: return QMatrix(m[0][0], m[0][1], m[1][0], m[1][1], m[3][0], m[3][1]);
Execution Count:3
3
959} -
960QTransform QMatrix4x4::toTransform() const -
961{ -
962 return QTransform(m[0][0], m[0][1], m[0][3], 9039
963 m[1][0], m[1][1], m[1][3], 9039
964 m[3][0], m[3][1], m[3][3]);
executed: return QTransform(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]);
Execution Count:9039
9039
965} -
966QTransform QMatrix4x4::toTransform(float distanceToPlane) const -
967{ -
968 if (distanceToPlane == 1024.0f) {
partially evaluated: distanceToPlane == 1024.0f
TRUEFALSE
yes
Evaluation Count:1805
no
Evaluation Count:0
0-1805
969 -
970 return QTransform(m[0][0], m[0][1], m[0][3] - m[0][2] * inv_dist_to_plane, 1805
971 m[1][0], m[1][1], m[1][3] - m[1][2] * inv_dist_to_plane, 1805
972 m[3][0], m[3][1], m[3][3] - m[3][2] * inv_dist_to_plane);
executed: return QTransform(m[0][0], m[0][1], m[0][3] - m[0][2] * inv_dist_to_plane, m[1][0], m[1][1], m[1][3] - m[1][2] * inv_dist_to_plane, m[3][0], m[3][1], m[3][3] - m[3][2] * inv_dist_to_plane);
Execution Count:1805
1805
973 } else if (distanceToPlane != 0.0f) {
never evaluated: distanceToPlane != 0.0f
0
974 -
975 -
976 -
977 -
978 -
979 -
980 -
981 float d = 1.0f / distanceToPlane; -
982 return QTransform(m[0][0], m[0][1], m[0][3] - m[0][2] * d, 0
983 m[1][0], m[1][1], m[1][3] - m[1][2] * d, 0
984 m[3][0], m[3][1], m[3][3] - m[3][2] * d);
never executed: return QTransform(m[0][0], m[0][1], m[0][3] - m[0][2] * d, m[1][0], m[1][1], m[1][3] - m[1][2] * d, m[3][0], m[3][1], m[3][3] - m[3][2] * d);
0
985 } else { -
986 -
987 return QTransform(m[0][0], m[0][1], m[0][3], 0
988 m[1][0], m[1][1], m[1][3], 0
989 m[3][0], m[3][1], m[3][3]);
never executed: return QTransform(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]);
0
990 } -
991} -
992QRect QMatrix4x4::mapRect(const QRect& rect) const -
993{ -
994 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:6
4-6
995 -
996 return QRect(qRound(rect.x() + m[3][0]), 4
997 qRound(rect.y() + m[3][1]), 4
998 rect.width(), rect.height());
executed: return QRect(qRound(rect.x() + m[3][0]), qRound(rect.y() + m[3][1]), rect.width(), rect.height());
Execution Count:4
4
999 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:2
2-4
1000 -
1001 float x = rect.x() * m[0][0] + m[3][0]; -
1002 float y = rect.y() * m[1][1] + m[3][1]; -
1003 float w = rect.width() * m[0][0]; -
1004 float h = rect.height() * m[1][1]; -
1005 if (w < 0) {
evaluated: w < 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:2
2
1006 w = -w; -
1007 x -= w; -
1008 }
executed: }
Execution Count:2
2
1009 if (h < 0) {
partially evaluated: h < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:4
0-4
1010 h = -h; -
1011 y -= h; -
1012 }
never executed: }
0
1013 return QRect(qRound(x), qRound(y), qRound(w), qRound(h));
executed: return QRect(qRound(x), qRound(y), qRound(w), qRound(h));
Execution Count:4
4
1014 } -
1015 -
1016 QPoint tl = map(rect.topLeft()); -
1017 QPoint tr = map(QPoint(rect.x() + rect.width(), rect.y())); -
1018 QPoint bl = map(QPoint(rect.x(), rect.y() + rect.height())); -
1019 QPoint br = map(QPoint(rect.x() + rect.width(), -
1020 rect.y() + rect.height())); -
1021 -
1022 int xmin = qMin(qMin(tl.x(), tr.x()), qMin(bl.x(), br.x())); -
1023 int xmax = qMax(qMax(tl.x(), tr.x()), qMax(bl.x(), br.x())); -
1024 int ymin = qMin(qMin(tl.y(), tr.y()), qMin(bl.y(), br.y())); -
1025 int ymax = qMax(qMax(tl.y(), tr.y()), qMax(bl.y(), br.y())); -
1026 -
1027 return QRect(xmin, ymin, xmax - xmin, ymax - ymin);
executed: return QRect(xmin, ymin, xmax - xmin, ymax - ymin);
Execution Count:2
2
1028} -
1029QRectF QMatrix4x4::mapRect(const QRectF& rect) const -
1030{ -
1031 if (flagBits < Scale) {
evaluated: flagBits < Scale
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:6
4-6
1032 -
1033 return rect.translated(m[3][0], m[3][1]);
executed: return rect.translated(m[3][0], m[3][1]);
Execution Count:4
4
1034 } else if (flagBits < Rotation2D) {
evaluated: flagBits < Rotation2D
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:2
2-4
1035 -
1036 float x = rect.x() * m[0][0] + m[3][0]; -
1037 float y = rect.y() * m[1][1] + m[3][1]; -
1038 float w = rect.width() * m[0][0]; -
1039 float h = rect.height() * m[1][1]; -
1040 if (w < 0) {
evaluated: w < 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:2
2
1041 w = -w; -
1042 x -= w; -
1043 }
executed: }
Execution Count:2
2
1044 if (h < 0) {
partially evaluated: h < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:4
0-4
1045 h = -h; -
1046 y -= h; -
1047 }
never executed: }
0
1048 return QRectF(x, y, w, h);
executed: return QRectF(x, y, w, h);
Execution Count:4
4
1049 } -
1050 -
1051 QPointF tl = map(rect.topLeft()); QPointF tr = map(rect.topRight()); -
1052 QPointF bl = map(rect.bottomLeft()); QPointF br = map(rect.bottomRight()); -
1053 -
1054 float xmin = qMin(qMin(tl.x(), tr.x()), qMin(bl.x(), br.x())); -
1055 float xmax = qMax(qMax(tl.x(), tr.x()), qMax(bl.x(), br.x())); -
1056 float ymin = qMin(qMin(tl.y(), tr.y()), qMin(bl.y(), br.y())); -
1057 float ymax = qMax(qMax(tl.y(), tr.y()), qMax(bl.y(), br.y())); -
1058 -
1059 return QRectF(QPointF(xmin, ymin), QPointF(xmax, ymax));
executed: return QRectF(QPointF(xmin, ymin), QPointF(xmax, ymax));
Execution Count:2
2
1060} -
1061QMatrix4x4 QMatrix4x4::orthonormalInverse() const -
1062{ -
1063 QMatrix4x4 result(1); -
1064 -
1065 result.m[0][0] = m[0][0]; -
1066 result.m[1][0] = m[0][1]; -
1067 result.m[2][0] = m[0][2]; -
1068 -
1069 result.m[0][1] = m[1][0]; -
1070 result.m[1][1] = m[1][1]; -
1071 result.m[2][1] = m[1][2]; -
1072 -
1073 result.m[0][2] = m[2][0]; -
1074 result.m[1][2] = m[2][1]; -
1075 result.m[2][2] = m[2][2]; -
1076 -
1077 result.m[0][3] = 0.0f; -
1078 result.m[1][3] = 0.0f; -
1079 result.m[2][3] = 0.0f; -
1080 -
1081 result.m[3][0] = -(result.m[0][0] * m[3][0] + result.m[1][0] * m[3][1] + result.m[2][0] * m[3][2]); -
1082 result.m[3][1] = -(result.m[0][1] * m[3][0] + result.m[1][1] * m[3][1] + result.m[2][1] * m[3][2]); -
1083 result.m[3][2] = -(result.m[0][2] * m[3][0] + result.m[1][2] * m[3][1] + result.m[2][2] * m[3][2]); -
1084 result.m[3][3] = 1.0f; -
1085 -
1086 result.flagBits = flagBits; -
1087 -
1088 return result;
executed: return result;
Execution Count:2
2
1089} -
1090void QMatrix4x4::optimize() -
1091{ -
1092 -
1093 flagBits = General; -
1094 if (m[0][3] != 0 || m[1][3] != 0 || m[2][3] != 0 || m[3][3] != 1)
evaluated: m[0][3] != 0
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:32
partially evaluated: m[1][3] != 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:32
partially evaluated: m[2][3] != 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:32
evaluated: m[3][3] != 1
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:29
0-32
1095 return;
executed: return;
Execution Count:8
8
1096 -
1097 flagBits &= ~Perspective; -
1098 -
1099 -
1100 if (m[3][0] == 0 && m[3][1] == 0 && m[3][2] == 0)
evaluated: m[3][0] == 0
TRUEFALSE
yes
Evaluation Count:15
yes
Evaluation Count:14
partially evaluated: m[3][1] == 0
TRUEFALSE
yes
Evaluation Count:15
no
Evaluation Count:0
partially evaluated: m[3][2] == 0
TRUEFALSE
yes
Evaluation Count:15
no
Evaluation Count:0
0-15
1101 flagBits &= ~Translation;
executed: flagBits &= ~Translation;
Execution Count:15
15
1102 -
1103 -
1104 if (!m[0][2] && !m[1][2] && !m[2][0] && !m[2][1]) {
evaluated: !m[0][2]
TRUEFALSE
yes
Evaluation Count:27
yes
Evaluation Count:2
evaluated: !m[1][2]
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:1
partially evaluated: !m[2][0]
TRUEFALSE
yes
Evaluation Count:26
no
Evaluation Count:0
partially evaluated: !m[2][1]
TRUEFALSE
yes
Evaluation Count:26
no
Evaluation Count:0
0-27
1105 flagBits &= ~Rotation; -
1106 -
1107 if (!m[0][1] && !m[1][0]) {
evaluated: !m[0][1]
TRUEFALSE
yes
Evaluation Count:21
yes
Evaluation Count:5
partially evaluated: !m[1][0]
TRUEFALSE
yes
Evaluation Count:21
no
Evaluation Count:0
0-21
1108 flagBits &= ~Rotation2D; -
1109 -
1110 if (m[0][0] == 1 && m[1][1] == 1 && m[2][2] == 1)
evaluated: m[0][0] == 1
TRUEFALSE
yes
Evaluation Count:10
yes
Evaluation Count:11
evaluated: m[1][1] == 1
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:1
partially evaluated: m[2][2] == 1
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
0-11
1111 flagBits &= ~Scale;
executed: flagBits &= ~Scale;
Execution Count:9
9
1112 } else {
executed: }
Execution Count:21
21
1113 -
1114 double mm[4][4]; -
1115 copyToDoubles(m, mm); -
1116 double det = matrixDet2(mm, 0, 1, 0, 1); -
1117 double lenX = mm[0][0] * mm[0][0] + mm[0][1] * mm[0][1]; -
1118 double lenY = mm[1][0] * mm[1][0] + mm[1][1] * mm[1][1]; -
1119 double lenZ = mm[2][2]; -
1120 if (qFuzzyCompare(det, 1.0) && qFuzzyCompare(lenX, 1.0)
evaluated: qFuzzyCompare(det, 1.0)
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:3
partially evaluated: qFuzzyCompare(lenX, 1.0)
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-3
1121 && qFuzzyCompare(lenY, 1.0) && qFuzzyCompare(lenZ, 1.0))
partially evaluated: qFuzzyCompare(lenY, 1.0)
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
partially evaluated: qFuzzyCompare(lenZ, 1.0)
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
1122 { -
1123 flagBits &= ~Scale; -
1124 }
executed: }
Execution Count:2
2
1125 }
executed: }
Execution Count:5
5
1126 } else { -
1127 -
1128 double mm[4][4]; -
1129 copyToDoubles(m, mm); -
1130 double det = matrixDet3(mm, 0, 1, 2, 0, 1, 2); -
1131 double lenX = mm[0][0] * mm[0][0] + mm[0][1] * mm[0][1] + mm[0][2] * mm[0][2]; -
1132 double lenY = mm[1][0] * mm[1][0] + mm[1][1] * mm[1][1] + mm[1][2] * mm[1][2]; -
1133 double lenZ = mm[2][0] * mm[2][0] + mm[2][1] * mm[2][1] + mm[2][2] * mm[2][2]; -
1134 if (qFuzzyCompare(det, 1.0) && qFuzzyCompare(lenX, 1.0)
evaluated: qFuzzyCompare(det, 1.0)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
partially evaluated: qFuzzyCompare(lenX, 1.0)
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-2
1135 && qFuzzyCompare(lenY, 1.0) && qFuzzyCompare(lenZ, 1.0))
partially evaluated: qFuzzyCompare(lenY, 1.0)
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
partially evaluated: qFuzzyCompare(lenZ, 1.0)
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
1136 { -
1137 flagBits &= ~Scale; -
1138 }
executed: }
Execution Count:1
1
1139 }
executed: }
Execution Count:3
3
1140} -
1141 -
1142 -
1143 -
1144 -
1145QMatrix4x4::operator QVariant() const -
1146{ -
1147 return QVariant(QVariant::Matrix4x4, this);
executed: return QVariant(QVariant::Matrix4x4, this);
Execution Count:1
1
1148} -
1149 -
1150 -
1151 -
1152QDebug operator<<(QDebug dbg, const QMatrix4x4 &m) -
1153{ -
1154 -
1155 QByteArray bits; -
1156 if (m.flagBits == QMatrix4x4::Identity) {
partially evaluated: m.flagBits == QMatrix4x4::Identity
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
1157 bits = "Identity"; -
1158 } else if (m.flagBits == QMatrix4x4::General) {
executed: }
Execution Count:1
never evaluated: m.flagBits == QMatrix4x4::General
0-1
1159 bits = "General"; -
1160 } else {
never executed: }
0
1161 if ((m.flagBits & QMatrix4x4::Translation) != 0)
never evaluated: (m.flagBits & QMatrix4x4::Translation) != 0
0
1162 bits += "Translation,";
never executed: bits += "Translation,";
0
1163 if ((m.flagBits & QMatrix4x4::Scale) != 0)
never evaluated: (m.flagBits & QMatrix4x4::Scale) != 0
0
1164 bits += "Scale,";
never executed: bits += "Scale,";
0
1165 if ((m.flagBits & QMatrix4x4::Rotation2D) != 0)
never evaluated: (m.flagBits & QMatrix4x4::Rotation2D) != 0
0
1166 bits += "Rotation2D,";
never executed: bits += "Rotation2D,";
0
1167 if ((m.flagBits & QMatrix4x4::Rotation) != 0)
never evaluated: (m.flagBits & QMatrix4x4::Rotation) != 0
0
1168 bits += "Rotation,";
never executed: bits += "Rotation,";
0
1169 if ((m.flagBits & QMatrix4x4::Perspective) != 0)
never evaluated: (m.flagBits & QMatrix4x4::Perspective) != 0
0
1170 bits += "Perspective,";
never executed: bits += "Perspective,";
0
1171 if (bits.size() > 0)
never evaluated: bits.size() > 0
0
1172 bits = bits.left(bits.size() - 1);
never executed: bits = bits.left(bits.size() - 1);
0
1173 }
never executed: }
0
1174 -
1175 -
1176 dbg.nospace() << "QMatrix4x4(type:" << bits.constData() << endl -
1177 << qSetFieldWidth(10) -
1178 << m(0, 0) << m(0, 1) << m(0, 2) << m(0, 3) << endl -
1179 << m(1, 0) << m(1, 1) << m(1, 2) << m(1, 3) << endl -
1180 << m(2, 0) << m(2, 1) << m(2, 2) << m(2, 3) << endl -
1181 << m(3, 0) << m(3, 1) << m(3, 2) << m(3, 3) << endl -
1182 << qSetFieldWidth(0) << ')'; -
1183 return dbg.space();
executed: return dbg.space();
Execution Count:1
1
1184} -
1185QDataStream &operator<<(QDataStream &stream, const QMatrix4x4 &matrix) -
1186{ -
1187 for (int row = 0; row < 4; ++row)
never evaluated: row < 4
0
1188 for (int col = 0; col < 4; ++col)
never evaluated: col < 4
0
1189 stream << matrix(row, col);
never executed: stream << matrix(row, col);
0
1190 return stream;
never executed: return stream;
0
1191} -
1192QDataStream &operator>>(QDataStream &stream, QMatrix4x4 &matrix) -
1193{ -
1194 float x; -
1195 for (int row = 0; row < 4; ++row) {
never evaluated: row < 4
0
1196 for (int col = 0; col < 4; ++col) {
never evaluated: col < 4
0
1197 stream >> x; -
1198 matrix(row, col) = x; -
1199 }
never executed: }
0
1200 }
never executed: }
0
1201 matrix.optimize(); -
1202 return stream;
never executed: return stream;
0
1203} -
1204 -
1205 -
1206 -
1207 -
1208 -
1209 -
1210 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial