C3D Toolkit  Kernel - 115525, Vision - 2.6.4.29

Дерево объектов с габаритными кубами. Подробнее...

#include <mb_cube_tree.h>

Открытые типы

enum  DistanceMeasure { edm_MaxCoord = 0 , edm_CubeCenter }
 Тип алгоритма вычисления расстояния от точки до габарита. Подробнее...
 
enum  BranchingDirections { ebd_WasDirX = 0x01 , ebd_WasDirY = 0x02 , ebd_WasDirZ = 0x04 }
 Битовые флаги направлений ветвления. Подробнее...
 

Открытые члены

 MbCubeTree (std::vector< ItemIndex > &objects, DistanceMeasure dm=edm_MaxCoord)
 Конструктор дерева по объектам. Подробнее...
 
 MbCubeTree (std::vector< ItemIndex > &objects, const Cube &gabarit, DistanceMeasure dm=edm_MaxCoord)
 Конструктор дерева по объектам. Подробнее...
 
 MbCubeTree (DistanceMeasure dm=edm_MaxCoord)
 Конструктор пустого дерева. Подробнее...
 
 ~MbCubeTree ()
 Деструктор.
 
bool InitTree (std::vector< ItemIndex > &objects, const Cube &gabarit, DistanceMeasure dm=edm_MaxCoord)
 Инициализация дерева по объектам. Подробнее...
 
bool InitTree (const MbCubeTree &srcTree, const std::vector< ItemIndex > &srcObjects, const std::vector< ItemIndex > &dstObjects)
 Копировать дерево. Подробнее...
 
void Clear ()
 Очистить дерево.
 
void Move (const Vector &)
 Сдвинуть дерево.
 
DistanceMeasure GetDistanceMeasure () const
 Получить тип алгоритма вычисления расстояния от точки до габарита.
 
size_t Count () const
 Количество объектов в дереве (не хранит, считает обходом дерева).
 
bool IsReady () const
 Готово ли дерево.
 
size_t GetTreeDepth () const
 Получить глубину дерева (общая переменная).
 
void SetTreeDepth (size_t k)
 Установить глубину дерева (общая переменная).
 
void ResetTreeDepth ()
 Сбросить глубину дерева (общая переменная).
 
size_t GetLeafMinElementsCount () const
 Получить минимальное количество элементов в конечной ветви (общая переменная).
 
void SetLeafMinElementsCount (size_t k)
 Установить минимальное количество элементов в конечной ветви (общая переменная).
 
void ResetLeafMinElementsCount ()
 Сбросить минимальное количество элементов в конечной ветви (общая переменная).
 
void GetContainsObjects (const Point &pnt, double epsilon, std::vector< const Type * > &objects) const
 Выдать содержащие точку объекты дерева.
 
void GetContainsObjects (const Point &pnt, double epsilon, std::vector< size_t > &indices) const
 Выдать содержащие точку объекты дерева.
 
void GetIntersectObjects (const Cube &gabarit, double epsilon, std::vector< const Type * > &objects, bool skipOwnself=false) const
 Выдать пересекающиеся с габаритным кубом объекты дерева.
 
void GetIntersectObjects (const Cube &gabarit, double epsilon, std::vector< size_t > &indices, bool skipOwnself=false) const
 Выдать пересекающиеся с габаритным кубом объекты дерева.
 
void GetIntersectObjects (const Point &rayPnt1, const Point &rayPnt2, double epsilon, std::vector< size_t > &indices) const
 Выдать пересекающиеся с отрезком луча кубом объекты дерева.
 
void FindNearestObject (const Cube &gabarit, double &distance, const Type *&object, double eps=MbCubeTree::defaultEpsilon) const
 Найти ближайший к кубу объект дерева.
 
void FindNearestObject (const Cube &gabarit, double &distance, size_t &index, double eps=MbCubeTree::defaultEpsilon) const
 Найти ближайший к кубу объект дерева в виде индекса в исходном массиве.
 
void FindNearestObject (const Point &pnt, double &distance, const Type *&object, double eps=MbCubeTree::defaultEpsilon) const
 Найти ближайший к точке объект дерева.
 
void FindNearestObject (const Point &pnt, double &distance, size_t &index, double eps=MbCubeTree::defaultEpsilon) const
 Найти ближайший к точке объект дерева в виде индекса в исходном массиве.
 
void GetNearestObjects (const Cube &gabarit, const double distance, std::vector< IndexDistance > &itemDistances, double eps=MbCubeTree::defaultEpsilon) const
 Выдать объекты дерева, расположенные к кубу ближе заданного расстояния.
 
