Changeset 8604
- Timestamp:
- 07/16/08 13:40:01
- Files:
-
- OpenSceneGraph/trunk/src/osg/KdTree.cpp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
OpenSceneGraph/trunk/src/osg/KdTree.cpp
r8599 r8604 435 435 _d = e - s; 436 436 _length = _d.length(); 437 _inverse_length = 1.0f/_length;437 _inverse_length = _length!=0.0f ? 1.0f/_length : 0.0; 438 438 _d *= _inverse_length; 439 440 _d_invX = _d.x()!=0.0f ? _d/_d.x() : osg::Vec3(0.0f,0.0f,0.0f); 441 _d_invY = _d.y()!=0.0f ? _d/_d.y() : osg::Vec3(0.0f,0.0f,0.0f); 442 _d_invZ = _d.z()!=0.0f ? _d/_d.z() : osg::Vec3(0.0f,0.0f,0.0f); 439 443 } 440 444 … … 453 457 float _length; 454 458 float _inverse_length; 459 460 osg::Vec3 _d_invX; 461 osg::Vec3 _d_invY; 462 osg::Vec3 _d_invZ; 455 463 }; 456 464 … … 601 609 { 602 610 // clip s to xMin. 603 s = s+ (e-s)*(bb.xMin()-s.x())/(e.x()-s.x());611 s = s+_d_invX*(bb.xMin()-s.x()); 604 612 } 605 613 … … 607 615 { 608 616 // clip e to xMax. 609 e = s+ (e-s)*(bb.xMax()-s.x())/(e.x()-s.x());617 e = s+_d_invX*(bb.xMax()-s.x()); 610 618 } 611 619 } … … 618 626 { 619 627 // clip s to xMin. 620 e = s+ (e-s)*(bb.xMin()-s.x())/(e.x()-s.x());628 e = s+_d_invX*(bb.xMin()-s.x()); 621 629 } 622 630 … … 624 632 { 625 633 // clip e to xMax. 626 s = s+ (e-s)*(bb.xMax()-s.x())/(e.x()-s.x());634 s = s+_d_invX*(bb.xMax()-s.x()); 627 635 } 628 636 } … … 639 647 { 640 648 // clip s to yMin. 641 s = s+ (e-s)*(bb.yMin()-s.y())/(e.y()-s.y());649 s = s+_d_invY*(bb.yMin()-s.y()); 642 650 } 643 651 … … 645 653 { 646 654 // clip e to yMax. 647 e = s+ (e-s)*(bb.yMax()-s.y())/(e.y()-s.y());655 e = s+_d_invY*(bb.yMax()-s.y()); 648 656 } 649 657 } … … 656 664 { 657 665 // clip s to yMin. 658 e = s+ (e-s)*(bb.yMin()-s.y())/(e.y()-s.y());666 e = s+_d_invY*(bb.yMin()-s.y()); 659 667 } 660 668 … … 662 670 { 663 671 // clip e to yMax. 664 s = s+ (e-s)*(bb.yMax()-s.y())/(e.y()-s.y());672 s = s+_d_invY*(bb.yMax()-s.y()); 665 673 } 666 674 } … … 677 685 { 678 686 // clip s to zMin. 679 s = s+ (e-s)*(bb.zMin()-s.z())/(e.z()-s.z());687 s = s+_d_invZ*(bb.zMin()-s.z()); 680 688 } 681 689 … … 683 691 { 684 692 // clip e to zMax. 685 e = s+ (e-s)*(bb.zMax()-s.z())/(e.z()-s.z());693 e = s+_d_invZ*(bb.zMax()-s.z()); 686 694 } 687 695 } … … 694 702 { 695 703 // clip s to zMin. 696 e = s+ (e-s)*(bb.zMin()-s.z())/(e.z()-s.z());704 e = s+_d_invZ*(bb.zMin()-s.z()); 697 705 } 698 706 … … 700 708 { 701 709 // clip e to zMax. 702 s = s+ (e-s)*(bb.zMax()-s.z())/(e.z()-s.z());710 s = s+_d_invZ*(bb.zMax()-s.z()); 703 711 } 704 712 }
