C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122

Габаритный параллелепипед. Подробнее...

Граф связей класса MbCube:
[см. легенду]

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

 MbCube ()
 Пустой конструктор
 
 MbCube (const MbCube &init)
 Конструктор копирования.
 
 MbCube (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, bool normalize=false)
 Конструктор по координатам Подробнее...
 
 MbCube (const MbCartPoint3D &p0, const MbCartPoint3D &p1, bool normalize=false)
 Конструктор по двум точкам. Подробнее...
 
bool IsEmpty () const
 Проверка на пустоту. Габаритный параллелепипед считается пустым, если он не содержит ни одной точки 3D-пространства.
 
void SetEmpty ()
 Установить пустым ("вывернутым").
 
void Set (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, bool normalize=false)
 Инициализировать по координатам. Подробнее...
 
void Set (const MbCartPoint3D &p0, const MbCartPoint3D &p1, bool normalize=false)
 Инициализировать по двум точкам. Подробнее...
 
void Init (const MbCube &init)
 Инициализировать по другому габариту.
 
void Init (const MbCartPoint3D &p0, const MbCartPoint3D &p1)
 Инициализировать по двум точкам. Подробнее...
 
void AddRect (const MbRect &r, const MbPlacement3D &place)
 Добавить габарит. Подробнее...
 
void ProjectionRect (const MbPlacement3D &place, MbRect &rect) const
 Проекция на плейсмент. Подробнее...
 
void Normalize ()
 Нормализовать себя.
 
MbeItemLocation GetLocation (const MbPlacement3D &pl, double eps) const
 Определить положение куба относительно плоскости. Подробнее...
 
bool InsideLocation (const MbPlacement3D &place, MbRect &rect, double eps) const
 Определить положение куба относительно трубы. Подробнее...
 
void Include (double x, double y, double z)
 Включить в себя точку, заданную как XYZ. Подробнее...
 
template<class Point >
void Include (const Point &)
 Включить в себя точку.
 
double GetVolume (double eps=Math::metricRegion) const
 Дать объем куба.
 
double GetSquare (double eps=Math::metricRegion) const
 Дать половину площади граней куба.
 
double GetLengthX () const
 Дать размер стороны X куба.
 
double GetLengthY () const
 Дать размер стороны Y куба.
 
double GetLengthZ () const
 Дать размер стороны Z куба.
 
double GetDiagonal () const
 Дать размер диагонали куба.
 
double DistanceToPoint (const MbCartPoint3D &point) const
 Вычислить расстояние до ближайшей грани габаритного суба. Подробнее...
 
void Enlarge (double delta)
 Расширить куб во все стороны на величину delta.
 
void Enlarge (double dx, double dy, double dz)
 Расширить куб во все стороны на соответствующую величину.
 
void Move (const MbVector3D &to)
 Сдвинуть вдоль вектора.
 
void Transform (const MbMatrix3D &matrix)
 Преобразовать согласно матрице.
 
void Scale (double sx, double sy, double sz)
 Масштабировать.
 
bool IsSame (const MbCube &other, double accuracy) const
 Являются ли объекты равными?
 
double GetMin (size_t k) const
 Доступ к минимальной координате по индексу.
 
double GetMax (size_t k) const
 Доступ к максимальной координате по индексу.
 
const MbCubeGetCube () const
 Дать себя.
 
size_t GetVerticesCount () const
 Количество вершин.
 
void GetVertex (ptrdiff_t index, MbCartPoint3D &p) const
 Выдать вершину куба по индексу. Подробнее...
 
void GetEdgeCentre (ptrdiff_t index, MbCartPoint3D &p) const
 Выдать центр ребра по индексу. Подробнее...
 
void GetFaceCentre (ptrdiff_t index, MbCartPoint3D &p) const
 Выдать центр грани по индексу. Подробнее...
 
void GetCentre (MbCartPoint3D &p) const
 Выдать центр куба.
 
void GetCenter (MbCartPoint3D &p) const
 Выдать центр куба.
 
