484 } |
486 } |
485 |
487 |
486 // ============================================================================= |
488 // ============================================================================= |
487 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
489 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
488 // ============================================================================= |
490 // ============================================================================= |
489 bbox::bbox() { |
491 LDBoundingBox::LDBoundingBox() { |
490 reset(); |
492 reset(); |
491 } |
493 } |
492 |
494 |
493 // ============================================================================= |
495 // ============================================================================= |
494 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
496 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
495 // ============================================================================= |
497 // ============================================================================= |
496 void bbox::calculate() { |
498 void LDBoundingBox::calculate() { |
497 reset(); |
499 reset(); |
498 |
500 |
499 if (!currentFile()) |
501 if (!currentFile()) |
500 return; |
502 return; |
501 |
503 |
504 } |
506 } |
505 |
507 |
506 // ============================================================================= |
508 // ============================================================================= |
507 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
509 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
508 // ============================================================================= |
510 // ============================================================================= |
509 void bbox::calcObject (LDObject* obj) { |
511 void LDBoundingBox::calcObject (LDObject* obj) { |
510 switch (obj->getType()) { |
512 switch (obj->getType()) { |
511 case LDObject::Line: |
513 case LDObject::Line: |
512 case LDObject::Triangle: |
514 case LDObject::Triangle: |
513 case LDObject::Quad: |
515 case LDObject::Quad: |
514 case LDObject::CondLine: |
516 case LDObject::CondLine: |
531 default: |
533 default: |
532 break; |
534 break; |
533 } |
535 } |
534 } |
536 } |
535 |
537 |
|
538 LDBoundingBox& LDBoundingBox::operator<< (const vertex& v) { |
|
539 calcVertex (v); |
|
540 return *this; |
|
541 } |
|
542 |
|
543 LDBoundingBox& LDBoundingBox::operator<< (LDObject* obj) { |
|
544 calcObject (obj); |
|
545 return *this; |
|
546 } |
|
547 |
536 // ============================================================================= |
548 // ============================================================================= |
537 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
549 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
538 // ============================================================================= |
550 // ============================================================================= |
539 void bbox::calcVertex (const vertex& v) { |
551 void LDBoundingBox::calcVertex (const vertex& v) { |
540 for (const Axis ax : g_Axes) { |
552 for (const Axis ax : g_Axes) { |
541 if (v[ax] < m_v0[ax]) |
553 if (v[ax] < m_v0[ax]) |
542 m_v0[ax] = v[ax]; |
554 m_v0[ax] = v[ax]; |
543 |
555 |
544 if (v[ax] > m_v1[ax]) |
556 if (v[ax] > m_v1[ax]) |
549 } |
561 } |
550 |
562 |
551 // ============================================================================= |
563 // ============================================================================= |
552 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
564 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
553 // ============================================================================= |
565 // ============================================================================= |
554 void bbox::reset() { |
566 void LDBoundingBox::reset() { |
555 m_v0[X] = m_v0[Y] = m_v0[Z] = 0x7FFFFFFF; |
567 m_v0[X] = m_v0[Y] = m_v0[Z] = 0x7FFFFFFF; |
556 m_v1[X] = m_v1[Y] = m_v1[Z] = 0xFFFFFFFF; |
568 m_v1[X] = m_v1[Y] = m_v1[Z] = 0xFFFFFFFF; |
557 |
569 |
558 m_empty = true; |
570 m_empty = true; |
559 } |
571 } |
560 |
572 |
561 // ============================================================================= |
573 // ============================================================================= |
562 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
574 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
563 // ============================================================================= |
575 // ============================================================================= |
564 double bbox::size() const { |
576 double LDBoundingBox::size() const { |
565 double xscale = (m_v0[X] - m_v1[X]); |
577 double xscale = (m_v0[X] - m_v1[X]); |
566 double yscale = (m_v0[Y] - m_v1[Y]); |
578 double yscale = (m_v0[Y] - m_v1[Y]); |
567 double zscale = (m_v0[Z] - m_v1[Z]); |
579 double zscale = (m_v0[Z] - m_v1[Z]); |
568 double size = zscale; |
580 double size = zscale; |
569 |
581 |
578 |
590 |
579 return 1.0f; |
591 return 1.0f; |
580 } |
592 } |
581 |
593 |
582 // ============================================================================= |
594 // ============================================================================= |
583 vertex bbox::center() const { |
595 vertex LDBoundingBox::center() const { |
584 return vertex ( |
596 return vertex ( |
585 (m_v0[X] + m_v1[X]) / 2, |
597 (m_v0[X] + m_v1[X]) / 2, |
586 (m_v0[Y] + m_v1[Y]) / 2, |
598 (m_v0[Y] + m_v1[Y]) / 2, |
587 (m_v0[Z] + m_v1[Z]) / 2); |
599 (m_v0[Z] + m_v1[Z]) / 2); |
588 } |
600 } |