ACF $AcfVersion:0$
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES > Class Template Reference

Implementation of RTree, a multidimensional bounding rectangle tree. More...

#include <RTree.h>

Classes

struct  Branch
 May be data or may be another subtree The parents level determines this. More...
 
class  Iterator
 Iterator is not remove safe. More...
 
struct  ListNode
 A link list of nodes for reinsertion after a delete operation. More...
 
struct  Node
 Node for each branch level. More...
 
struct  PartitionVars
 Variables for finding a split partition. More...
 
struct  Rect
 Minimal bounding rectangle (n-dimensional) More...
 

Public Types

enum  { MAXNODES = TMAXNODES , MINNODES = TMINNODES }
 

Public Member Functions

 RTree ()
 
 RTree (const RTree &other)
 
virtual ~RTree ()
 
void Insert (const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], const DATATYPE &a_dataId)
 Insert entry.
 
void Remove (const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], const DATATYPE &a_dataId)
 Remove entry.
 
template<typename Func >
int Search (const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], Func &&callback) const
 Find all within search rectangle.
 
void RemoveAll ()
 Remove all entries from tree.
 
int Count ()
 Count the data elements in this container. This is slow as no internal counter is maintained.
 
bool Load (const char *a_fileName)
 Load tree contents from file.
 
bool Load (RTFileStream &a_stream)
 Load tree contents from stream.
 
bool Save (const char *a_fileName)
 Save tree contents to file.
 
bool Save (RTFileStream &a_stream)
 Save tree contents to stream.
 
void GetFirst (Iterator &a_it)
 Get 'first' for iteration.
 
void GetNext (Iterator &a_it)
 Get Next for iteration.
 
bool IsNull (Iterator &a_it)
 Is iterator NULL, or at end?
 
DATATYPE & GetAt (Iterator &a_it)
 Get object at iterator position.
 

Protected Member Functions

NodeAllocNode ()
 
void FreeNode (Node *a_node)
 
void InitNode (Node *a_node)
 
void InitRect (Rect *a_rect)
 
bool InsertRectRec (const Branch &a_branch, Node *a_node, Node **a_newNode, int a_level)
 
bool InsertRect (const Branch &a_branch, Node **a_root, int a_level)
 
Rect NodeCover (Node *a_node)
 
bool AddBranch (const Branch *a_branch, Node *a_node, Node **a_newNode)
 
void DisconnectBranch (Node *a_node, int a_index)
 
int PickBranch (const Rect *a_rect, Node *a_node)
 
Rect CombineRect (const Rect *a_rectA, const Rect *a_rectB)
 
void SplitNode (Node *a_node, const Branch *a_branch, Node **a_newNode)
 
ELEMTYPEREAL RectSphericalVolume (Rect *a_rect)
 
ELEMTYPEREAL RectVolume (Rect *a_rect)
 
ELEMTYPEREAL CalcRectVolume (Rect *a_rect)
 
void GetBranches (Node *a_node, const Branch *a_branch, PartitionVars *a_parVars)
 
void ChoosePartition (PartitionVars *a_parVars, int a_minFill)
 
void LoadNodes (Node *a_nodeA, Node *a_nodeB, PartitionVars *a_parVars)
 
void InitParVars (PartitionVars *a_parVars, int a_maxRects, int a_minFill)
 
void PickSeeds (PartitionVars *a_parVars)
 
void Classify (int a_index, int a_group, PartitionVars *a_parVars)
 
bool RemoveRect (Rect *a_rect, const DATATYPE &a_id, Node **a_root)
 
bool RemoveRectRec (Rect *a_rect, const DATATYPE &a_id, Node *a_node, ListNode **a_listNode)
 
ListNodeAllocListNode ()
 
void FreeListNode (ListNode *a_listNode)
 
bool Overlap (Rect *a_rectA, Rect *a_rectB) const
 
void ReInsert (Node *a_node, ListNode **a_listNode)
 
template<typename Func >
bool Search (Node *a_node, Rect *a_rect, int &a_foundCount, Func &&callback) const
 
void RemoveAllRec (Node *a_node)
 
void Reset ()
 
void CountRec (Node *a_node, int &a_count)
 
bool SaveRec (Node *a_node, RTFileStream &a_stream)
 
bool LoadRec (Node *a_node, RTFileStream &a_stream)
 
void CopyRec (Node *current, Node *other)
 

Protected Attributes

Nodem_root
 Root of tree.
 
ELEMTYPEREAL m_unitSphereVolume
 Unit sphere constant for required number of dimensions.
 

Detailed Description

template<class DATATYPE, class ELEMTYPE, int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
class RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >

Implementation of RTree, a multidimensional bounding rectangle tree.

Example usage: For a 3-dimensional tree use RTree<Object*, float, 3> myTree;

This modified, templated C++ version by Greg Douglas at Auran (http://www.auran.com)

DATATYPE Referenced data, should be int, void*, obj* etc. no larger than sizeof<void*> and simple type ELEMTYPE Type of element such as int or float NUMDIMS Number of dimensions such as 2 or 3 ELEMTYPEREAL Type of element that allows fractional and large values such as float or double, for use in volume calcs

NOTES: Inserting and removing data requires the knowledge of its constant Minimal Bounding Rectangle. This version uses new/delete for nodes, I recommend using a fixed size allocator for efficiency. Instead of using a callback function for returned results, I recommend and efficient pre-sized, grow-only memory array similar to MFC CArray or STL Vector for returning search query result.

Definition at line 48 of file RTree.h.

Member Enumeration Documentation

◆ anonymous enum

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
anonymous enum
Enumerator
MAXNODES 

Max elements in node.

MINNODES 

Min elements in node.

Definition at line 60 of file RTree.h.

Constructor & Destructor Documentation

◆ RTree() [1/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RTree ( )

Definition at line 449 of file RTree.h.

◆ RTree() [2/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RTree ( const RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES > &  other)

◆ ~RTree()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::~RTree ( )
virtual

Definition at line 479 of file RTree.h.

Member Function Documentation

◆ AddBranch()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::AddBranch ( const Branch a_branch,
Node a_node,
Node **  a_newNode 
)
protected

◆ AllocListNode()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::ListNode * RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::AllocListNode ( )
protected

Definition at line 887 of file RTree.h.

◆ AllocNode()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Node * RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::AllocNode ( )
protected

Definition at line 858 of file RTree.h.

◆ CalcRectVolume()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
ELEMTYPEREAL RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::CalcRectVolume ( Rect a_rect)
protected

Definition at line 1242 of file RTree.h.

◆ ChoosePartition()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::ChoosePartition ( PartitionVars a_parVars,
int  a_minFill 
)
protected

◆ Classify()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Classify ( int  a_index,
int  a_group,
PartitionVars a_parVars 
)
protected

◆ CombineRect()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Rect RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::CombineRect ( const Rect a_rectA,
const Rect a_rectB 
)
protected

◆ CopyRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::CopyRec ( Node current,
Node other 
)
protected

◆ Count()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
int RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Count ( )

Count the data elements in this container. This is slow as no internal counter is maintained.

Definition at line 560 of file RTree.h.

◆ CountRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::CountRec ( Node a_node,
int &  a_count 
)
protected

◆ DisconnectBranch()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::DisconnectBranch ( Node a_node,
int  a_index 
)
protected

◆ FreeListNode()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::FreeListNode ( ListNode a_listNode)
protected

Definition at line 898 of file RTree.h.

◆ FreeNode()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::FreeNode ( Node a_node)
protected

Definition at line 872 of file RTree.h.

◆ GetAt()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
DATATYPE & RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::GetAt ( Iterator a_it)
inline

Get object at iterator position.

Definition at line 269 of file RTree.h.

◆ GetBranches()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::GetBranches ( Node a_node,
const Branch a_branch,
PartitionVars a_parVars 
)
protected

◆ GetFirst()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::GetFirst ( Iterator a_it)
inline

◆ GetNext()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::GetNext ( Iterator a_it)
inline

Get Next for iteration.

Definition at line 263 of file RTree.h.

◆ InitNode()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::InitNode ( Node a_node)
protected

◆ InitParVars()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::InitParVars ( PartitionVars a_parVars,
int  a_maxRects,
int  a_minFill 
)
protected

◆ InitRect()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::InitRect ( Rect a_rect)
protected

◆ Insert()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Insert ( const ELEMTYPE  a_min[NUMDIMS],
const ELEMTYPE  a_max[NUMDIMS],
const DATATYPE &  a_dataId 
)

◆ InsertRect()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::InsertRect ( const Branch a_branch,
Node **  a_root,
int  a_level 
)
protected

◆ InsertRectRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::InsertRectRec ( const Branch a_branch,
Node a_node,
Node **  a_newNode,
int  a_level 
)
protected

◆ IsNull()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::IsNull ( Iterator a_it)
inline

Is iterator NULL, or at end?

Definition at line 266 of file RTree.h.

References RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Iterator::IsNull().

◆ Load() [1/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Load ( const char *  a_fileName)

Load tree contents from file.

Definition at line 588 of file RTree.h.

References RTFileStream::Close(), and RTFileStream::OpenRead().

◆ Load() [2/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Load ( RTFileStream a_stream)

Load tree contents from stream.

Definition at line 608 of file RTree.h.

References RTFileStream::Read().

◆ LoadNodes()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::LoadNodes ( Node a_nodeA,
Node a_nodeB,
PartitionVars a_parVars 
)
protected

◆ LoadRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::LoadRec ( Node a_node,
RTFileStream a_stream 
)
protected

◆ NodeCover()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Rect RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::NodeCover ( Node a_node)
protected

◆ Overlap()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Overlap ( Rect a_rectA,
Rect a_rectB 
) const
protected

◆ PickBranch()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
int RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::PickBranch ( const Rect a_rect,
Node a_node 
)
protected

◆ PickSeeds()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::PickSeeds ( PartitionVars a_parVars)
protected

◆ RectSphericalVolume()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
ELEMTYPEREAL RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RectSphericalVolume ( Rect a_rect)
protected

◆ RectVolume()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
ELEMTYPEREAL RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RectVolume ( Rect a_rect)
protected

◆ ReInsert()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::ReInsert ( Node a_node,
ListNode **  a_listNode 
)
protected

◆ Remove()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Remove ( const ELEMTYPE  a_min[NUMDIMS],
const ELEMTYPE  a_max[NUMDIMS],
const DATATYPE &  a_dataId 
)

Remove entry.

Parameters
a_minMin of bounding rect
a_maxMax of bounding rect
a_dataIdPositive Id of data. Maybe zero, but negative numbers not allowed.

Definition at line 510 of file RTree.h.

References RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Rect::m_max, and RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Rect::m_min.

◆ RemoveAll()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RemoveAll ( )

Remove all entries from tree.

Definition at line 817 of file RTree.h.

◆ RemoveAllRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RemoveAllRec ( Node a_node)
protected

◆ RemoveRect()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RemoveRect ( Rect a_rect,
const DATATYPE &  a_id,
Node **  a_root 
)
protected

◆ RemoveRectRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::RemoveRectRec ( Rect a_rect,
const DATATYPE &  a_id,
Node a_node,
ListNode **  a_listNode 
)
protected

◆ Reset()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Reset ( )
protected

Definition at line 828 of file RTree.h.

◆ Save() [1/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Save ( const char *  a_fileName)

Save tree contents to file.

Definition at line 738 of file RTree.h.

References RTFileStream::Close(), and RTFileStream::OpenWrite().

◆ Save() [2/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Save ( RTFileStream a_stream)

Save tree contents to stream.

Definition at line 755 of file RTree.h.

References RTFileStream::Write().

◆ SaveRec()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::SaveRec ( Node a_node,
RTFileStream a_stream 
)
protected

◆ Search() [1/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
template<typename Func >
int RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Search ( const ELEMTYPE  a_min[NUMDIMS],
const ELEMTYPE  a_max[NUMDIMS],
Func &&  callback 
) const

Find all within search rectangle.

Parameters
a_minMin of search bounding rect
a_maxMax of search bounding rect
a_searchResultSearch result array. Caller should set grow size. Function will reset, not append to array.
resultCallbackCallback function to return result. Callback should accept an object of DATATYPE and return 'true' to continue searching
Returns
Returns the number of entries found

Definition at line 533 of file RTree.h.

References RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Rect::m_max, and RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Rect::m_min.

◆ Search() [2/2]

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
template<typename Func >
bool RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::Search ( Node a_node,
Rect a_rect,
int &  a_foundCount,
Func &&  callback 
) const
protected

◆ SplitNode()

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL , int TMAXNODES, int TMINNODES>
void RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::SplitNode ( Node a_node,
const Branch a_branch,
Node **  a_newNode 
)
protected

Member Data Documentation

◆ m_root

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
Node* RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::m_root
protected

◆ m_unitSphereVolume

template<class DATATYPE , class ELEMTYPE , int NUMDIMS, class ELEMTYPEREAL = ELEMTYPE, int TMAXNODES = 8, int TMINNODES = TMAXNODES / 2>
ELEMTYPEREAL RTree< DATATYPE, ELEMTYPE, NUMDIMS, ELEMTYPEREAL, TMAXNODES, TMINNODES >::m_unitSphereVolume
protected

Unit sphere constant for required number of dimensions.

Definition at line 366 of file RTree.h.


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