void GetNearestObjects (const Point &pnt, const double distance, std::vector< ItemDistance > &itemDistances, double eps=MbCubeTree::defaultEpsilon) const
 Выдать объекты дерева, расположенные к точке ближе заданного расстояния.
 
void GetNearestObjects (const Point &pnt, const double distance, std::vector< IndexDistance > &indexDistances, double eps=MbCubeTree::defaultEpsilon) const
 Выдать индексы объектов дерева, расположенные к точке ближе заданного расстояния.
 
void GetNearestObjects (const Point &pnt, const double distance, std::vector< size_t > &indices, double eps=MbCubeTree::defaultEpsilon) const
 Выдать индексы объектов дерева, расположенные к точке ближе заданного расстояния.
 

Подробное описание

template<class Type, class Cube, class Point, class Vector>
class MbCubeTree< Type, Cube, Point, Vector >

Дерево объектов с габаритными кубами.

Дерево объектов с габаритными кубами.
Oбъекты дерева должны иметь функции "const Cube & Type::GetCube() const", "double Type::DistanceToCube( const Cube & cube, double eps )".

Перечисления

◆ DistanceMeasure

template<class Type , class Cube , class Point , class Vector >
enum MbCubeTree::DistanceMeasure

Тип алгоритма вычисления расстояния от точки до габарита.

Элементы перечислений
edm_MaxCoord 

Максимальное расстояние вдоль одной из координатных осей.

edm_CubeCenter 

Расстояние до центра габарита объекта.

◆ BranchingDirections

template<class Type , class Cube , class Point , class Vector >
enum MbCubeTree::BranchingDirections

Битовые флаги направлений ветвления.

Элементы перечислений
ebd_WasDirX 

Была попытка ветвления по оси Ox.

ebd_WasDirY 

Была попытка ветвления по оси Oy.

ebd_WasDirZ 

Была попытка ветвления по оси Oz.

Конструктор(ы)

◆ MbCubeTree() [1/3]

template<class Type , class Cube , class Point , class Vector >
MbCubeTree< Type, Cube, Point, Vector >::MbCubeTree ( std::vector< ItemIndex > &  objects,
DistanceMeasure  dm = edm_MaxCoord 
)
inline

Конструктор дерева по объектам.

Конструктор дерева по объектам.

Аргументы
[in]objects- Объекты дерева.
[in]dm- Тип вычисления расстояния от точки до габарита.

◆ MbCubeTree() [2/3]

template<class Type , class Cube , class Point , class Vector >
MbCubeTree< Type, Cube, Point, Vector >::MbCubeTree ( std::vector< ItemIndex > &  objects,
const Cube &  gabarit,
DistanceMeasure  dm = edm_MaxCoord 
)
inline

Конструктор дерева по объектам.

Конструктор дерева по объектам.

Аргументы
[in]objects- Объекты дерева.
[in]gabarit- Общий габарит всех объектов дерева, должен быть не пустым.
[in]dm- Тип вычисления расстояния от точки до габарита.

◆ MbCubeTree() [3/3]

template<class Type , class Cube , class Point , class Vector >
MbCubeTree< Type, Cube, Point, Vector >::MbCubeTree ( DistanceMeasure  dm = edm_MaxCoord)
inline

Конструктор пустого дерева.

Конструктор пустого дерева.

Аргументы
[in]dm- Тип вычисления расстояния от точки до габарита.

Методы

◆ InitTree() [1/2]

template<class Type , class Cube , class Point , class Vector >
bool MbCubeTree< Type, Cube, Point, Vector >::InitTree ( std::vector< ItemIndex > &  objects,
const Cube &  gabarit,
DistanceMeasure  dm = edm_MaxCoord 
)
inline

Инициализация дерева по объектам.

Инициализация дерева по объектам.

Аргументы
[in]objects- Объекты дерева.
[in]gabarit- Общий габарит всех объектов дерева, должен быть не пустым.
[in]dm- Тип вычисления расстояния от точки до габарита.

◆ InitTree() [2/2]

template<class Type , class Cube , class Point , class Vector >
bool MbCubeTree< Type, Cube, Point, Vector >::InitTree ( const MbCubeTree< Type, Cube, Point, Vector > &  srcTree,
const std::vector< ItemIndex > &  srcObjects,
const std::vector< ItemIndex > &  dstObjects 
)
inline

Копировать дерево.

Копировать дерево.

Аргументы
[in]srcTree- Исходное дерево.
[in]copiedObjects- Копии объектов дерева.

Объявления и описания членов класса находятся в файле: