#include <KdTree.hpp>
Public Types | |
using | iterator = typename PointDataType::iterator |
enum | Method : char { Method::MIDPOINT, Method::MEDIAN, Method::GEOMETRIC_MEAN } |
using | PointDataType = NodeDataType |
using | PointGetter = typename PointDataType::PointGetter |
using | PointListType = typename NodeDataType::PointListType |
using | PointType = typename PointDataType::PointType |
using | QualityEvaluator = TQualityEvaluator |
enum | SearchCriteria : char { SearchCriteria::FIND_FIRST, SearchCriteria::FIND_BEST } |
using | SplitAxisType = typename NodeType::SplitAxisType |
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) |
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] ; More... | |
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] More... | |
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) More... | |
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. More... | |
Definition at line 297 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::iterator = typename PointDataType::iterator |
Definition at line 305 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointDataType = NodeDataType |
Definition at line 302 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointGetter = typename PointDataType::PointGetter |
Definition at line 306 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointListType = typename NodeDataType::PointListType |
Definition at line 303 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointType = typename PointDataType::PointType |
Definition at line 304 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::QualityEvaluator = TQualityEvaluator |
Definition at line 316 of file KdTree.hpp.
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::SplitAxisType = typename NodeType::SplitAxisType |
Definition at line 318 of file KdTree.hpp.
|
strong |
Enumerator | |
---|---|
MIDPOINT | |
MEDIAN | |
GEOMETRIC_MEAN |
Definition at line 308 of file KdTree.hpp.
|
strong |
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!
Enumerator | |
---|---|
FIND_FIRST | |
FIND_BEST |
Definition at line 314 of file KdTree.hpp.
|
inline |
Definition at line 321 of file KdTree.hpp.
|
inlineprivate |
Definition at line 592 of file KdTree.hpp.
|
inlineprivate |
Definition at line 640 of file KdTree.hpp.
|
inlineprivate |
Definition at line 622 of file KdTree.hpp.
|
inlineprivate |
Compute the split position and maybe the splitAxis
Definition at line 504 of file KdTree.hpp.
|
inlineprivate |
Definition at line 633 of file KdTree.hpp.
|
inlineprivate |
Definition at line 660 of file KdTree.hpp.
|
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.
|
inline |
Definition at line 371 of file KdTree.hpp.
|
inline |
Definition at line 328 of file KdTree.hpp.
|
inline |
Definition at line 361 of file KdTree.hpp.
|
inlineprivate |
Definition at line 605 of file KdTree.hpp.
|
private |
Definition at line 712 of file KdTree.hpp.
|
private |
Definition at line 673 of file KdTree.hpp.
|
private |
Definition at line 672 of file KdTree.hpp.
|
private |
Definition at line 671 of file KdTree.hpp.
|
private |
Definition at line 702 of file KdTree.hpp.
|
private |
Definition at line 703 of file KdTree.hpp.
|
private |
Definition at line 702 of file KdTree.hpp.
|
private |
Definition at line 701 of file KdTree.hpp.
|
private |
Definition at line 705 of file KdTree.hpp.
|
private |
Definition at line 704 of file KdTree.hpp.
|
private |
Definition at line 702 of file KdTree.hpp.
|
private |
Definition at line 700 of file KdTree.hpp.
|
private |
Temp. values
Definition at line 679 of file KdTree.hpp.
|
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.
|
private |
Definition at line 699 of file KdTree.hpp.
|
private |
Definition at line 692 of file KdTree.hpp.
|
private |
Definition at line 709 of file KdTree.hpp.
|
private |
Definition at line 713 of file KdTree.hpp.
|
private |
Definition at line 690 of file KdTree.hpp.
|
private |
Definition at line 689 of file KdTree.hpp.
|
private |
Min values to allow a split
Definition at line 688 of file KdTree.hpp.
|
private |
ratio of points in left and right splittet box, in range [0,0.5]
Definition at line 684 of file KdTree.hpp.
|
private |
Definition at line 681 of file KdTree.hpp.
|
private |
Definition at line 676 of file KdTree.hpp.
|
private |
Definition at line 710 of file KdTree.hpp.
|
private |
Fixed values
Definition at line 708 of file KdTree.hpp.
|
private |
Definition at line 694 of file KdTree.hpp.
|
private |
Statistics
Definition at line 668 of file KdTree.hpp.
|
private |
Definition at line 693 of file KdTree.hpp.
|
private |
ratio of the splitting plane in range (0,0.5)
Definition at line 683 of file KdTree.hpp.
|
private |
Definition at line 680 of file KdTree.hpp.
|
private |
Definition at line 670 of file KdTree.hpp.
|
private |
Definition at line 669 of file KdTree.hpp.
|
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.