Changeset 181 for trunk/VUT/GtpVisibilityPreprocessor/src/KdTree.cpp
- Timestamp:
- 07/18/05 21:22:46 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/VUT/GtpVisibilityPreprocessor/src/KdTree.cpp
r177 r181 674 674 return NULL; 675 675 } 676 677 int 678 KdTree::FindNeighbors(KdNode *n, 679 vector<KdNode *> &neighbors, 680 bool onlyUnmailed 681 ) 682 { 683 stack<KdNode *> nodeStack; 684 685 nodeStack.push(mRoot); 686 687 AxisAlignedBox3 box = GetBox(n); 688 689 while (!nodeStack.empty()) { 690 KdNode *node = nodeStack.top(); 691 nodeStack.pop(); 692 if (node->IsLeaf()) { 693 if ( node != n && (!onlyUnmailed || !node->Mailed()) ) 694 neighbors.push_back(node); 695 } else { 696 KdInterior *interior = (KdInterior *)node; 697 if (interior->mPosition > box.Max(interior->mAxis)) 698 nodeStack.push(interior->mBack); 699 else 700 if (interior->mPosition < box.Min(interior->mAxis)) 701 nodeStack.push(interior->mFront); 702 else { 703 // random decision 704 nodeStack.push(interior->mBack); 705 nodeStack.push(interior->mFront); 706 } 707 } 708 } 709 710 return neighbors.size(); 711 }
Note: See TracChangeset
for help on using the changeset viewer.