Changeset 1830 for GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
- Timestamp:
- 11/29/06 22:43:51 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
r1827 r1830 2541 2541 SplitQueue tempQueue; 2542 2542 tempQueue.Push(firstCandidate); 2543 2543 2544 while (!tempQueue.Empty()) 2544 2545 { … … 2549 2550 dynamic_cast<BvhSubdivisionCandidate *>(candidate); 2550 2551 2551 const bool globalCriteriaMet = GlobalTerminationCriteriaMet(bsc->mParentData);2552 2553 2552 if (!InitialTerminationCriteriaMet(bsc->mParentData)) 2554 2553 { 2554 const bool globalCriteriaMet = GlobalTerminationCriteriaMet(bsc->mParentData); 2555 2555 2556 BvhNode *node = Subdivide(tempQueue, bsc, globalCriteriaMet); 2556 2557 … … 2560 2561 else // initial preprocessing finished for this candidate 2561 2562 { 2562 // add to "real" traversal queue2563 // add to candidate container 2563 2564 candidateContainer.push_back(bsc); 2564 2565 } … … 2575 2576 ObjectContainer::const_iterator oit, oit_end = objects->end(); 2576 2577 2577 /*for (oit = objects->begin(); oit != objects->end(); ++ oit)2578 {2579 cout << (*oit)->GetBox().SurfaceArea() << " ";2580 }*/2581 2582 2578 float maxAreaDiff = -1.0f; 2583 2579 2584 2580 ObjectContainer::const_iterator backObjectsStart = objects->begin(); 2585 int dummy = 0; 2586 for (oit = objects->begin(); oit != (objects->end() - 1); ++ oit , ++ dummy)2581 2582 for (oit = objects->begin(); oit != (objects->end() - 1); ++ oit) 2587 2583 { 2588 2584 Intersectable *objS = *oit; … … 2595 2591 { 2596 2592 maxAreaDiff = areaDiff; 2597 //cout << "maxAreaDiff : " << maxAreaDiff << " " << dummy << " " << objects->size() - dummy << endl;2598 2593 backObjectsStart = oit + 1; 2599 2594 } … … 2612 2607 } 2613 2608 2614 cout << "front: " << (int)frontObjects.size() << " back " << (int)backObjects.size() << " " << backObjects.front()->GetBox().SurfaceArea() - frontObjects.back()->GetBox().SurfaceArea() << endl; 2609 cout << "front: " << (int)frontObjects.size() << " back: " << (int)backObjects.size() << " " 2610 << backObjects.front()->GetBox().SurfaceArea() - frontObjects.back()->GetBox().SurfaceArea() << endl; 2615 2611 } 2616 2612 … … 2621 2617 const float areaLarge = largeObj->GetBox().SurfaceArea(); 2622 2618 2623 return area Small/ (areaLarge - areaSmall + Limits::Small);2619 return areaLarge / (areaLarge - areaSmall + Limits::Small); 2624 2620 } 2625 2621 … … 2627 2623 bool BvHierarchy::InitialTerminationCriteriaMet(const BvhTraversalData &tData) const 2628 2624 { 2629 return (0 2625 const bool terminationCriteriaMet = 2626 (0 2630 2627 || ((int)tData.mNode->mObjects.size() < mInitialMinObjects) 2631 2628 || (tData.mNode->mObjects.back()->GetBox().SurfaceArea() < mInitialMinArea) 2632 2629 || (AreaRatio(tData.mNode->mObjects.front(), tData.mNode->mObjects.back()) > mInitialMaxAreaRatio) 2633 2630 ); 2631 2632 cout << "criteria met: " << terminationCriteriaMet << " " << (int)tData.mNode->mObjects.size() << " " << mInitialMinObjects << endl 2633 << AreaRatio(tData.mNode->mObjects.front(), tData.mNode->mObjects.back()) << " " << mInitialMaxAreaRatio << endl 2634 << tData.mNode->mObjects.back()->GetBox().SurfaceArea() << " " << mInitialMinArea << endl; 2635 2636 return terminationCriteriaMet; 2634 2637 } 2635 2638
Note: See TracChangeset
for help on using the changeset viewer.