MbCartPoint3D Centre () const
 Центр габарита.
 
bool GetControlPoint (size_t pIndex, MbCartPoint3D &p) const
 Дать характерную точку куба по ее номеру. Подробнее...
 
size_t GetControlPoints (SArray< MbCartPoint3D > &points) const
 Выдать все характерные точки куба. Подробнее...
 
size_t GetNearestControlIndex (const MbCartPoint3D &p) const
 Выдать номер ближайшей характерной точки куба. Подробнее...
 
size_t GetFixedControlIndex (size_t index) const
 Дать номер противолежащей точки. Подробнее...
 
bool CalculateMatrix (size_t pIndex, const MbCartPoint3D &point, const MbCartPoint3D &fixedPoint, bool useFixed, bool isotropy, MbMatrix3D &matrix) const
 Рассчитать матрицу деформации. Подробнее...
 
Функции доступа к полям
void SetXMin (double s)
 Установить минимальную координату по X.
 
void SetYMin (double s)
 Установить минимальную координату по Y.
 
void SetZMin (double s)
 Установить минимальную координату по Z.
 
void SetXMax (double s)
 Установить максимальную координату по X.
 
void SetYMax (double s)
 Установить максимальную координату по Y.
 
void SetZMax (double s)
 Установить максимальную координату по Z.
 
double GetXMin () const
 Дать минимальную координату по X.
 
double GetYMin () const
 Дать минимальную координату по Y.
 
double GetZMin () const
 Дать минимальную координату по Z.
 
double GetXMax () const
 Дать максимальную координату по X.
 
double GetYMax () const
 Дать максимальную координату по Y.
 
double GetZMax () const
 Дать максимальную координату по Z.
 
Перегрузка логических операций.
void operator= (const MbCube &)
 Присвоить значение.
 
template<class Point >
MbCubeoperator|= (const Point &)
 Включить в себя точку.
 
MbCubeoperator|= (const MbCube &)
 Включить в себя габаритный куб.
 
bool operator== (const MbCube &) const
 Оператор равенства.
 
bool operator!= (const MbCube &) const
 Оператор неравенства.
 
Булевы операции куба с точкой, линией, плоскостью и другим кубом.
template<class Point >
bool Contains (const Point &) const
 Проверить, лежит ли точка внутри габаритного параллелепипеда. Подробнее...
 
template<class Point >
bool Contains (const Point &, double eps) const
 Проверить, лежит ли точка внутри габаритного параллелепипеда. Подробнее...
 
bool Contains (const MbCube &) const
 Проверить, содержит ли один параллелепипед другой. Подробнее...
 
bool Intersect (const MbCube &other, double eps=(c3d::MIN_RADIUS+c3d::MIN_RADIUS)) const
 Пересекается ли габаритный параллелепипед с другим параллелепипедом. Подробнее...
 
bool Intersect (const MbPlacement3D &pl, double eps=c3d::MIN_RADIUS) const
 Пересекается ли куб с плоскостью XY локальной системы координат. Подробнее...
 
bool Intersect (const MbCartPoint3D &, const MbVector3D &, double eps=Math::metricRegion) const
 Пересекается ли куб с линией. Подробнее...
 
bool Intersect (const MbCartPoint3D &p, const MbVector3D &axis, SArray< double > &param, double delta=Math::metricRegion) const
 Найти пересечение прямой с "поверхностью" куба. Подробнее...
 
bool Intersect (const MbPlacement3D &placement, double radius, SArray< double > &param, double delta=Math::metricRegion) const
 Пересечение куба и окружности. Подробнее...
 
bool Intersection (const MbCube &cube1, const MbCube &cube2, double eps=c3d::MIN_RADIUS)
 Куб пересечения двух кубов. Подробнее...
 
bool Union (const MbCube &cube1, const MbCube &cube2)
 Куб объединения двух кубов. Подробнее...
 

Открытые статические члены

static size_t GetDimension ()
 Количество координат точки.
 

Открытые атрибуты

MbCartPoint3D pmin
 Точка диагонали параллелепипеда с минимальными координатами.
 
