occ
Loading...
Searching...
No Matches
occ::descriptors::SortedKDistances< K > Class Template Reference

#include <sorted_k_distances.h>

Public Member Functions

 SortedKDistances ()
 
void clear ()
 
bool try_insert (double distance)
 
int try_insert_batch4 (const double *distances)
 
int try_insert_batch2 (const double *distances)
 
int try_insert_sorted_batch4 (double d0, double d1, double d2, double d3)
 
double operator[] (size_t idx) const
 
Eigen::Map< const Eigen::ArrayXd > as_array (int k) const
 
const double * raw_data () const
 
bool would_insert (double distance) const
 
double worst_acceptable () const
 
void reserve (size_t) const
 

Static Public Member Functions

static constexpr const char * simd_type ()
 

Public Attributes

template<int N = K>
std::enable_if< N<=4, bool >::type try_insert_specialized(double distance) { if constexpr(K==1) { if(m_size==0||distance< m_data[0]) { m_data[0]=distance;m_size=1;return true;} return false;} else if constexpr(K==2) { if(m_size==0) { m_data[0]=distance;m_size=1;return true;} else if(m_size==1) { if(distance< m_data[0]) { m_data[1]=m_data[0];m_data[0]=distance;} else { m_data[1]=distance;} m_size=2;return true;} else if(distance< m_data[1]) { if(distance< m_data[0]) { m_data[1]=m_data[0];m_data[0]=distance;} else { m_data[1]=distance;} return true;} return false;} else { return try_insert(distance);} } constexpr size_t size() const { return static_cast< size_t >(m_size);} constexpr bool empty() const { return m_size==0;} double back() const { return m_size > m_data [m_size - 1]: std::numeric_limits<double>::infinity()
 

Constructor & Destructor Documentation

◆ SortedKDistances()

template<int K>
occ::descriptors::SortedKDistances< K >::SortedKDistances ( )
inline

Member Function Documentation

◆ as_array()

template<int K>
Eigen::Map< const Eigen::ArrayXd > occ::descriptors::SortedKDistances< K >::as_array ( int  k) const
inline

◆ clear()

template<int K>
void occ::descriptors::SortedKDistances< K >::clear ( )
inline

◆ operator[]()

template<int K>
double occ::descriptors::SortedKDistances< K >::operator[] ( size_t  idx) const
inline

◆ raw_data()

template<int K>
const double * occ::descriptors::SortedKDistances< K >::raw_data ( ) const
inline

◆ reserve()

template<int K>
void occ::descriptors::SortedKDistances< K >::reserve ( size_t  ) const
inline

◆ simd_type()

template<int K>
static constexpr const char * occ::descriptors::SortedKDistances< K >::simd_type ( )
inlinestaticconstexpr

◆ try_insert()

template<int K>
bool occ::descriptors::SortedKDistances< K >::try_insert ( double  distance)
inline

◆ try_insert_batch2()

template<int K>
int occ::descriptors::SortedKDistances< K >::try_insert_batch2 ( const double *  distances)
inline

◆ try_insert_batch4()

template<int K>
int occ::descriptors::SortedKDistances< K >::try_insert_batch4 ( const double *  distances)
inline

◆ try_insert_sorted_batch4()

template<int K>
int occ::descriptors::SortedKDistances< K >::try_insert_sorted_batch4 ( double  d0,
double  d1,
double  d2,
double  d3 
)
inline

◆ worst_acceptable()

template<int K>
double occ::descriptors::SortedKDistances< K >::worst_acceptable ( ) const
inline

◆ would_insert()

template<int K>
bool occ::descriptors::SortedKDistances< K >::would_insert ( double  distance) const
inline

Member Data Documentation

◆ m_data

template<int K>
template<int N = K>
std::enable_if<N <= 4, bool>::type try_insert_specialized(double distance) { if constexpr (K == 1) { if (m_size == 0 || distance < m_data[0]) { m_data[0] = distance; m_size = 1; return true; } return false; } else if constexpr (K == 2) { if (m_size == 0) { m_data[0] = distance; m_size = 1; return true; } else if (m_size == 1) { if (distance < m_data[0]) { m_data[1] = m_data[0]; m_data[0] = distance; } else { m_data[1] = distance; } m_size = 2; return true; } else if (distance < m_data[1]) { if (distance < m_data[0]) { m_data[1] = m_data[0]; m_data[0] = distance; } else { m_data[1] = distance; } return true; } return false; } else { return try_insert(distance); } } constexpr size_t size() const { return static_cast<size_t>(m_size); } constexpr bool empty() const { return m_size == 0; } double back() const { return m_size > occ::descriptors::SortedKDistances< K >::m_data[m_size - 1]
inline

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