#include <KdTree.hpp>
Public Types | |
enum | Method { MIDPOINT, MEDIAN, GEOMETRIC_MEAN } |
enum | SearchCriteria { FIND_FIRST, FIND_BEST } |
Public Member Functions | |
std::pair< NodeDataType *, NodeDataType * > | doSplit (NodeType *node, SplitAxisType &splitAxis, PREC &splitPosition) |
std::string | getStatisticsString () |
void | init (const std::initializer_list< Method > &m, unsigned int allowSplitAboveNPoints=100, PREC minExtent=0.0, SearchCriteria searchCriteria=SearchCriteria::FIND_BEST, const QualityEvaluator &qualityEval=QualityEvaluator(), PREC minSplitRatio=0.0, PREC minPointRatio=0.0, PREC minExtentRatio=0.0) |
m_searchCriteria (SearchCriteria::FIND_BEST) | |
void | resetStatistics () |
SplitHeuristicPointData () | |
Private Member Functions | |
bool | checkPosition (AABB< Dimension > &aabb) |
PREC | computeExtentRatio (AABB< Dimension > &aabb) |
PREC | computePointRatio (NodeDataType *data) |
bool | computeSplitPosition (NodeType *node, unsigned int tries=1) |
PREC | computeSplitRatio (AABB< Dimension > &aabb) |
void | computeStatistics () |
void | updateSolution () |
Private Attributes | |
std::size_t | m_allowSplitAboveNPoints = 100 |
PREC | m_avgExtentRatio = 0 |
PREC | m_avgPointRatio = 0 |
PREC | m_avgSplitRatio = 0 |
PREC | m_bestExtentRatio = 0 |
Method | m_bestMethod |
PREC | m_bestPointRatio = 0 |
PREC | m_bestQuality = std::numeric_limits<PREC>::lowest() |
SplitAxisType | m_bestSplitAxis |
PREC | m_bestSplitPosition = 0.0 |
PREC | m_bestSplitRatio = 0 |
iterator | m_bestSplitRightIt |
ArrayStat< Dimension > | m_extent |
PREC | m_extentRatio = 0 |
minimal ratio of min/max extent of the left and right splitted box, in range (0,1] ; | |
bool | m_found = false |
Method | m_method |
std::vector< Method > | m_methods |
PREC | m_minExtent = 0.0 |
PREC | m_minExtentRatio = 0.0 |
PREC | m_minPointRatio = 0.0 |
PREC | m_minSplitRatio = 0.0 |
PREC | m_pointRatio = 0 |
ratio of points in left and right splittet box, in range [0,0.5] | |
PREC | m_quality = 0.0 |
QualityEvaluator | m_qualityEval |
SearchCriteria | m_searchCriteria |
std::vector< SplitAxisType > | m_splitAxes |
SplitAxisType | m_splitAxis |
unsigned int | m_splitCalls = 0 |
PREC | m_splitPosition = 0.0 |
PREC | m_splitRatio = 0 |
ratio of the splitting plane in range (0,0.5) | |
iterator | m_splitRightIt |
unsigned int | m_splits = 0 |
unsigned int | m_tries = 0 |
bool | m_wasLastTry = false |
Flag which tells if the best values have just been updated when we finished the opt. loop. |
Definition at line 297 of file KdTree.hpp.
enum ApproxMVBB::KdTree::SplitHeuristicPointData::Method |
Definition at line 308 of file KdTree.hpp.
enum ApproxMVBB::KdTree::SplitHeuristicPointData::SearchCriteria |
Search Criterias how to find the best split axis which fullfills the constraints, minExtent etc. FIND_BEST has not been implemented so far, because we shuffle the point array constantly while searching!
Definition at line 314 of file KdTree.hpp.
ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::SplitHeuristicPointData | ( | ) | [inline] |
Definition at line 321 of file KdTree.hpp.
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::checkPosition | ( | AABB< Dimension > & | aabb | ) | [inline, private] |
Definition at line 592 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeExtentRatio | ( | AABB< Dimension > & | aabb | ) | [inline, private] |
Definition at line 640 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computePointRatio | ( | NodeDataType * | data | ) | [inline, private] |
Definition at line 622 of file KdTree.hpp.
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeSplitPosition | ( | NodeType * | node, |
unsigned int | tries = 1 |
||
) | [inline, private] |
Compute the split position and maybe the splitAxis
Definition at line 504 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeSplitRatio | ( | AABB< Dimension > & | aabb | ) | [inline, private] |
Definition at line 633 of file KdTree.hpp.
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeStatistics | ( | ) | [inline, private] |
Definition at line 660 of file KdTree.hpp.
std::pair<NodeDataType *, NodeDataType * > ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::doSplit | ( | NodeType * | node, |
SplitAxisType & | splitAxis, | ||
PREC & | splitPosition | ||
) | [inline] |
Compute the split with the set heuristic and return the two new node data types if a split happened otherwise (nullptr)
Definition at line 385 of file KdTree.hpp.
std::string ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::getStatisticsString | ( | ) | [inline] |
Definition at line 371 of file KdTree.hpp.
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::init | ( | const std::initializer_list< Method > & | m, |
unsigned int | allowSplitAboveNPoints = 100 , |
||
PREC | minExtent = 0.0 , |
||
SearchCriteria | searchCriteria = SearchCriteria::FIND_BEST , |
||
const QualityEvaluator & | qualityEval = QualityEvaluator() , |
||
PREC | minSplitRatio = 0.0 , |
||
PREC | minPointRatio = 0.0 , |
||
PREC | minExtentRatio = 0.0 |
||
) | [inline] |
Definition at line 328 of file KdTree.hpp.
ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_searchCriteria | ( | SearchCriteria::FIND_BEST | ) | [inline] |
Definition at line 321 of file KdTree.hpp.
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::resetStatistics | ( | ) | [inline] |
Definition at line 361 of file KdTree.hpp.
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::updateSolution | ( | ) | [inline, private] |
Definition at line 605 of file KdTree.hpp.
std::size_t ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_allowSplitAboveNPoints = 100 [private] |
Definition at line 712 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_avgExtentRatio = 0 [private] |
Definition at line 673 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_avgPointRatio = 0 [private] |
Definition at line 672 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_avgSplitRatio = 0 [private] |
Definition at line 671 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestExtentRatio = 0 [private] |
Definition at line 702 of file KdTree.hpp.
Method ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestMethod [private] |
Definition at line 703 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestPointRatio = 0 [private] |
Definition at line 702 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestQuality = std::numeric_limits<PREC>::lowest() [private] |
Definition at line 701 of file KdTree.hpp.
SplitAxisType ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitAxis [private] |
Definition at line 705 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitPosition = 0.0 [private] |
Definition at line 704 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitRatio = 0 [private] |
Definition at line 702 of file KdTree.hpp.
iterator ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitRightIt [private] |
Definition at line 700 of file KdTree.hpp.
ArrayStat<Dimension> ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_extent [private] |
Temp. values
Definition at line 679 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_extentRatio = 0 [private] |
minimal ratio of min/max extent of the left and right splitted box, in range (0,1] ;
Definition at line 685 of file KdTree.hpp.
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_found = false [private] |
Definition at line 699 of file KdTree.hpp.
Method ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_method [private] |
Definition at line 692 of file KdTree.hpp.
std::vector<Method> ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_methods [private] |
Definition at line 709 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minExtent = 0.0 [private] |
Definition at line 713 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minExtentRatio = 0.0 [private] |
Definition at line 690 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minPointRatio = 0.0 [private] |
Definition at line 689 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minSplitRatio = 0.0 [private] |
Min values to allow a split
Definition at line 688 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_pointRatio = 0 [private] |
ratio of points in left and right splittet box, in range [0,0.5]
Definition at line 684 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_quality = 0.0 [private] |
Definition at line 681 of file KdTree.hpp.
QualityEvaluator ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_qualityEval [private] |
Definition at line 676 of file KdTree.hpp.
SearchCriteria ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_searchCriteria [private] |
Definition at line 710 of file KdTree.hpp.
std::vector<SplitAxisType> ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitAxes [private] |
Fixed values
Definition at line 708 of file KdTree.hpp.
SplitAxisType ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitAxis [private] |
Definition at line 694 of file KdTree.hpp.
unsigned int ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitCalls = 0 [private] |
Statistics
Definition at line 668 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitPosition = 0.0 [private] |
Definition at line 693 of file KdTree.hpp.
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitRatio = 0 [private] |
ratio of the splitting plane in range (0,0.5)
Definition at line 683 of file KdTree.hpp.
iterator ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitRightIt [private] |
Definition at line 680 of file KdTree.hpp.
unsigned int ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splits = 0 [private] |
Definition at line 670 of file KdTree.hpp.
unsigned int ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_tries = 0 [private] |
Definition at line 669 of file KdTree.hpp.
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_wasLastTry = false [private] |
Flag which tells if the best values have just been updated when we finished the opt. loop.
Best values
Definition at line 698 of file KdTree.hpp.