MbCartPoint3D pmax
 Точка диагонали параллелепипеда с максимальными координатами.
 

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

Габаритный параллелепипед.

Габаритный параллелепипед - это область 3D-пространства, ограниченная прямым параллелепипедом, грани которого параллельным плоскостям системы координат.
Используется для быстрой оценки близости или непересечения трёхмерных объектов, содержащихся в параллелепипеде. Габаритный параллелепипед описывается парой точек, расположенных на главной диагонали куба.

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

◆ MbCube() [1/2]

MbCube::MbCube ( double  xmin,
double  ymin,
double  zmin,
double  xmax,
double  ymax,
double  zmax,
bool  normalize = false 
)
inline

Конструктор по координатам

Аргументы
[in]xmin,ymin,zmin- Координаты точки угла куба с минимальными координатами.
[in]xmax,ymax,zmax- Координаты точки угла куба с максимальными координатами.
[in]normalize- Нормализовать себя.

◆ MbCube() [2/2]

MbCube::MbCube ( const MbCartPoint3D p0,
const MbCartPoint3D p1,
bool  normalize = false 
)
inline

Конструктор по двум точкам.

Аргументы
[in]p0- Точка угла куба с минимальными координатами.
[in]p1- Точка угла куба с максимальными координатами.
[in]normalize- Нормализовать себя.

Методы

◆ Set() [1/2]

void MbCube::Set ( double  xmin,
double  ymin,
double  zmin,
double  xmax,
double  ymax,
double  zmax,
bool  normalize = false 
)
inline

Инициализировать по координатам.

Аргументы
[in]xmin,ymin,zmin- Координаты точки угла куба с минимальными координатами.
[in]xmax,ymax,zmax- Координаты точки угла куба с максимальными координатами.
[in]normalize- Нормализовать себя.

◆ Set() [2/2]

void MbCube::Set ( const MbCartPoint3D p0,
const MbCartPoint3D p1,
bool  normalize = false 
)
inline

Инициализировать по двум точкам.

Аргументы
[in]p0- Точка угла куба с минимальными координатами.
[in]p1- Точка угла куба с максимальными координатами.
[in]normalize- Нормализовать себя.

◆ Init()

void MbCube::Init ( const MbCartPoint3D p0,
const MbCartPoint3D p1 
)
inline

Инициализировать по двум точкам.

Инициализированный куб нормализуется.

Аргументы
[in]p0- Точка угла куба с минимальными координатами.
[in]p1- Точка угла куба с максимальными координатами.

◆ AddRect()

void MbCube::AddRect ( const MbRect r,
const MbPlacement3D place 
)

Добавить габарит.

Габарит добавляется в локальной системе координат исходного куба.

Аргументы
[in]r- Габарит.
[in]place- Локальная система координат.

◆ ProjectionRect()

void MbCube::ProjectionRect ( const MbPlacement3D place,
MbRect rect 
) const

Проекция на плейсмент.

Вычисляет прямоугольник, охватывающий проекцию куба на плейсмент.

Аргументы
[in]place- Локальная система координат.
[out]rect- Прямоугольник, охватывающий искомую проекцию.

◆ GetLocation()

MbeItemLocation MbCube::GetLocation ( const MbPlacement3D pl,
double  eps 
) const

Определить положение куба относительно плоскости.

Определить положение куба относительно плоскости XY локальной системы координат, направление оси Z локальной системы координат при этом не учитывается.

Аргументы
[in]pl- Локальная система координат, задающая плоскость.
[in]eps- Метрическая точность.
Возвращает
iloc_OnItem - куб пересекает плоскость XY локальной системы координат,
iloc_InItem - куб расположен над плоскостью XY локальной системы координат,
iloc_OutOfItem - куб расположен под плоскостью XY локальной системы координат.

◆ InsideLocation()

bool MbCube::InsideLocation ( const MbPlacement3D place,
MbRect rect,
double  eps 
) const

Определить положение куба относительно трубы.

Определить, расположен ли куб внутри трубы прямоугольного сечения, заданного прямоугольником в плоскости XY локальной системы координат.

Аргументы
[in]place- Локальная система координат, в в плоскости XY которой лежит сечение трубы.
[in]rect- Прямоугольник, задающая сечение трубы.
[in]eps- Метрическая точность.
Возвращает
true, если куб расположен внутри трубы.

◆ Include()

void MbCube::Include ( double  x,
double  y,
double  z 
)
inline

Включить в себя точку, заданную как XYZ.

Аргументы
[in]x,y,z- Координаты точки, которую требуется включить в габарит.

◆ Contains() [1/3]

template<class Point >
bool MbCube::Contains ( const Point p) const
inline

Проверить, лежит ли точка внутри габаритного параллелепипеда.

Возвращает
true, если лежит.

◆ Contains() [2/3]

template<class Point >
bool MbCube::Contains ( const Point p,
double  eps 
) const
inline

Проверить, лежит ли точка внутри габаритного параллелепипеда.

Аргументы
[in]eps- Метрическая точность.
Возвращает
true, если лежит.

◆ Contains() [3/3]

bool MbCube::Contains ( const MbCube box) const
inline

Проверить, содержит ли один параллелепипед другой.

Возвращает
true, если данный габаритный параллелепипед содержит другой.

◆ Intersect() [1/5]

bool MbCube::Intersect ( const MbCube other,
double  eps = (c3d::MIN_RADIUS+c3d::MIN_RADIUS) 
) const

Пересекается ли габаритный параллелепипед с другим параллелепипедом.

Аргументы
[in]other- Другой параллелепипед.
[in]eps- Метрическая точность.
Возвращает
true, если пересекается.

◆ Intersect() [2/5]

bool MbCube::Intersect ( const MbPlacement3D pl,
double  eps = c3d::MIN_RADIUS 
) const

Пересекается ли куб с плоскостью XY локальной системы координат.

Аргументы
[in]pl- Плейсмент, задающий плоскость.
[in]eps- Метрическая точность.
Возвращает
true, если пересекается.

◆ Intersect() [3/5]

bool MbCube::Intersect ( const MbCartPoint3D ,
const MbVector3D ,
double  eps = Math::metricRegion 
) const

Пересекается ли куб с линией.

Линия задается точкой и вектором.

Аргументы
[in]eps- Метрическая точность.
Возвращает
true, если пересекается.

◆ Intersect() [4/5]

bool MbCube::Intersect ( const MbCartPoint3D p,
const MbVector3D axis,
SArray< double > &  param,
double  delta = Math::metricRegion 
) const

Найти пересечение прямой с "поверхностью" куба.

Аргументы
[in]p- Точка на прямой.
[in]axis- Вектор, задающий направление прямой.
[out]param- Точки пересечения.
[in]delta- Метрическая точность.
Возвращает
true, если пересечение есть,
false в противном случае.

◆ Intersect() [5/5]

bool MbCube::Intersect ( const MbPlacement3D placement,
double  radius,
SArray< double > &  param,
double  delta = Math::metricRegion 
) const

Пересечение куба и окружности.

Аргументы
[in]placement- Плейсмент окружности.
[in]radius- Радиус окружности.
[out]param- Точки пересечения.
[in]delta- Метрическая точность.
Возвращает
true, если пересечение есть,
false в противном случае.

◆ Intersection()

bool MbCube::Intersection ( const MbCube cube1,
const MbCube cube2,
double  eps = c3d::MIN_RADIUS 
)

Куб пересечения двух кубов.

Аргументы
[in]cube1,cube2- Исходные кубы.
[in]eps- Метрическая точность.
Возвращает
true, если пересечение есть,
false в противном случае.

◆ Union()

bool MbCube::Union ( const MbCube cube1,
const MbCube cube2 
)

Куб объединения двух кубов.

Аргументы
[in]cube1,cube2- Исходные кубы.
Возвращает
false, если итоговый куб пуст,
true в противном случае.

◆ DistanceToPoint()

double MbCube::DistanceToPoint ( const MbCartPoint3D point) const
inline

Вычислить расстояние до ближайшей грани габаритного суба.

Найденное расстояние до ближайшей границы имеет отрицательное значение, если точка находится внутри, и положительное - если снаружи.

Аргументы
[in]point- Исследуемая точка.
Возвращает
Возвращает расстояние до границы.

◆ GetVertex()

void MbCube::GetVertex ( ptrdiff_t  index,
MbCartPoint3D p 
) const

Выдать вершину куба по индексу.

Аргументы
[in]index- Исходный индекс. 0 <= index <= 7.
[out]p- Искомая вершина.

◆ GetEdgeCentre()

void MbCube::GetEdgeCentre ( ptrdiff_t  index,
MbCartPoint3D p 
) const

Выдать центр ребра по индексу.

Аргументы
[in]index- Исходный индекс. 0 <= index <= 12 (общий номер минус CUBE_VERTEX_COUNT).
[out]p- Координаты центра ребра.

◆ GetFaceCentre()

void MbCube::GetFaceCentre ( ptrdiff_t  index,
MbCartPoint3D p 
) const

Выдать центр грани по индексу.

Аргументы
[in]index- Исходный индекс. 0 <= index <= 5 (общий номер минус CUBE_VERTEX_COUNT минус CUBE_EDGES_COUNT).
[out]p- Координаты центра ребра.

◆ GetControlPoint()

bool MbCube::GetControlPoint ( size_t  pIndex,
MbCartPoint3D p 
) const

Дать характерную точку куба по ее номеру.

Общая нумерация характерных точек куба: 0-7 вершины, 8-19 середины рёбер, 20-25 центры граней.

Аргументы
[in]pIndex- Номер характерных точек.
[out]p- Координаты характерной точки.
Возвращает
false, если куб пуст или индекс принимает недопустимое значение,
true в противном случае.

◆ GetControlPoints()

size_t MbCube::GetControlPoints ( SArray< MbCartPoint3D > &  points) const

Выдать все характерные точки куба.

Все характерные точки куба: 8 вершин, 12 середин рёбер, 6 центров граней.

Аргументы
[out]points- Характерные точки.
Возвращает
Число характерных точек. Ноль, если куб пуст.

◆ GetNearestControlIndex()

size_t MbCube::GetNearestControlIndex ( const MbCartPoint3D p) const

Выдать номер ближайшей характерной точки куба.

Аргументы
[in]p- Исходная точка, к которой ищется ближайшая характерная точка куба.
Возвращает
Номер точки.

◆ GetFixedControlIndex()

size_t MbCube::GetFixedControlIndex ( size_t  index) const

Дать номер противолежащей точки.

Для точки куба с номером index дать номер противолежащей точки, которая может использоваться в качестве фиксированной.

Аргументы
[in]index- Номер исходной точки.
Возвращает
Номер противолежащей точки.

◆ CalculateMatrix()

bool MbCube::CalculateMatrix ( size_t  pIndex,
const MbCartPoint3D point,
const MbCartPoint3D fixedPoint,
bool  useFixed,
bool  isotropy,
MbMatrix3D matrix 
) const

Рассчитать матрицу деформации.

Матрица деформации рассчитывается по-новому положению point характерной точки куба с индексом pIndex.

Аргументы
[in]pIndex- Номер смещаемой точки (0-7 вершины, 8-19 середины рёбер, 20-25 центры граней).
[in]point- Точка, с которой нужно совместить точку куба с номером pIndex.
[in]fixedPoint- Неподвижная точка преобразования, используется, если useFixed = true.
[in]useFixed- Использовать неподвижную точку (true), если useFixed = false, то неподвижной будет противолежащая точка куба.
[in]isotropy- Одинаковые масштабы по осям (true), масштабы, пропорциональны проекциям смещения рассматриваемой точки на стороны куба (false)
[out]matrix- Рассчитанная матрица преобразования.
Возвращает
true, если искомая матрица была найдена.

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