187 m_vals[i] = fillval; |
187 m_vals[i] = fillval; |
188 } |
188 } |
189 |
189 |
190 // ============================================================================= |
190 // ============================================================================= |
191 // |
191 // |
192 Matrix::Matrix (initlist<double> vals) |
192 Matrix::Matrix (QList<double> vals) |
193 { |
193 { |
194 assert (vals.size() == 9); |
194 assert (vals.size() == 9); |
195 memcpy (&m_vals[0], & (*vals.begin()), sizeof m_vals); |
195 memcpy (&m_vals[0], & (*vals.begin()), sizeof m_vals); |
196 } |
196 } |
197 |
197 |
257 |
257 |
258 // ============================================================================= |
258 // ============================================================================= |
259 // |
259 // |
260 double Matrix::getDeterminant() const |
260 double Matrix::getDeterminant() const |
261 { |
261 { |
262 return (val (0) * val (4) * val (8)) + |
262 return (value (0) * value (4) * value (8)) + |
263 (val (1) * val (5) * val (6)) + |
263 (value (1) * value (5) * value (6)) + |
264 (val (2) * val (3) * val (7)) - |
264 (value (2) * value (3) * value (7)) - |
265 (val (2) * val (4) * val (6)) - |
265 (value (2) * value (4) * value (6)) - |
266 (val (1) * val (3) * val (8)) - |
266 (value (1) * value (3) * value (8)) - |
267 (val (0) * val (5) * val (7)); |
267 (value (0) * value (5) * value (7)); |
268 } |
268 } |
269 |
269 |
270 // ============================================================================= |
270 // ============================================================================= |
271 // |
271 // |
272 bool Matrix::operator== (const Matrix& other) const |
272 bool Matrix::operator== (const Matrix& other) const |
273 { |
273 { |
274 for (int i = 0; i < 9; ++i) |
274 for (int i = 0; i < 9; ++i) |
275 if (val (i) != other[i]) |
275 if (value (i) != other[i]) |
276 return false; |
276 return false; |
277 |
277 |
278 return true; |
278 return true; |
279 } |
279 } |
280 |
280 |
347 return *this; |
347 return *this; |
348 } |
348 } |
349 |
349 |
350 // ============================================================================= |
350 // ============================================================================= |
351 // |
351 // |
352 void LDBoundingBox::calcVertex (const Vertex& v) |
352 void LDBoundingBox::calcVertex (const Vertex& vertex) |
353 { |
353 { |
354 for_axes (ax) |
354 for_axes (ax) |
355 { |
355 { |
356 m_vertex0[ax] = min (v[ax], m_vertex0[ax]); |
356 m_vertex0[ax] = min (vertex[ax], m_vertex0[ax]); |
357 m_vertex1[ax] = max (v[ax], m_vertex1[ax]); |
357 m_vertex1[ax] = max (vertex[ax], m_vertex1[ax]); |
358 } |
358 } |
359 |
359 |
360 setEmpty (false); |
360 setEmpty (false); |
361 } |
361 } |
362 |
362 |
369 setEmpty (true); |
369 setEmpty (true); |
370 } |
370 } |
371 |
371 |
372 // ============================================================================= |
372 // ============================================================================= |
373 // |
373 // |
374 double LDBoundingBox::size() const |
374 double LDBoundingBox::longestMeasurement() const |
375 { |
375 { |
376 double xscale = (m_vertex0[X] - m_vertex1[X]); |
376 double xscale = (m_vertex0[X] - m_vertex1[X]); |
377 double yscale = (m_vertex0[Y] - m_vertex1[Y]); |
377 double yscale = (m_vertex0[Y] - m_vertex1[Y]); |
378 double zscale = (m_vertex0[Z] - m_vertex1[Z]); |
378 double zscale = (m_vertex0[Z] - m_vertex1[Z]); |
379 double size = zscale; |
379 double size = zscale; |