Changeset 1122 for GTP/trunk/Lib/Vis/Preprocessing/src/VspOspTree.cpp
- Timestamp:
- 07/12/06 01:30:05 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/VspOspTree.cpp
r1121 r1122 2826 2826 SplitObjects(splitPlane, leaf->mObjects, front->mObjects, back->mObjects); 2827 2827 2828 ProcessLeafObjects(back, leaf); 2829 ProcessLeafObjects(front, leaf); 2830 2828 ProcessLeafObjects(leaf, front, back); 2829 2831 2830 backData.mNode = back; 2832 2831 frontData.mNode = front; … … 3408 3407 3409 3408 3410 void OspTree::ProcessLeafObjects(KdLeaf *leaf, KdLeaf *parent) const 3411 { 3412 ObjectContainer::const_iterator oit, oit_end = leaf->mObjects.end(); 3413 3414 for (oit = leaf->mObjects.begin(); oit != oit_end; ++ oit) 3415 { 3416 Intersectable *object = *oit; 3417 3418 if (parent) 3419 { 3409 void OspTree::ProcessLeafObjects(KdLeaf *parent, KdLeaf *front, KdLeaf *back) const 3410 { 3411 if (parent) 3412 { 3413 // remove the parents from the set 3414 ObjectContainer::const_iterator oit, oit_end = parent->mObjects.end(); 3415 3416 for (oit = parent->mObjects.begin(); oit != oit_end; ++ oit) 3417 { 3418 Intersectable *object = *oit; 3419 3420 3420 set<KdLeaf *>::iterator kdit = object->mKdLeaves.find(parent); 3421 3421 … … 3424 3424 object->mKdLeaves.erase(kdit); 3425 3425 } 3426 3427 object->mKdLeaves.insert(leaf); 3428 3429 if (object->mKdLeaves.size() > 1) 3430 leaf->mMultipleObjects.push_back(object); 3431 } 3426 } 3427 3428 //Intersectable::NewMail(); 3429 3430 if (front) 3431 { 3432 // Add front to leaf kd cells 3433 ObjectContainer::const_iterator oit, oit_end = front->mObjects.end(); 3434 3435 for (oit = front->mObjects.begin(); oit != oit_end; ++ oit) 3436 { 3437 Intersectable *object = *oit; 3438 object->mKdLeaves.insert(front); 3439 } 3440 } 3441 3442 if (back) 3443 { 3444 // Add back to leaf kd cells 3445 ObjectContainer::const_iterator oit, oit_end = back->mObjects.end(); 3446 3447 for (oit = back->mObjects.begin(); oit != oit_end; ++ oit) 3448 { 3449 Intersectable *object = *oit; 3450 object->mKdLeaves.insert(back); 3451 } 3452 } 3453 3454 // note: can find out about multiple objects only now after adding and deleting 3455 // finished 3456 if (front) 3457 { 3458 // find objects from multiple kd-leaves 3459 ObjectContainer::const_iterator oit, oit_end = front->mObjects.end(); 3460 3461 for (oit = front->mObjects.begin(); oit != oit_end; ++ oit) 3462 { 3463 Intersectable *object = *oit; 3464 3465 if (object->mKdLeaves.size() > 1) 3466 front->mMultipleObjects.push_back(object); 3467 } 3468 } 3469 3470 if (back) 3471 { 3472 // find objects from multiple kd-leaves 3473 ObjectContainer::const_iterator oit, oit_end = back->mObjects.end(); 3474 3475 for (oit = back->mObjects.begin(); oit != oit_end; ++ oit) 3476 { 3477 Intersectable *object = *oit; 3478 3479 if (object->mKdLeaves.size() > 1) 3480 back->mMultipleObjects.push_back(object); 3481 } 3482 } 3483 3432 3484 } 3433 3485 … … 3702 3754 3703 3755 3704 mOspTree.ProcessLeafObjects( kdleaf, NULL);3756 mOspTree.ProcessLeafObjects(NULL, kdleaf, NULL); 3705 3757 3706 3758 // compute first split candidate
Note: See TracChangeset
for help on using the changeset viewer.