Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits > Class Template Reference

#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< Methodm_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< SplitAxisTypem_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...
 

Detailed Description

template<typename TQualityEvaluator, typename Traits>
class ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >

Definition at line 297 of file KdTree.hpp.

Member Typedef Documentation

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::iterator = typename PointDataType::iterator

Definition at line 305 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointDataType = NodeDataType

Definition at line 302 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointGetter = typename PointDataType::PointGetter

Definition at line 306 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointListType = typename NodeDataType::PointListType

Definition at line 303 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::PointType = typename PointDataType::PointType

Definition at line 304 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::QualityEvaluator = TQualityEvaluator

Definition at line 316 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
using ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::SplitAxisType = typename NodeType::SplitAxisType

Definition at line 318 of file KdTree.hpp.

Member Enumeration Documentation

template<typename TQualityEvaluator , typename Traits >
enum ApproxMVBB::KdTree::SplitHeuristicPointData::Method : char
strong
Enumerator
MIDPOINT 
MEDIAN 
GEOMETRIC_MEAN 

Definition at line 308 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
enum ApproxMVBB::KdTree::SplitHeuristicPointData::SearchCriteria : char
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.

Constructor & Destructor Documentation

template<typename TQualityEvaluator , typename Traits >
ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::SplitHeuristicPointData ( )
inline

Definition at line 321 of file KdTree.hpp.

Member Function Documentation

template<typename TQualityEvaluator , typename Traits >
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::checkPosition ( AABB< Dimension > &  aabb)
inlineprivate

Definition at line 592 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeExtentRatio ( AABB< Dimension > &  aabb)
inlineprivate

Definition at line 640 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computePointRatio ( NodeDataType *  data)
inlineprivate

Definition at line 622 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeSplitPosition ( NodeType *  node,
unsigned int  tries = 1 
)
inlineprivate

Compute the split position and maybe the splitAxis

Definition at line 504 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeSplitRatio ( AABB< Dimension > &  aabb)
inlineprivate

Definition at line 633 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::computeStatistics ( )
inlineprivate

Definition at line 660 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
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.

template<typename TQualityEvaluator , typename Traits >
std::string ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::getStatisticsString ( )
inline

Definition at line 371 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
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.

template<typename TQualityEvaluator , typename Traits >
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::resetStatistics ( )
inline

Definition at line 361 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
void ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::updateSolution ( )
inlineprivate

Definition at line 605 of file KdTree.hpp.

Member Data Documentation

template<typename TQualityEvaluator , typename Traits >
std::size_t ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_allowSplitAboveNPoints = 100
private

Definition at line 712 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_avgExtentRatio = 0
private

Definition at line 673 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_avgPointRatio = 0
private

Definition at line 672 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_avgSplitRatio = 0
private

Definition at line 671 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestExtentRatio = 0
private

Definition at line 702 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
Method ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestMethod
private

Definition at line 703 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestPointRatio = 0
private

Definition at line 702 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestQuality = std::numeric_limits<PREC>::lowest()
private

Definition at line 701 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
SplitAxisType ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitAxis
private

Definition at line 705 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitPosition = 0.0
private

Definition at line 704 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitRatio = 0
private

Definition at line 702 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
iterator ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_bestSplitRightIt
private

Definition at line 700 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
ArrayStat<Dimension> ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_extent
private

Temp. values

Definition at line 679 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
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.

template<typename TQualityEvaluator , typename Traits >
bool ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_found = false
private

Definition at line 699 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
Method ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_method
private

Definition at line 692 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
std::vector<Method> ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_methods
private

Definition at line 709 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minExtent = 0.0
private

Definition at line 713 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minExtentRatio = 0.0
private

Definition at line 690 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_minPointRatio = 0.0
private

Definition at line 689 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
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.

template<typename TQualityEvaluator , typename Traits >
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.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_quality = 0.0
private

Definition at line 681 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
QualityEvaluator ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_qualityEval
private

Definition at line 676 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
SearchCriteria ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_searchCriteria
private

Definition at line 710 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
std::vector<SplitAxisType> ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitAxes
private

Fixed values

Definition at line 708 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
SplitAxisType ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitAxis
private

Definition at line 694 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
unsigned int ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitCalls = 0
private

Statistics

Definition at line 668 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
PREC ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitPosition = 0.0
private

Definition at line 693 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
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.

template<typename TQualityEvaluator , typename Traits >
iterator ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splitRightIt
private

Definition at line 680 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
unsigned int ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_splits = 0
private

Definition at line 670 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
unsigned int ApproxMVBB::KdTree::SplitHeuristicPointData< TQualityEvaluator, Traits >::m_tries = 0
private

Definition at line 669 of file KdTree.hpp.

template<typename TQualityEvaluator , typename Traits >
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.


The documentation for this class was generated from the following file:


asr_approx_mvbb
Author(s): Gassner Nikolai
autogenerated on Mon Jun 10 2019 12:38:09