C3D Kernel  104065
Открытые члены | Открытые статические члены | Открытые атрибуты

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

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

Полный список членов класса

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

 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::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::MbCube ( const MbCartPoint3D p0,
const MbCartPoint3D p1,
bool  normalize = false 
) [inline]
Аргументы:
[in]p0- Точка угла куба с минимальными координатами.
[in]p1- Точка угла куба с максимальными координатами.
[in]normalize- Нормализовать себя.

Методы

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- Нормализовать себя.
void MbCube::Set ( const MbCartPoint3D p0,
const MbCartPoint3D p1,
bool  normalize = false 
) [inline]
Аргументы:
[in]p0- Точка угла куба с минимальными координатами.
[in]p1- Точка угла куба с максимальными координатами.
[in]normalize- Нормализовать себя.
void MbCube::Init ( const MbCartPoint3D p0,
const MbCartPoint3D p1 
) [inline]

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

Аргументы:
[in]p0- Точка угла куба с минимальными координатами.
[in]p1- Точка угла куба с максимальными координатами.
void MbCube::AddRect ( const MbRect r,
const MbPlacement3D place 
)

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

Аргументы:
[in]r- Габарит.
[in]place- Локальная система координат.
void MbCube::ProjectionRect ( const MbPlacement3D place,
MbRect rect 
) const

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

Аргументы:
[in]place- Локальная система координат.
[out]rect- Прямоугольник, охватывающий искомую проекцию.
MbeItemLocation MbCube::GetLocation ( const MbPlacement3D pl,
double  eps 
) const

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

Аргументы:
[in]pl- Локальная система координат, задающая плоскость.
[in]eps- Метрическая точность.
Возвращает:
iloc_OnItem - куб пересекает плоскость XY локальной системы координат,
iloc_InItem - куб расположен над плоскостью XY локальной системы координат,
iloc_OutOfItem - куб расположен под плоскостью XY локальной системы координат.
bool MbCube::InsideLocation ( const MbPlacement3D place,
MbRect rect,
double  eps 
) const

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

Аргументы:
[in]place- Локальная система координат, в в плоскости XY которой лежит сечение трубы.
[in]rect- Прямоугольник, задающая сечение трубы.
[in]eps- Метрическая точность.
Возвращает:
true, если куб расположен внутри трубы.
void MbCube::Include ( double  x,
double  y,
double  z 
) [inline]
Аргументы:
[in]x,y,z- Координаты точки, которую требуется включить в габарит.
template<class Point >
bool MbCube::Contains ( const Point &  p) const [inline]
Возвращает:
true, если лежит.
template<class Point >
bool MbCube::Contains ( const Point &  p,
double  eps 
) const [inline]
Аргументы:
[in]eps- Метрическая точность.
Возвращает:
true, если лежит.
bool MbCube::Contains ( const MbCube box) const [inline]
Возвращает:
true, если данный габаритный параллелепипед содержит другой.
bool MbCube::Intersect ( const MbCube other,
double  eps = (c3d::MIN_RADIUS+c3d::MIN_RADIUS) 
) const
Аргументы:
[in]other- Другой параллелепипед.
[in]eps- Метрическая точность.
Возвращает:
true, если пересекается.
bool MbCube::Intersect ( const MbPlacement3D pl,
double  eps = c3d::MIN_RADIUS 
) const
Аргументы:
[in]pl- Плейсмент, задающий плоскость.
[in]eps- Метрическая точность.
Возвращает:
true, если пересекается.
bool MbCube::Intersect ( const MbCartPoint3D ,
const MbVector3D ,
double  eps = Math::metricRegion 
) const

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

Аргументы:
[in]eps- Метрическая точность.
Возвращает:
true, если пересекается.
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 в противном случае.
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 в противном случае.
bool MbCube::Intersection ( const MbCube cube1,
const MbCube cube2,
double  eps = c3d::MIN_RADIUS 
)
Аргументы:
[in]cube1,cube2- Исходные кубы.
[in]eps- Метрическая точность.
Возвращает:
true, если пересечение есть,
false в противном случае.
bool MbCube::Union ( const MbCube cube1,
const MbCube cube2 
)
Аргументы:
[in]cube1,cube2- Исходные кубы.
Возвращает:
false, если итоговый куб пуст,
true в противном случае.
double MbCube::DistanceToPoint ( const MbCartPoint3D point) const [inline]

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

Аргументы:
[in]point- Исследуемая точка.
Возвращает:
Возвращает расстояние до границы.
void MbCube::GetVertex ( ptrdiff_t  index,
MbCartPoint3D p 
) const
Аргументы:
[in]index- Исходный индекс. 0 <= index <= 7.
[out]p- Искомая вершина.
void MbCube::GetEdgeCentre ( ptrdiff_t  index,
MbCartPoint3D p 
) const
Аргументы:
[in]index- Исходный индекс. 0 <= index <= 12 (общий номер минус CUBE_VERTEX_COUNT).
[out]p- Координаты центра ребра.
void MbCube::GetFaceCentre ( ptrdiff_t  index,
MbCartPoint3D p 
) const
Аргументы:
[in]index- Исходный индекс. 0 <= index <= 5 (общий номер минус CUBE_VERTEX_COUNT минус CUBE_EDGES_COUNT).
[out]p- Координаты центра ребра.
bool MbCube::GetControlPoint ( size_t  pIndex,
MbCartPoint3D p 
) const

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

Аргументы:
[in]pIndex- Номер характерных точек.
[out]p- Координаты характерной точки.
Возвращает:
false, если куб пуст или индекс принимает недопустимое значение,
true в противном случае.
size_t MbCube::GetControlPoints ( SArray< MbCartPoint3D > &  points) const

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

Аргументы:
[out]points- Характерные точки.
Возвращает:
Число характерных точек. Ноль, если куб пуст.
size_t MbCube::GetNearestControlIndex ( const MbCartPoint3D p) const
Аргументы:
[in]p- Исходная точка, к которой ищется ближайшая характерная точка куба.
Возвращает:
Номер точки.
size_t MbCube::GetFixedControlIndex ( size_t  index) const

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

Аргументы:
[in]index- Номер исходной точки.
Возвращает:
Номер противолежащей точки.
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, если искомая матрица была найдена.

Объявления и описания членов класса находятся в файле:
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы