C3D Toolkit
Kernel - 113382, Vision - 2.6.3.22
|
Габаритный параллелепипед. Подробнее...
#include <mb_cube.h>
Открытые члены | |
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 |
Вычислить расстояние до ближайшей грани габаритного суба. Подробнее... | |
double | DistanceToCube (const MbCube &cube, double eps=Math::metricRegion) 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 |
Доступ к максимальной координате по индексу. | |
double | GetSideLength (size_t k) const |
Дать длина по стороне. | |
const MbCube & | GetCube () 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 > | |
MbCube & | operator|= (const Point &) |
Включить в себя точку. | |
MbCube & | operator|= (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 > ¶m, double delta=Math::metricRegion) const |
Найти пересечение прямой с "поверхностью" куба. Подробнее... | |
bool | Intersect (const MbPlacement3D &placement, double radius, SArray< double > ¶m, 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-пространства, ограниченная прямым параллелепипедом, грани которого параллельным плоскостям системы координат.
Используется для быстрой оценки близости или непересечения трёхмерных объектов, содержащихся в параллелепипеде. Габаритный параллелепипед описывается парой точек, расположенных на главной диагонали куба.
|
inline |
Конструктор по координатам
[in] | xmin,ymin,zmin | - Координаты точки угла куба с минимальными координатами. |
[in] | xmax,ymax,zmax | - Координаты точки угла куба с максимальными координатами. |
[in] | normalize | - Нормализовать себя. |
|
inline |
Конструктор по двум точкам.
[in] | p0 | - Точка угла куба с минимальными координатами. |
[in] | p1 | - Точка угла куба с максимальными координатами. |
[in] | normalize | - Нормализовать себя. |
|
inline |
Инициализировать по координатам.
[in] | xmin,ymin,zmin | - Координаты точки угла куба с минимальными координатами. |
[in] | xmax,ymax,zmax | - Координаты точки угла куба с максимальными координатами. |
[in] | normalize | - Нормализовать себя. |
|
inline |
Инициализировать по двум точкам.
[in] | p0 | - Точка угла куба с минимальными координатами. |
[in] | p1 | - Точка угла куба с максимальными координатами. |
[in] | normalize | - Нормализовать себя. |
|
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 | - Метрическая точность. |
bool MbCube::InsideLocation | ( | const MbPlacement3D & | place, |
MbRect & | rect, | ||
double | eps | ||
) | const |
Определить положение куба относительно трубы.
Определить, расположен ли куб внутри трубы прямоугольного сечения, заданного прямоугольником в плоскости XY локальной системы координат.
[in] | place | - Локальная система координат, в в плоскости XY которой лежит сечение трубы. |
[in] | rect | - Прямоугольник, задающая сечение трубы. |
[in] | eps | - Метрическая точность. |
|
inline |
Включить в себя точку, заданную как XYZ.
[in] | x,y,z | - Координаты точки, которую требуется включить в габарит. |
|
inline |
Проверить, лежит ли точка внутри габаритного параллелепипеда.
|
inline |
Проверить, лежит ли точка внутри габаритного параллелепипеда.
[in] | eps | - Метрическая точность. |
|
inline |
Проверить, содержит ли один параллелепипед другой.
bool MbCube::Intersect | ( | const MbCube & | other, |
double | eps = (c3d::MIN_RADIUS+c3d::MIN_RADIUS) |
||
) | const |
Пересекается ли габаритный параллелепипед с другим параллелепипедом.
[in] | other | - Другой параллелепипед. |
[in] | eps | - Метрическая точность. |
bool MbCube::Intersect | ( | const MbPlacement3D & | pl, |
double | eps = c3d::MIN_RADIUS |
||
) | const |
Пересекается ли куб с плоскостью XY локальной системы координат.
[in] | pl | - Плейсмент, задающий плоскость. |
[in] | eps | - Метрическая точность. |
bool MbCube::Intersect | ( | const MbCartPoint3D & | , |
const MbVector3D & | , | ||
double | eps = Math::metricRegion |
||
) | const |
Пересекается ли куб с линией.
Линия задается точкой и вектором.
[in] | eps | - Метрическая точность. |
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 | - Метрическая точность. |
bool MbCube::Intersect | ( | const MbPlacement3D & | placement, |
double | radius, | ||
SArray< double > & | param, | ||
double | delta = Math::metricRegion |
||
) | const |
Пересечение куба и окружности.
[in] | placement | - Плейсмент окружности. |
[in] | radius | - Радиус окружности. |
[out] | param | - Точки пересечения. |
[in] | delta | - Метрическая точность. |
bool MbCube::Intersection | ( | const MbCube & | cube1, |
const MbCube & | cube2, | ||
double | eps = c3d::MIN_RADIUS |
||
) |
Куб пересечения двух кубов.
[in] | cube1,cube2 | - Исходные кубы. |
[in] | eps | - Метрическая точность. |
Куб объединения двух кубов.
[in] | cube1,cube2 | - Исходные кубы. |
|
inline |
Вычислить расстояние до ближайшей грани габаритного суба.
Найденное расстояние до ближайшей границы имеет отрицательное значение, если точка находится внутри, и положительное - если снаружи.
[in] | point | - Исследуемая точка. |
double MbCube::DistanceToCube | ( | const MbCube & | cube, |
double | eps = Math::metricRegion |
||
) | const |
Вычислить расстояние до куба.
Возвращается ноль, если кубы пересекаются или один содержится в другом.
[in] | cube | - Другой куб. |
[in] | eps | - Метрическая точность. |
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 | - Координаты характерной точки. |
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 | - Рассчитанная матрица преобразования. |