Ignore:
Timestamp:
07/12/06 01:30:05 (18 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/KdTree.cpp

    r1108 r1122  
    9191        mBox.Include((*mi)->GetBox()); 
    9292  } 
    93  
    94         ProcessLeafObjects(NULL, leaf, NULL); 
    9593 
    9694  cout <<"KdTree Root Box:"<<mBox<<endl; 
     
    307305    mStat.objectRefs += objectsBack + objectsFront; 
    308306  } 
    309    
    310    ProcessLeafObjects(leaf, front, back); 
    311    
    312307 
    313308  delete leaf; 
     
    10941089 
    10951090 
    1096 void KdTree::ProcessLeafObjects(KdLeaf *parent, KdLeaf *front, KdLeaf *back) const 
    1097 { 
    1098         if (parent) 
    1099         { 
    1100                 // remove the parents from the set 
    1101                 ObjectContainer::const_iterator oit, oit_end = parent->mObjects.end(); 
    1102  
    1103                 for (oit = parent->mObjects.begin(); oit != oit_end; ++ oit) 
    1104                 { 
    1105                         Intersectable *object = *oit; 
    1106  
    1107                         set<KdLeaf *>::iterator kdit = object->mKdLeaves.find(parent); 
    1108  
    1109                         // remove parent leaf 
    1110                         if (kdit != object->mKdLeaves.end()) 
    1111                                 object->mKdLeaves.erase(kdit); 
    1112                 } 
    1113         } 
    1114  
    1115         //Intersectable::NewMail(); 
    1116  
    1117         if (front) 
    1118         { 
    1119                 // Add front to leaf kd cells 
    1120                 ObjectContainer::const_iterator oit, oit_end = front->mObjects.end(); 
    1121  
    1122                 for (oit = front->mObjects.begin(); oit != oit_end; ++ oit) 
    1123                 { 
    1124                         Intersectable *object = *oit; 
    1125                         object->mKdLeaves.insert(front); 
    1126                 } 
    1127         } 
    1128  
    1129         if (back) 
    1130         { 
    1131                 // Add back to leaf kd cells 
    1132                 ObjectContainer::const_iterator oit, oit_end = back->mObjects.end(); 
    1133  
    1134                 for (oit = back->mObjects.begin(); oit != oit_end; ++ oit) 
    1135                 { 
    1136                         Intersectable *object = *oit; 
    1137                         object->mKdLeaves.insert(back);  
    1138                 } 
    1139         } 
    1140  
    1141         // note: can find out about multiple objects only now after adding and deleting 
    1142         // finished  
    1143         if (front) 
    1144         { 
    1145                 // find objects from multiple kd-leaves 
    1146                 ObjectContainer::const_iterator oit, oit_end = front->mObjects.end(); 
    1147  
    1148                 for (oit = front->mObjects.begin(); oit != oit_end; ++ oit) 
    1149                 { 
    1150                         Intersectable *object = *oit; 
    1151  
    1152                         if (object->mKdLeaves.size() > 1) 
    1153                                 front->mMultipleObjects.push_back(object); 
    1154                 } 
    1155         } 
    1156  
    1157         if (back)  
    1158         { 
    1159                 // find objects from multiple kd-leaves 
    1160                 ObjectContainer::const_iterator oit, oit_end = back->mObjects.end(); 
    1161  
    1162                 for (oit = back->mObjects.begin(); oit != oit_end; ++ oit) 
    1163                 { 
    1164                         Intersectable *object = *oit; 
    1165  
    1166                         if (object->mKdLeaves.size() > 1) 
    1167                                 back->mMultipleObjects.push_back(object); 
    1168                 } 
    1169         } 
    1170          
    1171 } 
    1172  
    1173  
    1174 } 
     1091} 
Note: See TracChangeset for help on using the changeset viewer.