| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/gui/math3d/qmatrix4x4.cpp | 
| Switch to Source code | Preprocessed file | 
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | static const float inv_dist_to_plane = 1.0f / 1024.0f; | - | ||||||||||||||||||||||||
| 5 | QMatrix4x4::QMatrix4x4(const float *values) | - | ||||||||||||||||||||||||
| 6 | { | - | ||||||||||||||||||||||||
| 7 |     for (int row = 0; row < 4
  | 0 | ||||||||||||||||||||||||
| 8 |         for (int col = 0; col < 4
  | 0 | ||||||||||||||||||||||||
| 9 |             m[col][row] = values[row * 4 + col]; never executed:  m[col][row] = values[row * 4 + col]; | 0 | ||||||||||||||||||||||||
| 10 | flagBits = General; | - | ||||||||||||||||||||||||
| 11 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 12 | QMatrix4x4::QMatrix4x4(const float *values, int cols, int rows) | - | ||||||||||||||||||||||||
| 13 | { | - | ||||||||||||||||||||||||
| 14 |     for (int col = 0; col < 4
  | 0 | ||||||||||||||||||||||||
| 15 |         for (int row = 0; row < 4
  | 0 | ||||||||||||||||||||||||
| 16 |             if (col < cols
 
  | 0 | ||||||||||||||||||||||||
| 17 |                 m[col][row] = values[col * rows + row]; never executed:  m[col][row] = values[col * rows + row]; | 0 | ||||||||||||||||||||||||
| 18 |             else if (col == row
  | 0 | ||||||||||||||||||||||||
| 19 |                 m[col][row] = 1.0f; never executed:  m[col][row] = 1.0f; | 0 | ||||||||||||||||||||||||
| 20 | else | - | ||||||||||||||||||||||||
| 21 |                 m[col][row] = 0.0f; never executed:  m[col][row] = 0.0f; | 0 | ||||||||||||||||||||||||
| 22 | } | - | ||||||||||||||||||||||||
| 23 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 24 | flagBits = General; | - | ||||||||||||||||||||||||
| 25 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 26 | QMatrix4x4::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 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 46 | QMatrix4x4::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 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 66 | static inline double matrixDet2(const double m[4][4], int col0, int col1, int row0, int row1) | - | ||||||||||||||||||||||||
| 67 | { | - | ||||||||||||||||||||||||
| 68 |     return never executed:   m[col0][row0] * m[col1][row1] - m[col0][row1] * m[col1][row0];return m[col0][row0] * m[col1][row1] - m[col0][row1] * m[col1][row0];never executed:  return m[col0][row0] * m[col1][row1] - m[col0][row1] * m[col1][row0]; | 0 | ||||||||||||||||||||||||
| 69 | } | - | ||||||||||||||||||||||||
| 70 | static 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 never executed:   m[col0][row0] * matrixDet2(m, col1, col2, row1, row2)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);never 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); | 0 | ||||||||||||||||||||||||
| 75 |             - m[col1][row0] * matrixDet2(m, col0, col2, row1, row2) never 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); | 0 | ||||||||||||||||||||||||
| 76 |             + m[col2][row0] * matrixDet2(m, col0, col1, row1, row2); never 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); | 0 | ||||||||||||||||||||||||
| 77 | } | - | ||||||||||||||||||||||||
| 78 | - | |||||||||||||||||||||||||
| 79 | - | |||||||||||||||||||||||||
| 80 | static 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 never executed:   det;return det;never executed:  return det; | 0 | ||||||||||||||||||||||||
| 88 | } | - | ||||||||||||||||||||||||
| 89 | - | |||||||||||||||||||||||||
| 90 | static inline void copyToDoubles(const float m[4][4], double mm[4][4]) | - | ||||||||||||||||||||||||
| 91 | { | - | ||||||||||||||||||||||||
| 92 |     for (int i = 0; i < 4
  | 0 | ||||||||||||||||||||||||
| 93 |         for (int j = 0; j < 4
  | 0 | ||||||||||||||||||||||||
| 94 |             mm[i][j] = double(m[i][j]); never executed:  mm[i][j] = double(m[i][j]); | 0 | ||||||||||||||||||||||||
| 95 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 96 | - | |||||||||||||||||||||||||
| 97 | - | |||||||||||||||||||||||||
| 98 | - | |||||||||||||||||||||||||
| 99 | - | |||||||||||||||||||||||||
| 100 | double QMatrix4x4::determinant() const | - | ||||||||||||||||||||||||
| 101 | { | - | ||||||||||||||||||||||||
| 102 |     if ((
 
  | 0 | ||||||||||||||||||||||||
| 103 |         return never executed:   1.0;return 1.0;never executed:  return 1.0; | 0 | ||||||||||||||||||||||||
| 104 | - | |||||||||||||||||||||||||
| 105 | double mm[4][4]; | - | ||||||||||||||||||||||||
| 106 | copyToDoubles(m, mm); | - | ||||||||||||||||||||||||
| 107 |     if (flagBits < Rotation2D
  | 0 | ||||||||||||||||||||||||
| 108 |         return never executed:   mm[0][0] * mm[1][1] * mm[2][2];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
  | 0 | ||||||||||||||||||||||||
| 110 |         return never executed:   matrixDet3(mm, 0, 1, 2, 0, 1, 2);return matrixDet3(mm, 0, 1, 2, 0, 1, 2);never executed:  return matrixDet3(mm, 0, 1, 2, 0, 1, 2); | 0 | ||||||||||||||||||||||||
| 111 |     return never executed:   matrixDet4(mm);return matrixDet4(mm);never executed:  return matrixDet4(mm); | 0 | ||||||||||||||||||||||||
| 112 | } | - | ||||||||||||||||||||||||
| 113 | QMatrix4x4 QMatrix4x4::inverted(bool *invertible) const | - | ||||||||||||||||||||||||
| 114 | { | - | ||||||||||||||||||||||||
| 115 | - | |||||||||||||||||||||||||
| 116 |     if (flagBits == Identity
  | 0 | ||||||||||||||||||||||||
| 117 |         if (invertible
  | 0 | ||||||||||||||||||||||||
| 118 |             * never executed:  invertible = true;*invertible = true;never executed:  *invertible = true; | 0 | ||||||||||||||||||||||||
| 119 |         return never executed:   QMatrix4x4();return QMatrix4x4();never executed:  return QMatrix4x4(); | 0 | ||||||||||||||||||||||||
| 120 |     } else if (flagBits == Translation
  | 0 | ||||||||||||||||||||||||
| 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
  | 0 | ||||||||||||||||||||||||
| 127 |             * never executed:  invertible = true;*invertible = true;never executed:  *invertible = true; | 0 | ||||||||||||||||||||||||
| 128 |         return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 129 |     } else if (flagBits < Rotation2D
  | 0 | ||||||||||||||||||||||||
| 130 | - | |||||||||||||||||||||||||
| 131 |         if (m[0][0] == 0
 
 
  | 0 | ||||||||||||||||||||||||
| 132 |             if (invertible
  | 0 | ||||||||||||||||||||||||
| 133 |                 * never executed:  invertible = false;*invertible = false;never executed:  *invertible = false; | 0 | ||||||||||||||||||||||||
| 134 |             return never executed:   QMatrix4x4();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
  | 0 | ||||||||||||||||||||||||
| 146 |             * never executed:  invertible = true;*invertible = true;never executed:  *invertible = true; | 0 | ||||||||||||||||||||||||
| 147 |         return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 148 |     } else if ((
 
  | 0 | ||||||||||||||||||||||||
| 149 |         if (invertible
  | 0 | ||||||||||||||||||||||||
| 150 |             * never executed:  invertible = true;*invertible = true;never executed:  *invertible = true; | 0 | ||||||||||||||||||||||||
| 151 |         return never executed:   orthonormalInverse();return orthonormalInverse();never executed:  return orthonormalInverse(); | 0 | ||||||||||||||||||||||||
| 152 |     } else if (flagBits < Perspective
  | 0 | ||||||||||||||||||||||||
| 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
  | 0 | ||||||||||||||||||||||||
| 160 |             if (invertible
  | 0 | ||||||||||||||||||||||||
| 161 |                 * never executed:  invertible = false;*invertible = false;never executed:  *invertible = false; | 0 | ||||||||||||||||||||||||
| 162 |             return never executed:   QMatrix4x4();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
  | 0 | ||||||||||||||||||||||||
| 185 |             * never executed:  invertible = true;*invertible = true;never executed:  *invertible = true; | 0 | ||||||||||||||||||||||||
| 186 |         return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 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
  | 0 | ||||||||||||||||||||||||
| 196 |         if (invertible
  | 0 | ||||||||||||||||||||||||
| 197 |             * never executed:  invertible = false;*invertible = false;never executed:  *invertible = false; | 0 | ||||||||||||||||||||||||
| 198 |         return never executed:   QMatrix4x4();return QMatrix4x4();never executed:  return QMatrix4x4(); | 0 | ||||||||||||||||||||||||
| 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
  | 0 | ||||||||||||||||||||||||
| 221 |         * never executed:  invertible = true;*invertible = true;never executed:  *invertible = true; | 0 | ||||||||||||||||||||||||
| 222 |     return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 223 | } | - | ||||||||||||||||||||||||
| 224 | QMatrix3x3 QMatrix4x4::normalMatrix() const | - | ||||||||||||||||||||||||
| 225 | { | - | ||||||||||||||||||||||||
| 226 | QMatrix3x3 inv; | - | ||||||||||||||||||||||||
| 227 | - | |||||||||||||||||||||||||
| 228 | - | |||||||||||||||||||||||||
| 229 |     if (flagBits < Scale
  | 0 | ||||||||||||||||||||||||
| 230 | - | |||||||||||||||||||||||||
| 231 |         return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 232 |     } else if (flagBits < Rotation2D
  | 0 | ||||||||||||||||||||||||
| 233 | - | |||||||||||||||||||||||||
| 234 |         if (m[0][0] == 0.0f
 
 
  | 0 | ||||||||||||||||||||||||
| 235 |             return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 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 never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 240 |     } else if ((
 
  | 0 | ||||||||||||||||||||||||
| 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 never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 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
  | 0 | ||||||||||||||||||||||||
| 258 |         return never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 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 never executed:   inv;return inv;never executed:  return inv; | 0 | ||||||||||||||||||||||||
| 275 | } | - | ||||||||||||||||||||||||
| 276 | - | |||||||||||||||||||||||||
| 277 | - | |||||||||||||||||||||||||
| 278 | - | |||||||||||||||||||||||||
| 279 | - | |||||||||||||||||||||||||
| 280 | QMatrix4x4 QMatrix4x4::transposed() const | - | ||||||||||||||||||||||||
| 281 | { | - | ||||||||||||||||||||||||
| 282 | QMatrix4x4 result(1); | - | ||||||||||||||||||||||||
| 283 |     for (int row = 0; row < 4
  | 0 | ||||||||||||||||||||||||
| 284 |         for (int col = 0; col < 4
  | 0 | ||||||||||||||||||||||||
| 285 | result.m[col][row] = m[row][col]; | - | ||||||||||||||||||||||||
| 286 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 287 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 288 | - | |||||||||||||||||||||||||
| 289 |     result.flagBits = (flagBits & Translation
  | 0 | ||||||||||||||||||||||||
| 290 |     return never executed:   result;return result;never executed:  return result; | 0 | ||||||||||||||||||||||||
| 291 | } | - | ||||||||||||||||||||||||
| 292 | QMatrix4x4& 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 never executed:   *this;return *this;never executed:  return *this; | 0 | ||||||||||||||||||||||||
| 312 | } | - | ||||||||||||||||||||||||
| 313 | QMatrix4x4 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 never executed:   m;return m;never executed:  return m; | 0 | ||||||||||||||||||||||||
| 334 | } | - | ||||||||||||||||||||||||
| 335 | void 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
  | 0 | ||||||||||||||||||||||||
| 341 | m[0][0] = vx; | - | ||||||||||||||||||||||||
| 342 | m[1][1] = vy; | - | ||||||||||||||||||||||||
| 343 | m[2][2] = vz; | - | ||||||||||||||||||||||||
| 344 |     } never executed:   else if (flagBits < Rotation2Dend of block
  | 0 | ||||||||||||||||||||||||
| 345 | m[0][0] *= vx; | - | ||||||||||||||||||||||||
| 346 | m[1][1] *= vy; | - | ||||||||||||||||||||||||
| 347 | m[2][2] *= vz; | - | ||||||||||||||||||||||||
| 348 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else {end of block | 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 368 | flagBits |= Scale; | - | ||||||||||||||||||||||||
| 369 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 370 | void QMatrix4x4::scale(float x, float y) | - | ||||||||||||||||||||||||
| 371 | { | - | ||||||||||||||||||||||||
| 372 |     if (flagBits < Scale
  | 0 | ||||||||||||||||||||||||
| 373 | m[0][0] = x; | - | ||||||||||||||||||||||||
| 374 | m[1][1] = y; | - | ||||||||||||||||||||||||
| 375 |     } never executed:   else if (flagBits < Rotation2Dend of block
  | 0 | ||||||||||||||||||||||||
| 376 | m[0][0] *= x; | - | ||||||||||||||||||||||||
| 377 | m[1][1] *= y; | - | ||||||||||||||||||||||||
| 378 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 379 | m[0][0] *= x; | - | ||||||||||||||||||||||||
| 380 | m[0][1] *= x; | - | ||||||||||||||||||||||||
| 381 | m[1][0] *= y; | - | ||||||||||||||||||||||||
| 382 | m[1][1] *= y; | - | ||||||||||||||||||||||||
| 383 |     } never executed:   else {end of block | 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 393 | flagBits |= Scale; | - | ||||||||||||||||||||||||
| 394 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 395 | void QMatrix4x4::scale(float x, float y, float z) | - | ||||||||||||||||||||||||
| 396 | { | - | ||||||||||||||||||||||||
| 397 |     if (flagBits < Scale
  | 0 | ||||||||||||||||||||||||
| 398 | m[0][0] = x; | - | ||||||||||||||||||||||||
| 399 | m[1][1] = y; | - | ||||||||||||||||||||||||
| 400 | m[2][2] = z; | - | ||||||||||||||||||||||||
| 401 |     } never executed:   else if (flagBits < Rotation2Dend of block
  | 0 | ||||||||||||||||||||||||
| 402 | m[0][0] *= x; | - | ||||||||||||||||||||||||
| 403 | m[1][1] *= y; | - | ||||||||||||||||||||||||
| 404 | m[2][2] *= z; | - | ||||||||||||||||||||||||
| 405 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else {end of block | 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 425 | flagBits |= Scale; | - | ||||||||||||||||||||||||
| 426 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 427 | void QMatrix4x4::scale(float factor) | - | ||||||||||||||||||||||||
| 428 | { | - | ||||||||||||||||||||||||
| 429 |     if (flagBits < Scale
  | 0 | ||||||||||||||||||||||||
| 430 | m[0][0] = factor; | - | ||||||||||||||||||||||||
| 431 | m[1][1] = factor; | - | ||||||||||||||||||||||||
| 432 | m[2][2] = factor; | - | ||||||||||||||||||||||||
| 433 |     } never executed:   else if (flagBits < Rotation2Dend of block
  | 0 | ||||||||||||||||||||||||
| 434 | m[0][0] *= factor; | - | ||||||||||||||||||||||||
| 435 | m[1][1] *= factor; | - | ||||||||||||||||||||||||
| 436 | m[2][2] *= factor; | - | ||||||||||||||||||||||||
| 437 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else {end of block | 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 457 | flagBits |= Scale; | - | ||||||||||||||||||||||||
| 458 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 459 | void 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
  | 0 | ||||||||||||||||||||||||
| 465 | m[3][0] = vx; | - | ||||||||||||||||||||||||
| 466 | m[3][1] = vy; | - | ||||||||||||||||||||||||
| 467 | m[3][2] = vz; | - | ||||||||||||||||||||||||
| 468 |     } never executed:   else if (flagBits == Translationend of block
  | 0 | ||||||||||||||||||||||||
| 469 | m[3][0] += vx; | - | ||||||||||||||||||||||||
| 470 | m[3][1] += vy; | - | ||||||||||||||||||||||||
| 471 | m[3][2] += vz; | - | ||||||||||||||||||||||||
| 472 |     } never executed:   else if (flagBits == Scaleend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else if (flagBits == (Translation | Scale)end of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 490 | flagBits |= Translation; | - | ||||||||||||||||||||||||
| 491 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 492 | void QMatrix4x4::translate(float x, float y) | - | ||||||||||||||||||||||||
| 493 | { | - | ||||||||||||||||||||||||
| 494 |     if (flagBits == Identity
  | 0 | ||||||||||||||||||||||||
| 495 | m[3][0] = x; | - | ||||||||||||||||||||||||
| 496 | m[3][1] = y; | - | ||||||||||||||||||||||||
| 497 |     } never executed:   else if (flagBits == Translationend of block
  | 0 | ||||||||||||||||||||||||
| 498 | m[3][0] += x; | - | ||||||||||||||||||||||||
| 499 | m[3][1] += y; | - | ||||||||||||||||||||||||
| 500 |     } never executed:   else if (flagBits == Scaleend of block
  | 0 | ||||||||||||||||||||||||
| 501 | m[3][0] = m[0][0] * x; | - | ||||||||||||||||||||||||
| 502 | m[3][1] = m[1][1] * y; | - | ||||||||||||||||||||||||
| 503 |     } never executed:   else if (flagBits == (Translation | Scale)end of block
  | 0 | ||||||||||||||||||||||||
| 504 | m[3][0] += m[0][0] * x; | - | ||||||||||||||||||||||||
| 505 | m[3][1] += m[1][1] * y; | - | ||||||||||||||||||||||||
| 506 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else {end of block | 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 515 | flagBits |= Translation; | - | ||||||||||||||||||||||||
| 516 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 517 | void QMatrix4x4::translate(float x, float y, float z) | - | ||||||||||||||||||||||||
| 518 | { | - | ||||||||||||||||||||||||
| 519 |     if (flagBits == Identity
  | 0 | ||||||||||||||||||||||||
| 520 | m[3][0] = x; | - | ||||||||||||||||||||||||
| 521 | m[3][1] = y; | - | ||||||||||||||||||||||||
| 522 | m[3][2] = z; | - | ||||||||||||||||||||||||
| 523 |     } never executed:   else if (flagBits == Translationend of block
  | 0 | ||||||||||||||||||||||||
| 524 | m[3][0] += x; | - | ||||||||||||||||||||||||
| 525 | m[3][1] += y; | - | ||||||||||||||||||||||||
| 526 | m[3][2] += z; | - | ||||||||||||||||||||||||
| 527 |     } never executed:   else if (flagBits == Scaleend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else if (flagBits == (Translation | Scale)end of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else if (flagBits < Rotationend of block
  | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 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 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 545 | flagBits |= Translation; | - | ||||||||||||||||||||||||
| 546 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 547 | void QMatrix4x4::rotate(float angle, const QVector3D& vector) | - | ||||||||||||||||||||||||
| 548 | { | - | ||||||||||||||||||||||||
| 549 | rotate(angle, vector.x(), vector.y(), vector.z()); | - | ||||||||||||||||||||||||
| 550 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 551 | void QMatrix4x4::rotate(float angle, float x, float y, float z) | - | ||||||||||||||||||||||||
| 552 | { | - | ||||||||||||||||||||||||
| 553 |     if (angle == 0.0f
  | 0 | ||||||||||||||||||||||||
| 554 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 555 | float c, s; | - | ||||||||||||||||||||||||
| 556 |     if (angle == 90.0f
 
  | 0 | ||||||||||||||||||||||||
| 557 | s = 1.0f; | - | ||||||||||||||||||||||||
| 558 | c = 0.0f; | - | ||||||||||||||||||||||||
| 559 |     } never executed:   else if (angle == -90.0fend of block
 
  | 0 | ||||||||||||||||||||||||
| 560 | s = -1.0f; | - | ||||||||||||||||||||||||
| 561 | c = 0.0f; | - | ||||||||||||||||||||||||
| 562 |     } never executed:   else if (angle == 180.0fend of block
 
  | 0 | ||||||||||||||||||||||||
| 563 | s = 0.0f; | - | ||||||||||||||||||||||||
| 564 | c = -1.0f; | - | ||||||||||||||||||||||||
| 565 |     } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 566 | float a = angle * 3.14159265358979323846 / 180.0f; | - | ||||||||||||||||||||||||
| 567 | c = std::cos(a); | - | ||||||||||||||||||||||||
| 568 | s = std::sin(a); | - | ||||||||||||||||||||||||
| 569 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 570 |     if (x == 0.0f
  | 0 | ||||||||||||||||||||||||
| 571 |         if (y == 0.0f
  | 0 | ||||||||||||||||||||||||
| 572 |             if (z != 0.0f
  | 0 | ||||||||||||||||||||||||
| 573 | - | |||||||||||||||||||||||||
| 574 |                 if (z < 0
  | 0 | ||||||||||||||||||||||||
| 575 |                     s = -s; never executed:  s = -s; | 0 | ||||||||||||||||||||||||
| 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; never executed:  return; | 0 | ||||||||||||||||||||||||
| 588 | } | - | ||||||||||||||||||||||||
| 589 |         } never executed:   else if (z == 0.0fend of block
  | 0 | ||||||||||||||||||||||||
| 590 | - | |||||||||||||||||||||||||
| 591 |             if (y < 0
  | 0 | ||||||||||||||||||||||||
| 592 |                 s = -s; never executed:  s = -s; | 0 | ||||||||||||||||||||||||
| 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; never executed:  return; | 0 | ||||||||||||||||||||||||
| 605 | } | - | ||||||||||||||||||||||||
| 606 |     } never executed:   else if (y == 0.0fend of block
 
  | 0 | ||||||||||||||||||||||||
| 607 | - | |||||||||||||||||||||||||
| 608 |         if (x < 0
  | 0 | ||||||||||||||||||||||||
| 609 |             s = -s; never executed:  s = -s; | 0 | ||||||||||||||||||||||||
| 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; never executed:  return; | 0 | ||||||||||||||||||||||||
| 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)
 
  | 0 | ||||||||||||||||||||||||
| 628 | len = std::sqrt(len); | - | ||||||||||||||||||||||||
| 629 | x = float(double(x) / len); | - | ||||||||||||||||||||||||
| 630 | y = float(double(y) / len); | - | ||||||||||||||||||||||||
| 631 | z = float(double(z) / len); | - | ||||||||||||||||||||||||
| 632 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 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 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 654 | - | |||||||||||||||||||||||||
| 655 | - | |||||||||||||||||||||||||
| 656 | - | |||||||||||||||||||||||||
| 657 | - | |||||||||||||||||||||||||
| 658 | void QMatrix4x4::projectedRotate(float angle, float x, float y, float z) | - | ||||||||||||||||||||||||
| 659 | { | - | ||||||||||||||||||||||||
| 660 | - | |||||||||||||||||||||||||
| 661 | - | |||||||||||||||||||||||||
| 662 |     if (angle == 0.0f
  | 0 | ||||||||||||||||||||||||
| 663 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 664 | float c, s; | - | ||||||||||||||||||||||||
| 665 |     if (angle == 90.0f
 
  | 0 | ||||||||||||||||||||||||
| 666 | s = 1.0f; | - | ||||||||||||||||||||||||
| 667 | c = 0.0f; | - | ||||||||||||||||||||||||
| 668 |     } never executed:   else if (angle == -90.0fend of block
 
  | 0 | ||||||||||||||||||||||||
| 669 | s = -1.0f; | - | ||||||||||||||||||||||||
| 670 | c = 0.0f; | - | ||||||||||||||||||||||||
| 671 |     } never executed:   else if (angle == 180.0fend of block
 
  | 0 | ||||||||||||||||||||||||
| 672 | s = 0.0f; | - | ||||||||||||||||||||||||
| 673 | c = -1.0f; | - | ||||||||||||||||||||||||
| 674 |     } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 675 | float a = angle * 3.14159265358979323846 / 180.0f; | - | ||||||||||||||||||||||||
| 676 | c = std::cos(a); | - | ||||||||||||||||||||||||
| 677 | s = std::sin(a); | - | ||||||||||||||||||||||||
| 678 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 679 |     if (x == 0.0f
  | 0 | ||||||||||||||||||||||||
| 680 |         if (y == 0.0f
  | 0 | ||||||||||||||||||||||||
| 681 |             if (z != 0.0f
  | 0 | ||||||||||||||||||||||||
| 682 | - | |||||||||||||||||||||||||
| 683 |                 if (z < 0
  | 0 | ||||||||||||||||||||||||
| 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; never executed:  return; | 0 | ||||||||||||||||||||||||
| 697 | } | - | ||||||||||||||||||||||||
| 698 |         } never executed:   else if (z == 0.0fend of block
  | 0 | ||||||||||||||||||||||||
| 699 | - | |||||||||||||||||||||||||
| 700 |             if (y < 0
  | 0 | ||||||||||||||||||||||||
| 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; never executed:  return; | 0 | ||||||||||||||||||||||||
| 708 | } | - | ||||||||||||||||||||||||
| 709 |     } never executed:   else if (y == 0.0fend of block
 
  | 0 | ||||||||||||||||||||||||
| 710 | - | |||||||||||||||||||||||||
| 711 |         if (x < 0
  | 0 | ||||||||||||||||||||||||
| 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; never executed:  return; | 0 | ||||||||||||||||||||||||
| 719 | } | - | ||||||||||||||||||||||||
| 720 | double len = double(x) * double(x) + | - | ||||||||||||||||||||||||
| 721 | double(y) * double(y) + | - | ||||||||||||||||||||||||
| 722 | double(z) * double(z); | - | ||||||||||||||||||||||||
| 723 |     if (!qFuzzyCompare(len, 1.0)
 
  | 0 | ||||||||||||||||||||||||
| 724 | len = std::sqrt(len); | - | ||||||||||||||||||||||||
| 725 | x = float(double(x) / len); | - | ||||||||||||||||||||||||
| 726 | y = float(double(y) / len); | - | ||||||||||||||||||||||||
| 727 | z = float(double(z) / len); | - | ||||||||||||||||||||||||
| 728 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 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 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 750 | void QMatrix4x4::rotate(const QQuaternion& quaternion) | - | ||||||||||||||||||||||||
| 751 | { | - | ||||||||||||||||||||||||
| 752 | - | |||||||||||||||||||||||||
| 753 | - | |||||||||||||||||||||||||
| 754 | - | |||||||||||||||||||||||||
| 755 | QMatrix4x4 m(Qt::Uninitialized); | - | ||||||||||||||||||||||||
| 756 | - | |||||||||||||||||||||||||
| 757 | const float f2x = quaternion.x() + quaternion.x(); | - | ||||||||||||||||||||||||
| 758 | const float f2y = quaternion.y() + quaternion.y(); | - | ||||||||||||||||||||||||
| 759 | const float f2z = quaternion.z() + quaternion.z(); | - | ||||||||||||||||||||||||
| 760 | const float f2xw = f2x * quaternion.scalar(); | - | ||||||||||||||||||||||||
| 761 | const float f2yw = f2y * quaternion.scalar(); | - | ||||||||||||||||||||||||
| 762 | const float f2zw = f2z * quaternion.scalar(); | - | ||||||||||||||||||||||||
| 763 | const float f2xx = f2x * quaternion.x(); | - | ||||||||||||||||||||||||
| 764 | const float f2xy = f2x * quaternion.y(); | - | ||||||||||||||||||||||||
| 765 | const float f2xz = f2x * quaternion.z(); | - | ||||||||||||||||||||||||
| 766 | const float f2yy = f2y * quaternion.y(); | - | ||||||||||||||||||||||||
| 767 | const float f2yz = f2y * quaternion.z(); | - | ||||||||||||||||||||||||
| 768 | const float f2zz = f2z * quaternion.z(); | - | ||||||||||||||||||||||||
| 769 | - | |||||||||||||||||||||||||
| 770 | m.m[0][0] = 1.0f - (f2yy + f2zz); | - | ||||||||||||||||||||||||
| 771 | m.m[1][0] = f2xy - f2zw; | - | ||||||||||||||||||||||||
| 772 | m.m[2][0] = f2xz + f2yw; | - | ||||||||||||||||||||||||
| 773 | m.m[3][0] = 0.0f; | - | ||||||||||||||||||||||||
| 774 | m.m[0][1] = f2xy + f2zw; | - | ||||||||||||||||||||||||
| 775 | m.m[1][1] = 1.0f - (f2xx + f2zz); | - | ||||||||||||||||||||||||
| 776 | m.m[2][1] = f2yz - f2xw; | - | ||||||||||||||||||||||||
| 777 | m.m[3][1] = 0.0f; | - | ||||||||||||||||||||||||
| 778 | m.m[0][2] = f2xz - f2yw; | - | ||||||||||||||||||||||||
| 779 | m.m[1][2] = f2yz + f2xw; | - | ||||||||||||||||||||||||
| 780 | m.m[2][2] = 1.0f - (f2xx + f2yy); | - | ||||||||||||||||||||||||
| 781 | m.m[3][2] = 0.0f; | - | ||||||||||||||||||||||||
| 782 | m.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 783 | m.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 784 | m.m[2][3] = 0.0f; | - | ||||||||||||||||||||||||
| 785 | m.m[3][3] = 1.0f; | - | ||||||||||||||||||||||||
| 786 | m.flagBits = Rotation; | - | ||||||||||||||||||||||||
| 787 | *this *= m; | - | ||||||||||||||||||||||||
| 788 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 789 | void QMatrix4x4::ortho(const QRect& rect) | - | ||||||||||||||||||||||||
| 790 | { | - | ||||||||||||||||||||||||
| 791 | - | |||||||||||||||||||||||||
| 792 | - | |||||||||||||||||||||||||
| 793 | - | |||||||||||||||||||||||||
| 794 | - | |||||||||||||||||||||||||
| 795 | ortho(rect.x(), rect.x() + rect.width(), rect.y() + rect.height(), rect.y(), -1.0f, 1.0f); | - | ||||||||||||||||||||||||
| 796 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 797 | void QMatrix4x4::ortho(const QRectF& rect) | - | ||||||||||||||||||||||||
| 798 | { | - | ||||||||||||||||||||||||
| 799 | ortho(rect.left(), rect.right(), rect.bottom(), rect.top(), -1.0f, 1.0f); | - | ||||||||||||||||||||||||
| 800 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 801 | void QMatrix4x4::ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane) | - | ||||||||||||||||||||||||
| 802 | { | - | ||||||||||||||||||||||||
| 803 | - | |||||||||||||||||||||||||
| 804 |     if (left == right
 
 
  | 0 | ||||||||||||||||||||||||
| 805 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 806 | - | |||||||||||||||||||||||||
| 807 | - | |||||||||||||||||||||||||
| 808 | float width = right - left; | - | ||||||||||||||||||||||||
| 809 | float invheight = top - bottom; | - | ||||||||||||||||||||||||
| 810 | float clip = farPlane - nearPlane; | - | ||||||||||||||||||||||||
| 811 | QMatrix4x4 m(1); | - | ||||||||||||||||||||||||
| 812 | m.m[0][0] = 2.0f / width; | - | ||||||||||||||||||||||||
| 813 | m.m[1][0] = 0.0f; | - | ||||||||||||||||||||||||
| 814 | m.m[2][0] = 0.0f; | - | ||||||||||||||||||||||||
| 815 | m.m[3][0] = -(left + right) / width; | - | ||||||||||||||||||||||||
| 816 | m.m[0][1] = 0.0f; | - | ||||||||||||||||||||||||
| 817 | m.m[1][1] = 2.0f / invheight; | - | ||||||||||||||||||||||||
| 818 | m.m[2][1] = 0.0f; | - | ||||||||||||||||||||||||
| 819 | m.m[3][1] = -(top + bottom) / invheight; | - | ||||||||||||||||||||||||
| 820 | m.m[0][2] = 0.0f; | - | ||||||||||||||||||||||||
| 821 | m.m[1][2] = 0.0f; | - | ||||||||||||||||||||||||
| 822 | m.m[2][2] = -2.0f / clip; | - | ||||||||||||||||||||||||
| 823 | m.m[3][2] = -(nearPlane + farPlane) / clip; | - | ||||||||||||||||||||||||
| 824 | m.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 825 | m.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 826 | m.m[2][3] = 0.0f; | - | ||||||||||||||||||||||||
| 827 | m.m[3][3] = 1.0f; | - | ||||||||||||||||||||||||
| 828 | m.flagBits = Translation | Scale; | - | ||||||||||||||||||||||||
| 829 | - | |||||||||||||||||||||||||
| 830 | - | |||||||||||||||||||||||||
| 831 | *this *= m; | - | ||||||||||||||||||||||||
| 832 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 833 | void QMatrix4x4::frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane) | - | ||||||||||||||||||||||||
| 834 | { | - | ||||||||||||||||||||||||
| 835 | - | |||||||||||||||||||||||||
| 836 |     if (left == right
 
 
  | 0 | ||||||||||||||||||||||||
| 837 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 838 | - | |||||||||||||||||||||||||
| 839 | - | |||||||||||||||||||||||||
| 840 | QMatrix4x4 m(1); | - | ||||||||||||||||||||||||
| 841 | float width = right - left; | - | ||||||||||||||||||||||||
| 842 | float invheight = top - bottom; | - | ||||||||||||||||||||||||
| 843 | float clip = farPlane - nearPlane; | - | ||||||||||||||||||||||||
| 844 | m.m[0][0] = 2.0f * nearPlane / width; | - | ||||||||||||||||||||||||
| 845 | m.m[1][0] = 0.0f; | - | ||||||||||||||||||||||||
| 846 | m.m[2][0] = (left + right) / width; | - | ||||||||||||||||||||||||
| 847 | m.m[3][0] = 0.0f; | - | ||||||||||||||||||||||||
| 848 | m.m[0][1] = 0.0f; | - | ||||||||||||||||||||||||
| 849 | m.m[1][1] = 2.0f * nearPlane / invheight; | - | ||||||||||||||||||||||||
| 850 | m.m[2][1] = (top + bottom) / invheight; | - | ||||||||||||||||||||||||
| 851 | m.m[3][1] = 0.0f; | - | ||||||||||||||||||||||||
| 852 | m.m[0][2] = 0.0f; | - | ||||||||||||||||||||||||
| 853 | m.m[1][2] = 0.0f; | - | ||||||||||||||||||||||||
| 854 | m.m[2][2] = -(nearPlane + farPlane) / clip; | - | ||||||||||||||||||||||||
| 855 | m.m[3][2] = -2.0f * nearPlane * farPlane / clip; | - | ||||||||||||||||||||||||
| 856 | m.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 857 | m.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 858 | m.m[2][3] = -1.0f; | - | ||||||||||||||||||||||||
| 859 | m.m[3][3] = 0.0f; | - | ||||||||||||||||||||||||
| 860 | m.flagBits = General; | - | ||||||||||||||||||||||||
| 861 | - | |||||||||||||||||||||||||
| 862 | - | |||||||||||||||||||||||||
| 863 | *this *= m; | - | ||||||||||||||||||||||||
| 864 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 865 | void QMatrix4x4::perspective(float verticalAngle, float aspectRatio, float nearPlane, float farPlane) | - | ||||||||||||||||||||||||
| 866 | { | - | ||||||||||||||||||||||||
| 867 | - | |||||||||||||||||||||||||
| 868 |     if (nearPlane == farPlane
 
  | 0 | ||||||||||||||||||||||||
| 869 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 870 | - | |||||||||||||||||||||||||
| 871 | - | |||||||||||||||||||||||||
| 872 | QMatrix4x4 m(1); | - | ||||||||||||||||||||||||
| 873 | float radians = (verticalAngle / 2.0f) * 3.14159265358979323846 / 180.0f; | - | ||||||||||||||||||||||||
| 874 | float sine = std::sin(radians); | - | ||||||||||||||||||||||||
| 875 |     if (sine == 0.0f
  | 0 | ||||||||||||||||||||||||
| 876 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 877 | float cotan = std::cos(radians) / sine; | - | ||||||||||||||||||||||||
| 878 | float clip = farPlane - nearPlane; | - | ||||||||||||||||||||||||
| 879 | m.m[0][0] = cotan / aspectRatio; | - | ||||||||||||||||||||||||
| 880 | m.m[1][0] = 0.0f; | - | ||||||||||||||||||||||||
| 881 | m.m[2][0] = 0.0f; | - | ||||||||||||||||||||||||
| 882 | m.m[3][0] = 0.0f; | - | ||||||||||||||||||||||||
| 883 | m.m[0][1] = 0.0f; | - | ||||||||||||||||||||||||
| 884 | m.m[1][1] = cotan; | - | ||||||||||||||||||||||||
| 885 | m.m[2][1] = 0.0f; | - | ||||||||||||||||||||||||
| 886 | m.m[3][1] = 0.0f; | - | ||||||||||||||||||||||||
| 887 | m.m[0][2] = 0.0f; | - | ||||||||||||||||||||||||
| 888 | m.m[1][2] = 0.0f; | - | ||||||||||||||||||||||||
| 889 | m.m[2][2] = -(nearPlane + farPlane) / clip; | - | ||||||||||||||||||||||||
| 890 | m.m[3][2] = -(2.0f * nearPlane * farPlane) / clip; | - | ||||||||||||||||||||||||
| 891 | m.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 892 | m.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 893 | m.m[2][3] = -1.0f; | - | ||||||||||||||||||||||||
| 894 | m.m[3][3] = 0.0f; | - | ||||||||||||||||||||||||
| 895 | m.flagBits = General; | - | ||||||||||||||||||||||||
| 896 | - | |||||||||||||||||||||||||
| 897 | - | |||||||||||||||||||||||||
| 898 | *this *= m; | - | ||||||||||||||||||||||||
| 899 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 900 | void QMatrix4x4::lookAt(const QVector3D& eye, const QVector3D& center, const QVector3D& up) | - | ||||||||||||||||||||||||
| 901 | { | - | ||||||||||||||||||||||||
| 902 | QVector3D forward = center - eye; | - | ||||||||||||||||||||||||
| 903 |     if (qFuzzyIsNull(forward.x())
 
 
  | 0 | ||||||||||||||||||||||||
| 904 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 905 | - | |||||||||||||||||||||||||
| 906 | forward.normalize(); | - | ||||||||||||||||||||||||
| 907 | QVector3D side = QVector3D::crossProduct(forward, up).normalized(); | - | ||||||||||||||||||||||||
| 908 | QVector3D upVector = QVector3D::crossProduct(side, forward); | - | ||||||||||||||||||||||||
| 909 | - | |||||||||||||||||||||||||
| 910 | QMatrix4x4 m(1); | - | ||||||||||||||||||||||||
| 911 | m.m[0][0] = side.x(); | - | ||||||||||||||||||||||||
| 912 | m.m[1][0] = side.y(); | - | ||||||||||||||||||||||||
| 913 | m.m[2][0] = side.z(); | - | ||||||||||||||||||||||||
| 914 | m.m[3][0] = 0.0f; | - | ||||||||||||||||||||||||
| 915 | m.m[0][1] = upVector.x(); | - | ||||||||||||||||||||||||
| 916 | m.m[1][1] = upVector.y(); | - | ||||||||||||||||||||||||
| 917 | m.m[2][1] = upVector.z(); | - | ||||||||||||||||||||||||
| 918 | m.m[3][1] = 0.0f; | - | ||||||||||||||||||||||||
| 919 | m.m[0][2] = -forward.x(); | - | ||||||||||||||||||||||||
| 920 | m.m[1][2] = -forward.y(); | - | ||||||||||||||||||||||||
| 921 | m.m[2][2] = -forward.z(); | - | ||||||||||||||||||||||||
| 922 | m.m[3][2] = 0.0f; | - | ||||||||||||||||||||||||
| 923 | m.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 924 | m.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 925 | m.m[2][3] = 0.0f; | - | ||||||||||||||||||||||||
| 926 | m.m[3][3] = 1.0f; | - | ||||||||||||||||||||||||
| 927 | m.flagBits = Rotation; | - | ||||||||||||||||||||||||
| 928 | - | |||||||||||||||||||||||||
| 929 | *this *= m; | - | ||||||||||||||||||||||||
| 930 | translate(-eye); | - | ||||||||||||||||||||||||
| 931 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 932 | void QMatrix4x4::viewport(float left, float bottom, float width, float height, float nearPlane, float farPlane) | - | ||||||||||||||||||||||||
| 933 | { | - | ||||||||||||||||||||||||
| 934 | const float w2 = width / 2.0f; | - | ||||||||||||||||||||||||
| 935 | const float h2 = height / 2.0f; | - | ||||||||||||||||||||||||
| 936 | - | |||||||||||||||||||||||||
| 937 | QMatrix4x4 m(1); | - | ||||||||||||||||||||||||
| 938 | m.m[0][0] = w2; | - | ||||||||||||||||||||||||
| 939 | m.m[1][0] = 0.0f; | - | ||||||||||||||||||||||||
| 940 | m.m[2][0] = 0.0f; | - | ||||||||||||||||||||||||
| 941 | m.m[3][0] = left + w2; | - | ||||||||||||||||||||||||
| 942 | m.m[0][1] = 0.0f; | - | ||||||||||||||||||||||||
| 943 | m.m[1][1] = h2; | - | ||||||||||||||||||||||||
| 944 | m.m[2][1] = 0.0f; | - | ||||||||||||||||||||||||
| 945 | m.m[3][1] = bottom + h2; | - | ||||||||||||||||||||||||
| 946 | m.m[0][2] = 0.0f; | - | ||||||||||||||||||||||||
| 947 | m.m[1][2] = 0.0f; | - | ||||||||||||||||||||||||
| 948 | m.m[2][2] = (farPlane - nearPlane) / 2.0f; | - | ||||||||||||||||||||||||
| 949 | m.m[3][2] = (nearPlane + farPlane) / 2.0f; | - | ||||||||||||||||||||||||
| 950 | m.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 951 | m.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 952 | m.m[2][3] = 0.0f; | - | ||||||||||||||||||||||||
| 953 | m.m[3][3] = 1.0f; | - | ||||||||||||||||||||||||
| 954 | m.flagBits = General; | - | ||||||||||||||||||||||||
| 955 | - | |||||||||||||||||||||||||
| 956 | *this *= m; | - | ||||||||||||||||||||||||
| 957 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 958 | void QMatrix4x4::flipCoordinates() | - | ||||||||||||||||||||||||
| 959 | { | - | ||||||||||||||||||||||||
| 960 | - | |||||||||||||||||||||||||
| 961 | - | |||||||||||||||||||||||||
| 962 | - | |||||||||||||||||||||||||
| 963 |     if (flagBits < Rotation2D
  | 0 | ||||||||||||||||||||||||
| 964 | - | |||||||||||||||||||||||||
| 965 | m[1][1] = -m[1][1]; | - | ||||||||||||||||||||||||
| 966 | m[2][2] = -m[2][2]; | - | ||||||||||||||||||||||||
| 967 |     } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 968 | m[1][0] = -m[1][0]; | - | ||||||||||||||||||||||||
| 969 | m[1][1] = -m[1][1]; | - | ||||||||||||||||||||||||
| 970 | m[1][2] = -m[1][2]; | - | ||||||||||||||||||||||||
| 971 | m[1][3] = -m[1][3]; | - | ||||||||||||||||||||||||
| 972 | m[2][0] = -m[2][0]; | - | ||||||||||||||||||||||||
| 973 | m[2][1] = -m[2][1]; | - | ||||||||||||||||||||||||
| 974 | m[2][2] = -m[2][2]; | - | ||||||||||||||||||||||||
| 975 | m[2][3] = -m[2][3]; | - | ||||||||||||||||||||||||
| 976 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 977 | flagBits |= Scale; | - | ||||||||||||||||||||||||
| 978 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 979 | - | |||||||||||||||||||||||||
| 980 | - | |||||||||||||||||||||||||
| 981 | - | |||||||||||||||||||||||||
| 982 | - | |||||||||||||||||||||||||
| 983 | - | |||||||||||||||||||||||||
| 984 | void QMatrix4x4::copyDataTo(float *values) const | - | ||||||||||||||||||||||||
| 985 | { | - | ||||||||||||||||||||||||
| 986 |     for (int row = 0; row < 4
  | 0 | ||||||||||||||||||||||||
| 987 |         for (int col = 0; col < 4
  | 0 | ||||||||||||||||||||||||
| 988 |             values[row * 4 + col] = float(m[col][row]); never executed:  values[row * 4 + col] = float(m[col][row]); | 0 | ||||||||||||||||||||||||
| 989 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 990 | QMatrix QMatrix4x4::toAffine() const | - | ||||||||||||||||||||||||
| 991 | { | - | ||||||||||||||||||||||||
| 992 |     return never executed:   QMatrix(m[0][0], m[0][1],return QMatrix(m[0][0], m[0][1], m[1][0], m[1][1], m[3][0], m[3][1]);never executed:  return QMatrix(m[0][0], m[0][1], m[1][0], m[1][1], m[3][0], m[3][1]); | 0 | ||||||||||||||||||||||||
| 993 |                    m[1][0], m[1][1], never executed:  return QMatrix(m[0][0], m[0][1], m[1][0], m[1][1], m[3][0], m[3][1]); | 0 | ||||||||||||||||||||||||
| 994 |                    m[3][0], m[3][1]); never executed:  return QMatrix(m[0][0], m[0][1], m[1][0], m[1][1], m[3][0], m[3][1]); | 0 | ||||||||||||||||||||||||
| 995 | } | - | ||||||||||||||||||||||||
| 996 | QTransform QMatrix4x4::toTransform() const | - | ||||||||||||||||||||||||
| 997 | { | - | ||||||||||||||||||||||||
| 998 |     return never executed:   QTransform(m[0][0], m[0][1], m[0][3],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]);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 | ||||||||||||||||||||||||
| 999 |                       m[1][0], m[1][1], m[1][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 | ||||||||||||||||||||||||
| 1000 |                       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 | ||||||||||||||||||||||||
| 1001 | } | - | ||||||||||||||||||||||||
| 1002 | QTransform QMatrix4x4::toTransform(float distanceToPlane) const | - | ||||||||||||||||||||||||
| 1003 | { | - | ||||||||||||||||||||||||
| 1004 |     if (distanceToPlane == 1024.0f
  | 0 | ||||||||||||||||||||||||
| 1005 | - | |||||||||||||||||||||||||
| 1006 |         return never executed:   QTransform(m[0][0], m[0][1], m[0][3] - m[0][2] * inv_dist_to_plane,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);never 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); | 0 | ||||||||||||||||||||||||
| 1007 |                           m[1][0], m[1][1], m[1][3] - m[1][2] * inv_dist_to_plane, never 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); | 0 | ||||||||||||||||||||||||
| 1008 |                           m[3][0], m[3][1], m[3][3] - m[3][2] * inv_dist_to_plane); never 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); | 0 | ||||||||||||||||||||||||
| 1009 |     } else if (distanceToPlane != 0.0f
  | 0 | ||||||||||||||||||||||||
| 1010 | - | |||||||||||||||||||||||||
| 1011 | - | |||||||||||||||||||||||||
| 1012 | - | |||||||||||||||||||||||||
| 1013 | - | |||||||||||||||||||||||||
| 1014 | - | |||||||||||||||||||||||||
| 1015 | - | |||||||||||||||||||||||||
| 1016 | - | |||||||||||||||||||||||||
| 1017 | float d = 1.0f / distanceToPlane; | - | ||||||||||||||||||||||||
| 1018 |         return never executed:   QTransform(m[0][0], m[0][1], m[0][3] - m[0][2] * d,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);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 | ||||||||||||||||||||||||
| 1019 |                           m[1][0], m[1][1], m[1][3] - m[1][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 | ||||||||||||||||||||||||
| 1020 |                           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 | ||||||||||||||||||||||||
| 1021 | } else { | - | ||||||||||||||||||||||||
| 1022 | - | |||||||||||||||||||||||||
| 1023 |         return never executed:   QTransform(m[0][0], m[0][1], m[0][3],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]);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 | ||||||||||||||||||||||||
| 1024 |                           m[1][0], m[1][1], m[1][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 | ||||||||||||||||||||||||
| 1025 |                           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 | ||||||||||||||||||||||||
| 1026 | } | - | ||||||||||||||||||||||||
| 1027 | } | - | ||||||||||||||||||||||||
| 1028 | QRect QMatrix4x4::mapRect(const QRect& rect) const | - | ||||||||||||||||||||||||
| 1029 | { | - | ||||||||||||||||||||||||
| 1030 |     if (flagBits < Scale
  | 0 | ||||||||||||||||||||||||
| 1031 | - | |||||||||||||||||||||||||
| 1032 |         return never executed:   QRect(qRound(rect.x() + m[3][0]),return QRect(qRound(rect.x() + m[3][0]), qRound(rect.y() + m[3][1]), rect.width(), rect.height());never executed:  return QRect(qRound(rect.x() + m[3][0]), qRound(rect.y() + m[3][1]), rect.width(), rect.height()); | 0 | ||||||||||||||||||||||||
| 1033 |                      qRound(rect.y() + m[3][1]), never executed:  return QRect(qRound(rect.x() + m[3][0]), qRound(rect.y() + m[3][1]), rect.width(), rect.height()); | 0 | ||||||||||||||||||||||||
| 1034 |                      rect.width(), rect.height()); never executed:  return QRect(qRound(rect.x() + m[3][0]), qRound(rect.y() + m[3][1]), rect.width(), rect.height()); | 0 | ||||||||||||||||||||||||
| 1035 |     } else if (flagBits < Rotation2D
  | 0 | ||||||||||||||||||||||||
| 1036 | - | |||||||||||||||||||||||||
| 1037 | float x = rect.x() * m[0][0] + m[3][0]; | - | ||||||||||||||||||||||||
| 1038 | float y = rect.y() * m[1][1] + m[3][1]; | - | ||||||||||||||||||||||||
| 1039 | float w = rect.width() * m[0][0]; | - | ||||||||||||||||||||||||
| 1040 | float h = rect.height() * m[1][1]; | - | ||||||||||||||||||||||||
| 1041 |         if (w < 0
  | 0 | ||||||||||||||||||||||||
| 1042 | w = -w; | - | ||||||||||||||||||||||||
| 1043 | x -= w; | - | ||||||||||||||||||||||||
| 1044 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1045 |         if (h < 0
  | 0 | ||||||||||||||||||||||||
| 1046 | h = -h; | - | ||||||||||||||||||||||||
| 1047 | y -= h; | - | ||||||||||||||||||||||||
| 1048 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1049 |         return never executed:   QRect(qRound(x), qRound(y), qRound(w), qRound(h));return QRect(qRound(x), qRound(y), qRound(w), qRound(h));never executed:  return QRect(qRound(x), qRound(y), qRound(w), qRound(h)); | 0 | ||||||||||||||||||||||||
| 1050 | } | - | ||||||||||||||||||||||||
| 1051 | - | |||||||||||||||||||||||||
| 1052 | QPoint tl = map(rect.topLeft()); | - | ||||||||||||||||||||||||
| 1053 | QPoint tr = map(QPoint(rect.x() + rect.width(), rect.y())); | - | ||||||||||||||||||||||||
| 1054 | QPoint bl = map(QPoint(rect.x(), rect.y() + rect.height())); | - | ||||||||||||||||||||||||
| 1055 | QPoint br = map(QPoint(rect.x() + rect.width(), | - | ||||||||||||||||||||||||
| 1056 | rect.y() + rect.height())); | - | ||||||||||||||||||||||||
| 1057 | - | |||||||||||||||||||||||||
| 1058 | int xmin = qMin(qMin(tl.x(), tr.x()), qMin(bl.x(), br.x())); | - | ||||||||||||||||||||||||
| 1059 | int xmax = qMax(qMax(tl.x(), tr.x()), qMax(bl.x(), br.x())); | - | ||||||||||||||||||||||||
| 1060 | int ymin = qMin(qMin(tl.y(), tr.y()), qMin(bl.y(), br.y())); | - | ||||||||||||||||||||||||
| 1061 | int ymax = qMax(qMax(tl.y(), tr.y()), qMax(bl.y(), br.y())); | - | ||||||||||||||||||||||||
| 1062 | - | |||||||||||||||||||||||||
| 1063 |     return never executed:   QRect(xmin, ymin, xmax - xmin, ymax - ymin);return QRect(xmin, ymin, xmax - xmin, ymax - ymin);never executed:  return QRect(xmin, ymin, xmax - xmin, ymax - ymin); | 0 | ||||||||||||||||||||||||
| 1064 | } | - | ||||||||||||||||||||||||
| 1065 | QRectF QMatrix4x4::mapRect(const QRectF& rect) const | - | ||||||||||||||||||||||||
| 1066 | { | - | ||||||||||||||||||||||||
| 1067 |     if (flagBits < Scale
  | 0 | ||||||||||||||||||||||||
| 1068 | - | |||||||||||||||||||||||||
| 1069 |         return never executed:   rect.translated(m[3][0], m[3][1]);return rect.translated(m[3][0], m[3][1]);never executed:  return rect.translated(m[3][0], m[3][1]); | 0 | ||||||||||||||||||||||||
| 1070 |     } else if (flagBits < Rotation2D
  | 0 | ||||||||||||||||||||||||
| 1071 | - | |||||||||||||||||||||||||
| 1072 | float x = rect.x() * m[0][0] + m[3][0]; | - | ||||||||||||||||||||||||
| 1073 | float y = rect.y() * m[1][1] + m[3][1]; | - | ||||||||||||||||||||||||
| 1074 | float w = rect.width() * m[0][0]; | - | ||||||||||||||||||||||||
| 1075 | float h = rect.height() * m[1][1]; | - | ||||||||||||||||||||||||
| 1076 |         if (w < 0
  | 0 | ||||||||||||||||||||||||
| 1077 | w = -w; | - | ||||||||||||||||||||||||
| 1078 | x -= w; | - | ||||||||||||||||||||||||
| 1079 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1080 |         if (h < 0
  | 0 | ||||||||||||||||||||||||
| 1081 | h = -h; | - | ||||||||||||||||||||||||
| 1082 | y -= h; | - | ||||||||||||||||||||||||
| 1083 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1084 |         return never executed:   QRectF(x, y, w, h);return QRectF(x, y, w, h);never executed:  return QRectF(x, y, w, h); | 0 | ||||||||||||||||||||||||
| 1085 | } | - | ||||||||||||||||||||||||
| 1086 | - | |||||||||||||||||||||||||
| 1087 | QPointF tl = map(rect.topLeft()); QPointF tr = map(rect.topRight()); | - | ||||||||||||||||||||||||
| 1088 | QPointF bl = map(rect.bottomLeft()); QPointF br = map(rect.bottomRight()); | - | ||||||||||||||||||||||||
| 1089 | - | |||||||||||||||||||||||||
| 1090 | float xmin = qMin(qMin(tl.x(), tr.x()), qMin(bl.x(), br.x())); | - | ||||||||||||||||||||||||
| 1091 | float xmax = qMax(qMax(tl.x(), tr.x()), qMax(bl.x(), br.x())); | - | ||||||||||||||||||||||||
| 1092 | float ymin = qMin(qMin(tl.y(), tr.y()), qMin(bl.y(), br.y())); | - | ||||||||||||||||||||||||
| 1093 | float ymax = qMax(qMax(tl.y(), tr.y()), qMax(bl.y(), br.y())); | - | ||||||||||||||||||||||||
| 1094 | - | |||||||||||||||||||||||||
| 1095 |     return never executed:   QRectF(QPointF(xmin, ymin), QPointF(xmax, ymax));return QRectF(QPointF(xmin, ymin), QPointF(xmax, ymax));never executed:  return QRectF(QPointF(xmin, ymin), QPointF(xmax, ymax)); | 0 | ||||||||||||||||||||||||
| 1096 | } | - | ||||||||||||||||||||||||
| 1097 | QMatrix4x4 QMatrix4x4::orthonormalInverse() const | - | ||||||||||||||||||||||||
| 1098 | { | - | ||||||||||||||||||||||||
| 1099 | QMatrix4x4 result(1); | - | ||||||||||||||||||||||||
| 1100 | - | |||||||||||||||||||||||||
| 1101 | result.m[0][0] = m[0][0]; | - | ||||||||||||||||||||||||
| 1102 | result.m[1][0] = m[0][1]; | - | ||||||||||||||||||||||||
| 1103 | result.m[2][0] = m[0][2]; | - | ||||||||||||||||||||||||
| 1104 | - | |||||||||||||||||||||||||
| 1105 | result.m[0][1] = m[1][0]; | - | ||||||||||||||||||||||||
| 1106 | result.m[1][1] = m[1][1]; | - | ||||||||||||||||||||||||
| 1107 | result.m[2][1] = m[1][2]; | - | ||||||||||||||||||||||||
| 1108 | - | |||||||||||||||||||||||||
| 1109 | result.m[0][2] = m[2][0]; | - | ||||||||||||||||||||||||
| 1110 | result.m[1][2] = m[2][1]; | - | ||||||||||||||||||||||||
| 1111 | result.m[2][2] = m[2][2]; | - | ||||||||||||||||||||||||
| 1112 | - | |||||||||||||||||||||||||
| 1113 | result.m[0][3] = 0.0f; | - | ||||||||||||||||||||||||
| 1114 | result.m[1][3] = 0.0f; | - | ||||||||||||||||||||||||
| 1115 | result.m[2][3] = 0.0f; | - | ||||||||||||||||||||||||
| 1116 | - | |||||||||||||||||||||||||
| 1117 | 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]); | - | ||||||||||||||||||||||||
| 1118 | 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]); | - | ||||||||||||||||||||||||
| 1119 | 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]); | - | ||||||||||||||||||||||||
| 1120 | result.m[3][3] = 1.0f; | - | ||||||||||||||||||||||||
| 1121 | - | |||||||||||||||||||||||||
| 1122 | result.flagBits = flagBits; | - | ||||||||||||||||||||||||
| 1123 | - | |||||||||||||||||||||||||
| 1124 |     return never executed:   result;return result;never executed:  return result; | 0 | ||||||||||||||||||||||||
| 1125 | } | - | ||||||||||||||||||||||||
| 1126 | void QMatrix4x4::optimize() | - | ||||||||||||||||||||||||
| 1127 | { | - | ||||||||||||||||||||||||
| 1128 | - | |||||||||||||||||||||||||
| 1129 | flagBits = General; | - | ||||||||||||||||||||||||
| 1130 |     if (m[0][3] != 0
 
 
 
  | 0 | ||||||||||||||||||||||||
| 1131 |         return; never executed:  return; | 0 | ||||||||||||||||||||||||
| 1132 | - | |||||||||||||||||||||||||
| 1133 | flagBits &= ~Perspective; | - | ||||||||||||||||||||||||
| 1134 | - | |||||||||||||||||||||||||
| 1135 | - | |||||||||||||||||||||||||
| 1136 |     if (m[3][0] == 0
 
 
  | 0 | ||||||||||||||||||||||||
| 1137 |         flagBits &= ~Translation; never executed:  flagBits &= ~Translation; | 0 | ||||||||||||||||||||||||
| 1138 | - | |||||||||||||||||||||||||
| 1139 | - | |||||||||||||||||||||||||
| 1140 |     if (!m[0][2]
 
 
 
  | 0 | ||||||||||||||||||||||||
| 1141 | flagBits &= ~Rotation; | - | ||||||||||||||||||||||||
| 1142 | - | |||||||||||||||||||||||||
| 1143 |         if (!m[0][1]
 
  | 0 | ||||||||||||||||||||||||
| 1144 | flagBits &= ~Rotation2D; | - | ||||||||||||||||||||||||
| 1145 | - | |||||||||||||||||||||||||
| 1146 |             if (m[0][0] == 1
 
 
  | 0 | ||||||||||||||||||||||||
| 1147 |                 flagBits &= ~Scale; never executed:  flagBits &= ~Scale; | 0 | ||||||||||||||||||||||||
| 1148 |         } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 1149 | - | |||||||||||||||||||||||||
| 1150 | double mm[4][4]; | - | ||||||||||||||||||||||||
| 1151 | copyToDoubles(m, mm); | - | ||||||||||||||||||||||||
| 1152 | double det = matrixDet2(mm, 0, 1, 0, 1); | - | ||||||||||||||||||||||||
| 1153 | double lenX = mm[0][0] * mm[0][0] + mm[0][1] * mm[0][1]; | - | ||||||||||||||||||||||||
| 1154 | double lenY = mm[1][0] * mm[1][0] + mm[1][1] * mm[1][1]; | - | ||||||||||||||||||||||||
| 1155 | double lenZ = mm[2][2]; | - | ||||||||||||||||||||||||
| 1156 |             if (qFuzzyCompare(det, 1.0)
 
  | 0 | ||||||||||||||||||||||||
| 1157 |                     && qFuzzyCompare(lenY, 1.0)
 
  | 0 | ||||||||||||||||||||||||
| 1158 | { | - | ||||||||||||||||||||||||
| 1159 | flagBits &= ~Scale; | - | ||||||||||||||||||||||||
| 1160 |             } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1161 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1162 | } else { | - | ||||||||||||||||||||||||
| 1163 | - | |||||||||||||||||||||||||
| 1164 | double mm[4][4]; | - | ||||||||||||||||||||||||
| 1165 | copyToDoubles(m, mm); | - | ||||||||||||||||||||||||
| 1166 | double det = matrixDet3(mm, 0, 1, 2, 0, 1, 2); | - | ||||||||||||||||||||||||
| 1167 | double lenX = mm[0][0] * mm[0][0] + mm[0][1] * mm[0][1] + mm[0][2] * mm[0][2]; | - | ||||||||||||||||||||||||
| 1168 | double lenY = mm[1][0] * mm[1][0] + mm[1][1] * mm[1][1] + mm[1][2] * mm[1][2]; | - | ||||||||||||||||||||||||
| 1169 | double lenZ = mm[2][0] * mm[2][0] + mm[2][1] * mm[2][1] + mm[2][2] * mm[2][2]; | - | ||||||||||||||||||||||||
| 1170 |         if (qFuzzyCompare(det, 1.0)
 
  | 0 | ||||||||||||||||||||||||
| 1171 |                 && qFuzzyCompare(lenY, 1.0)
 
  | 0 | ||||||||||||||||||||||||
| 1172 | { | - | ||||||||||||||||||||||||
| 1173 | flagBits &= ~Scale; | - | ||||||||||||||||||||||||
| 1174 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1175 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1176 | } | - | ||||||||||||||||||||||||
| 1177 | - | |||||||||||||||||||||||||
| 1178 | - | |||||||||||||||||||||||||
| 1179 | - | |||||||||||||||||||||||||
| 1180 | - | |||||||||||||||||||||||||
| 1181 | QMatrix4x4::operator QVariant() const | - | ||||||||||||||||||||||||
| 1182 | { | - | ||||||||||||||||||||||||
| 1183 |     return never executed:   QVariant(QVariant::Matrix4x4, this);return QVariant(QVariant::Matrix4x4, this);never executed:  return QVariant(QVariant::Matrix4x4, this); | 0 | ||||||||||||||||||||||||
| 1184 | } | - | ||||||||||||||||||||||||
| 1185 | - | |||||||||||||||||||||||||
| 1186 | - | |||||||||||||||||||||||||
| 1187 | - | |||||||||||||||||||||||||
| 1188 | QDebug operator<<(QDebug dbg, const QMatrix4x4 &m) | - | ||||||||||||||||||||||||
| 1189 | { | - | ||||||||||||||||||||||||
| 1190 | QDebugStateSaver saver(dbg); | - | ||||||||||||||||||||||||
| 1191 | - | |||||||||||||||||||||||||
| 1192 | QByteArray bits; | - | ||||||||||||||||||||||||
| 1193 |     if (m.flagBits == QMatrix4x4::Identity
  | 0 | ||||||||||||||||||||||||
| 1194 | bits = "Identity"; | - | ||||||||||||||||||||||||
| 1195 |     } never executed:   else if (m.flagBits == QMatrix4x4::Generalend of block
  | 0 | ||||||||||||||||||||||||
| 1196 | bits = "General"; | - | ||||||||||||||||||||||||
| 1197 |     } never executed:   else {end of block | 0 | ||||||||||||||||||||||||
| 1198 |         if ((
 
  | 0 | ||||||||||||||||||||||||
| 1199 |             bits += "Translation,"; never executed:  bits += "Translation,"; | 0 | ||||||||||||||||||||||||
| 1200 |         if ((
 
  | 0 | ||||||||||||||||||||||||
| 1201 |             bits += "Scale,"; never executed:  bits += "Scale,"; | 0 | ||||||||||||||||||||||||
| 1202 |         if ((
 
  | 0 | ||||||||||||||||||||||||
| 1203 |             bits += "Rotation2D,"; never executed:  bits += "Rotation2D,"; | 0 | ||||||||||||||||||||||||
| 1204 |         if ((
 
  | 0 | ||||||||||||||||||||||||
| 1205 |             bits += "Rotation,"; never executed:  bits += "Rotation,"; | 0 | ||||||||||||||||||||||||
| 1206 |         if ((
 
  | 0 | ||||||||||||||||||||||||
| 1207 |             bits += "Perspective,"; never executed:  bits += "Perspective,"; | 0 | ||||||||||||||||||||||||
| 1208 |         if (bits.size() > 0
  | 0 | ||||||||||||||||||||||||
| 1209 |             bits = bits.left(bits.size() - 1); never executed:  bits = bits.left(bits.size() - 1); | 0 | ||||||||||||||||||||||||
| 1210 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1211 | - | |||||||||||||||||||||||||
| 1212 | - | |||||||||||||||||||||||||
| 1213 | dbg.nospace() << "QMatrix4x4(type:" << bits.constData() << endl | - | ||||||||||||||||||||||||
| 1214 | << qSetFieldWidth(10) | - | ||||||||||||||||||||||||
| 1215 | << m(0, 0) << m(0, 1) << m(0, 2) << m(0, 3) << endl | - | ||||||||||||||||||||||||
| 1216 | << m(1, 0) << m(1, 1) << m(1, 2) << m(1, 3) << endl | - | ||||||||||||||||||||||||
| 1217 | << m(2, 0) << m(2, 1) << m(2, 2) << m(2, 3) << endl | - | ||||||||||||||||||||||||
| 1218 | << m(3, 0) << m(3, 1) << m(3, 2) << m(3, 3) << endl | - | ||||||||||||||||||||||||
| 1219 | << qSetFieldWidth(0) << ')'; | - | ||||||||||||||||||||||||
| 1220 |     return never executed:   dbg;return dbg;never executed:  return dbg; | 0 | ||||||||||||||||||||||||
| 1221 | } | - | ||||||||||||||||||||||||
| 1222 | QDataStream &operator<<(QDataStream &stream, const QMatrix4x4 &matrix) | - | ||||||||||||||||||||||||
| 1223 | { | - | ||||||||||||||||||||||||
| 1224 |     for (int row = 0; row < 4
  | 0 | ||||||||||||||||||||||||
| 1225 |         for (int col = 0; col < 4
  | 0 | ||||||||||||||||||||||||
| 1226 |             stream << matrix(row, col); never executed:  stream << matrix(row, col); | 0 | ||||||||||||||||||||||||
| 1227 |     return never executed:   stream;return stream;never executed:  return stream; | 0 | ||||||||||||||||||||||||
| 1228 | } | - | ||||||||||||||||||||||||
| 1229 | QDataStream &operator>>(QDataStream &stream, QMatrix4x4 &matrix) | - | ||||||||||||||||||||||||
| 1230 | { | - | ||||||||||||||||||||||||
| 1231 | float x; | - | ||||||||||||||||||||||||
| 1232 |     for (int row = 0; row < 4
  | 0 | ||||||||||||||||||||||||
| 1233 |         for (int col = 0; col < 4
  | 0 | ||||||||||||||||||||||||
| 1234 | stream >> x; | - | ||||||||||||||||||||||||
| 1235 | matrix(row, col) = x; | - | ||||||||||||||||||||||||
| 1236 |         } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1237 |     } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 1238 | matrix.optimize(); | - | ||||||||||||||||||||||||
| 1239 |     return never executed:   stream;return stream;never executed:  return stream; | 0 | ||||||||||||||||||||||||
| 1240 | } | - | ||||||||||||||||||||||||
| 1241 | - | |||||||||||||||||||||||||
| 1242 | - | |||||||||||||||||||||||||
| 1243 | - | |||||||||||||||||||||||||
| 1244 | - | |||||||||||||||||||||||||
| 1245 | - | |||||||||||||||||||||||||
| 1246 | - | |||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |