16#if !defined(OPENNURBS_RTREE_INC_)
17#define OPENNURBS_RTREE_INC_
56#define ON_RTree_MIN_NODE_COUNT 2
57#define ON_RTree_MAX_NODE_COUNT 6
147 void DeallocateAll();
153 size_t SizeOf()
const;
159 size_t SizeOfUnusedBuffer()
const;
348 enum { MAX_STACK = 32 };
356 bool PushChildren(
struct StackElement* sp,
bool bFirstChild);
379 bool CreateMeshFaceTree(
const class ON_Mesh* mesh );
400 bool Insert(
const double a_min[3],
const double a_max[3],
void* a_element_id);
401 bool Insert(
const double a_min[3],
const double a_max[3],
int a_element_id);
402 bool Insert2d(
const double a_min[2],
const double a_max[2],
void* a_element_id);
403 bool Insert2d(
const double a_min[2],
const double a_max[2],
int a_element_id);
424 bool Remove(
const double a_min[3],
const double a_max[3],
void* a_elementId);
425 bool Remove(
const double a_min[3],
const double a_max[3],
int a_elementId);
426 bool Remove2d(
const double a_min[2],
const double a_max[2],
void* a_elementId);
427 bool Remove2d(
const double a_min[2],
const double a_max[2],
int a_elementId);
449 bool Search(
const double a_min[3],
const double a_max[3],
452 bool Search(
const double a_min[3],
const double a_max[3],
455 bool Search(
const double a_min[3],
const double a_max[3],
458 bool Search(
const double a_min[3],
const double a_max[3],
461 bool Search(
const double a_min[3],
const double a_max[3],
464 bool Search2d(
const double a_min[2],
const double a_max[2],
467 bool Search2d(
const double a_min[2],
const double a_max[2],
470 bool Search2d(
const double a_min[2],
const double a_max[2],
473 bool Search2d(
const double a_min[2],
const double a_max[2],
476 bool Search2d(
const double a_min[2],
const double a_max[2],
543 size_t SizeOf()
const;
Definition opennurbs_mesh.h:795
Definition opennurbs_rtree.h:365
bool Search2d(const double a_min[2], const double a_max[2], bool ON_MSC_CDECL resultCallback(void *a_context, ON__INT_PTR a_id), void *a_context) const
bool Search(const double a_min[3], const double a_max[3], ON_RTreeSearchResult &a_result) const
bool Search(const double a_min[3], const double a_max[3], ON_SimpleArray< void * > &a_result) const
bool Search(const double a_min[3], const double a_max[3], bool ON_MSC_CDECL resultCallback(void *a_context, ON__INT_PTR a_id), void *a_context) const
bool Insert(const double a_min[3], const double a_max[3], int a_element_id)
ON_RTreeMemPool m_mem_pool
Definition opennurbs_rtree.h:557
bool Insert(const double a_min[3], const double a_max[3], void *a_element_id)
size_t m_reserved
Definition opennurbs_rtree.h:556
ON_RTreeNode * m_root
Definition opennurbs_rtree.h:555
bool Remove(const double a_min[3], const double a_max[3], void *a_elementId)
bool Search(const double a_min[3], const double a_max[3], ON_SimpleArray< ON_RTreeLeaf > &a_result) const
bool Search(const double a_min[3], const double a_max[3], ON_SimpleArray< int > &a_result) const
bool Remove(const double a_min[3], const double a_max[3], int a_elementId)
Definition opennurbs_rtree.h:193
bool Initialize(const struct ON_RTreeNode *a_node)
StackElement * m_sp
Definition opennurbs_rtree.h:359
bool Initialize(const class ON_RTree &a_rtree)
const ON_RTreeNode * m_root
Definition opennurbs_rtree.h:360
Definition opennurbs_rtree.h:136
size_t m_sizeof_heap
Definition opennurbs_rtree.h:182
ON_MEMORY_POOL * m_heap
Definition opennurbs_rtree.h:181
struct Blk * m_blk_list
Definition opennurbs_rtree.h:178
struct Blk * m_nodes
Definition opennurbs_rtree.h:170
size_t m_buffer_capacity
Definition opennurbs_rtree.h:176
size_t m_sizeof_blk
Definition opennurbs_rtree.h:179
unsigned char * m_buffer
Definition opennurbs_rtree.h:175
struct Blk * m_list_nodes
Definition opennurbs_rtree.h:172
Definition opennurbs_array.h:46
#define ON_CLASS
Definition opennurbs_defines.h:91
#define ON_RTree_MAX_NODE_COUNT
Definition opennurbs_rtree.h:57
int ON__INT_PTR
Definition opennurbs_system.h:377
#define ON_MSC_CDECL
Definition opennurbs_system.h:240
Definition opennurbs_rtree.h:84
double m_min[3]
Definition opennurbs_rtree.h:85
double m_max[3]
Definition opennurbs_rtree.h:86
Definition opennurbs_rtree.h:90
struct ON_RTreeNode * m_child
Definition opennurbs_rtree.h:97
ON_RTreeBBox m_rect
Definition opennurbs_rtree.h:91
ON__INT_PTR m_id
Definition opennurbs_rtree.h:98
Definition opennurbs_rtree.h:351
int m_branchIndex
Definition opennurbs_rtree.h:353
const struct ON_RTreeNode * m_node
Definition opennurbs_rtree.h:352
Definition opennurbs_rtree.h:103
ON__INT_PTR m_id
Definition opennurbs_rtree.h:105
ON_RTreeBBox m_rect
Definition opennurbs_rtree.h:104
A link list of nodes for reinsertion after a delete operation.
Definition opennurbs_rtree.cpp:23
Definition opennurbs_rtree.h:165
struct Blk * m_next
Definition opennurbs_rtree.h:166
Definition opennurbs_rtree.h:112
bool IsLeaf() const
Definition opennurbs_rtree.h:115
int m_level
Definition opennurbs_rtree.h:119
int m_count
Definition opennurbs_rtree.h:124
ON_RTreeBranch m_branch[ON_RTree_MAX_NODE_COUNT]
Definition opennurbs_rtree.h:125
bool IsInternalNode() const
Definition opennurbs_rtree.h:113
Variables for finding a split partition.
Definition opennurbs_rtree.cpp:30
Definition opennurbs_rtree.h:129
int m_capacity
Definition opennurbs_rtree.h:130
ON__INT_PTR * m_id
Definition opennurbs_rtree.h:132
int m_count
Definition opennurbs_rtree.h:131
Definition opennurbs_memory.h:207