Octree(ulong size,double * boundary,PosGetter func ) | 原型 | Octree(ulong size,double * boundary,PosGetter func ) | | 描述 | 构建元素规模为size,边界为boundary的八叉树空间,坐标计算函数为func | | 参数 | [i]ulong size: 元素规模 \\ [i]double * boundary: 空间边界 \\ [i]PosGetter func : 坐标计算函数 | | 返回值 | 无 | void insertData(void * pData) | 原型 | void insertData(void * pData) | | 描述 | 插入元素 | | 参数 | [i]void * pData: 元素指针 | | 返回值 | 无 | void removeData(void * pData) | 原型 | void removeData(void * pData) | | 描述 | 删除元素 | | 参数 | [i]void * pData: 元素指针 | | 返回值 | 无 | void insertData(double * pos,void * pData) | 原型 | void insertData(double * pos,void * pData) | | 描述 | 插入坐标为pos的元素pData | | 参数 | [i]double * pos: 元素pData对应的坐标 \\ [i]void * pData: 元素指针 | | 返回值 | 无 | void * searchData(double * pos) | 原型 | void * searchData(double * pos) | | 描述 | 搜索在位置pos上的元素 | | 参数 | [i]double * pos: 位置坐标 | | 返回值 | 如在最大深度上对应于pos的叶节点存在则返回该叶节点的第一个元素,否则返回0 | void * searchNearestData(double * pos) | 原型 | void * searchNearestData(double * pos) | | 描述 | 搜索离位置pos最近的元素 | | 参数 | [i]double * pos: 位置坐标 \\ 1,1)的空间里存在元素,返回其中最近的元素,否则返回0 | | 返回值 | | void searchAdjacentData(double * pos, double radius, LinkList * pTgts,bool bSort = false) | 原型 | void searchAdjacentData(double * pos, double radius, LinkList * pTgts,bool bSort = false) | | 描述 | 搜索相邻元素 | | 参数 | [i]double * pos: 位置坐标 \\ [i] double radius: 搜索半径 \\ [i] LinkList * pTgts: 存放相邻元素的链表 \\ [i]bool bSort = false: 对否对相邻元素按照距离进行排序,默认否 | | 返回值 | 无 | void removeData(double * pos,void * pData) | 原型 | void removeData(double * pos,void * pData) | | 描述 | 删除在位置pos的元素pData(如存在) | | 参数 | [i]double * pos: 位置坐标 \\ [i]void * pData: 元素指针 | | 返回值 | 无 | void updateOptimicalDepth() | 原型 | void updateOptimicalDepth() | | 描述 | 计算更新最佳深度(优化深度) | | 参数 | 无 | | 返回值 | 无 | void clear() | 原型 | void clear() | | 描述 | 清除所有元素 | | 参数 | 无 | | 返回值 | 无 | void insertRootLeaf() | 原型 | void insertRootLeaf() | | 描述 | 插入根节点 | | 参数 | 无 | | 返回值 | 无 | ulong getMortonKey(double * pos,int level = MAX_OCTREE_LEVEL) | 原型 | ulong getMortonKey(double * pos,int level = MAX_OCTREE_LEVEL) | | 描述 | 按最大层次level计算位置pos的morton码 | | 参数 | [i]double * pos: 位置坐标 \\ [i]int level = MAX_OCTREE_LEVEL: 最大深度,默认为10,不能比10大 | | 返回值 | pos对应的Morton码 | int getDepth(ulong key) | 原型 | int getDepth(ulong key) | | 描述 | 获取Morton码的深度值 | | 参数 | [i]ulong key: Morton码 | | 返回值 | | void appendData(OctreeLeaf * pLeaf, void * pData) | 原型 | void appendData(OctreeLeaf * pLeaf, void * pData) | | 描述 | 将元素添加到叶节点pLeaf上 | | 参数 | [i]OctreeLeaf * pLeaf: 叶节点 \\ [i] void * pData: 待添加的元素,元素的坐标需与pLeaf相容 | | 返回值 | 无 | void removeData(ulong key,void * pData) | 原型 | void removeData(ulong key,void * pData) | | 描述 | 从Morton编码为key的叶节点中删除元素pData | | 参数 | [i]ulong key: 叶节点的Morton码 \\ [i]void * pData: 元素指针 | | 返回值 | 无 | void removeLeaf(ulong key) | 原型 | void removeLeaf(ulong key) | | 描述 | 删除Morton码为key的叶节点以及属于它的更低层次的所有叶节点 | | 参数 | [i]ulong key: Morton码 | | 返回值 | 无 | void splitLeaf(OctreeLeaf * pLeaf) | 原型 | void splitLeaf(OctreeLeaf * pLeaf) | | 描述 | 将叶节点细分使当前节点的元素深度加1 | | 参数 | [i]OctreeLeaf * pLeaf: 待细分的叶节点 | | 返回值 | 无 | void searchData(ulong key, LinkList * pTgts) | 原型 | void searchData(ulong key, LinkList * pTgts) | | 描述 | 从key所属的子空间开始往下搜索所有的元素 | | 参数 | [i]ulong key: Morton码 \\ [i] LinkList * pTgts: 搜索得到的元素放入到此链表中 | | 返回值 | 无 | void searchDataInradius(ulong key, double * pos,double radius,LinkList * pTgts) | 原型 | void searchDataInradius(ulong key, double * pos,double radius,LinkList * pTgts) | | 描述 | 从key开始往下搜索离pos距离radius以内的所有元素 | | 参数 | [i]ulong key: Morton码 \\ [i] double * pos: 位置坐标 \\ [i]double radius: 搜索半径 \\ [i]LinkList * pTgts: 目标元素放入到此链表中 | | 返回值 | 无 | ulong truncateKey(ulong key,int level) | 原型 | ulong truncateKey(ulong key,int level) | | 描述 | 按深度level截断key形成新的Morton码 | | 参数 | [i]ulong key: Morton码 \\ [i]int level: 深度 | | 返回值 | 新的Morton码 | void getIndex(ulong key,int* index) | 原型 | void getIndex(ulong key,int* index) | | 描述 | 将Morton码转化为以m_dStep为步长的索引值 | | 参数 | [i]ulong key: Morton码 \\ [i]int* index: 0-base索引值 | | 返回值 | 无 | OctreeLeaf * createLeaf(ulong key,void * pData) | 原型 | OctreeLeaf * createLeaf(ulong key,void * pData) | | 描述 | 创建Morton码为key的叶节点,并将元素pData加入到该叶节点中 | | 参数 | [i]ulong key: Morton码 \\ [i]void * pData: 元素,元素的坐标需与Morton码相容 | | 返回值 | 叶节点指针 | int getChildCount(ulong key) | 原型 | int getChildCount(ulong key) | | 描述 | 获取Morton码为key的子空间所包含的所有元素个数 | | 参数 | [i]ulong key: Morton码 | | 返回值 | 元素个数 | void getCenterByKey(ulong key,double * pos) | 原型 | void getCenterByKey(ulong key,double * pos) | | 描述 | 获取Morton码为key的子空间的中心坐标 | | 参数 | [i]ulong key: Morton码 \\ [i]double * pos: Morton码为key的子空间的中心坐标 | | 返回值 | 无 |