272 } |
272 } |
273 } |
273 } |
274 |
274 |
275 // ============================================================================= |
275 // ============================================================================= |
276 // |
276 // |
277 LDBoundingBox& LDBoundingBox::operator<< (const Vertex& v) |
277 BoundingBox& BoundingBox::operator<< (const Vertex& v) |
278 { |
278 { |
279 calcVertex (v); |
279 calcVertex (v); |
280 return *this; |
280 return *this; |
281 } |
281 } |
282 |
282 |
283 // ============================================================================= |
283 // ============================================================================= |
284 // |
284 // |
285 LDBoundingBox& LDBoundingBox::operator<< (LDObject* obj) |
285 BoundingBox& BoundingBox::operator<< (LDObject* obj) |
286 { |
286 { |
287 calcObject (obj); |
287 calcObject (obj); |
288 return *this; |
288 return *this; |
289 } |
289 } |
290 |
290 |
291 // ============================================================================= |
291 // ============================================================================= |
292 // |
292 // |
293 void LDBoundingBox::calcVertex (const Vertex& vertex) |
293 void BoundingBox::calcVertex (const Vertex& vertex) |
294 { |
294 { |
295 m_vertex0.setX (qMin (vertex.x(), m_vertex0.x())); |
295 m_vertex0.setX (qMin (vertex.x(), m_vertex0.x())); |
296 m_vertex0.setY (qMin (vertex.y(), m_vertex0.y())); |
296 m_vertex0.setY (qMin (vertex.y(), m_vertex0.y())); |
297 m_vertex0.setZ (qMin (vertex.z(), m_vertex0.z())); |
297 m_vertex0.setZ (qMin (vertex.z(), m_vertex0.z())); |
298 m_vertex1.setX (qMax (vertex.x(), m_vertex1.x())); |
298 m_vertex1.setX (qMax (vertex.x(), m_vertex1.x())); |
303 |
303 |
304 // ============================================================================= |
304 // ============================================================================= |
305 // |
305 // |
306 // Clears the bounding box |
306 // Clears the bounding box |
307 // |
307 // |
308 void LDBoundingBox::reset() |
308 void BoundingBox::reset() |
309 { |
309 { |
310 m_vertex0 = Vertex (10000.0, 10000.0, 10000.0); |
310 m_vertex0 = Vertex (10000.0, 10000.0, 10000.0); |
311 m_vertex1 = Vertex (-10000.0, -10000.0, -10000.0); |
311 m_vertex1 = Vertex (-10000.0, -10000.0, -10000.0); |
312 m_isEmpty = true; |
312 m_isEmpty = true; |
313 } |
313 } |
314 |
314 |
315 // ============================================================================= |
315 // ============================================================================= |
316 // |
316 // |
317 // Returns the length of the bounding box on the longest measure. |
317 // Returns the length of the bounding box on the longest measure. |
318 // |
318 // |
319 double LDBoundingBox::longestMeasurement() const |
319 double BoundingBox::longestMeasurement() const |
320 { |
320 { |
321 double xscale = (m_vertex0.x() - m_vertex1.x()); |
321 double xscale = (m_vertex0.x() - m_vertex1.x()); |
322 double yscale = (m_vertex0.y() - m_vertex1.y()); |
322 double yscale = (m_vertex0.y() - m_vertex1.y()); |
323 double zscale = (m_vertex0.z() - m_vertex1.z()); |
323 double zscale = (m_vertex0.z() - m_vertex1.z()); |
324 double size = zscale; |
324 double size = zscale; |
339 |
339 |
340 // ============================================================================= |
340 // ============================================================================= |
341 // |
341 // |
342 // Yields the center of the bounding box. |
342 // Yields the center of the bounding box. |
343 // |
343 // |
344 Vertex LDBoundingBox::center() const |
344 Vertex BoundingBox::center() const |
345 { |
345 { |
346 return Vertex ( |
346 return Vertex ( |
347 (m_vertex0.x() + m_vertex1.x()) / 2, |
347 (m_vertex0.x() + m_vertex1.x()) / 2, |
348 (m_vertex0.y() + m_vertex1.y()) / 2, |
348 (m_vertex0.y() + m_vertex1.y()) / 2, |
349 (m_vertex0.z() + m_vertex1.z()) / 2); |
349 (m_vertex0.z() + m_vertex1.z()) / 2); |
350 } |
350 } |
351 |
351 |
352 bool LDBoundingBox::isEmpty() const |
352 bool BoundingBox::isEmpty() const |
353 { |
353 { |
354 return m_isEmpty; |
354 return m_isEmpty; |
355 } |
355 } |
356 |
356 |
357 const Vertex& LDBoundingBox::vertex0() const |
357 const Vertex& BoundingBox::vertex0() const |
358 { |
358 { |
359 return m_vertex0; |
359 return m_vertex0; |
360 } |
360 } |
361 |
361 |
362 const Vertex& LDBoundingBox::vertex1() const |
362 const Vertex& BoundingBox::vertex1() const |
363 { |
363 { |
364 return m_vertex1; |
364 return m_vertex1; |
365 } |
365 } |