C3D Kernel  104065
Открытые члены | Защищенные члены | Защищенные данные

Триангуляция. Подробнее...

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

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

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

virtual ~MbGrid ()
 Деструктор.
void GetPoints (std::vector< MbCartPoint3D > &pnts) const
 Выдать все точки триангуляции.
void GetPoints (std::vector< MbFloatPoint3D > &pnts) const
 Выдать все точки триангуляции.
void GetNormals (std::vector< MbVector3D > &vecs) const
 Выдать все нормали триангуляции.
void GetNormals (std::vector< MbFloatVector3D > &vecs) const
 Выдать все нормали триангуляции.
void GetParams (std::vector< MbCartPoint > &pnts) const
 Выдать все параметрические точки триангуляции.
void GetParams (std::vector< MbFloatPoint > &pnts) const
 Выдать все параметрические точки триангуляции.
Общие функции примитива.
virtual MbePrimitiveType Type () const
 Получить тип объекта.
virtual MbePrimitiveType IsA () const =0
virtual MbGridDuplicate (MbRegDuplicate *iReg=NULL) const =0
 Создать копию примитива.
virtual void Transform (const MbMatrix3D &matr)=0
 Преобразовать примитив согласно матрице.
virtual void Move (const MbVector3D &to)=0
 Сдвинуть примитив вдоль вектора.
virtual void Rotate (const MbAxis3D &axis, double angle)=0
 Повернуть примитив вокруг оси на заданный угол.
virtual void AddYourGabaritTo (MbCube &r) const =0
 Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.
virtual double DistanceToPoint (const MbCartPoint3D &pnt) const =0
 Вычислить расстояние до точки.
virtual double DistanceToLine (const MbAxis3D &axis, double maxDistance, double &t) const =0
 Вычислить расстояние до оси.
virtual void GetProperties (MbProperties &)=0
 Выдать свойства объекта.
virtual void SetProperties (const MbProperties &)=0
 Записать свойства объекта.
Функции триангуляции.
bool IsComplete () const
 Проверить наличие данных.
virtual size_t PointsCount () const =0
 Выдать количество точек.
virtual size_t NormalsCount () const =0
 Выдать количество нормалей.
virtual size_t ParamsCount () const =0
 Выдать количество параметров.
virtual size_t EscortsCount () const =0
 Выдать количество значений.
virtual ptrdiff_t PointsMaxIndex () const =0
 Выдать количество точек минус 1 (максимальный индекс).
virtual ptrdiff_t NormalsMaxIndex () const =0
 Выдать количество нормалей минус 1 (максимальный индекс).
virtual ptrdiff_t ParamsMaxIndex () const =0
 Выдать количество параметров минус 1 (максимальный индекс).
size_t TrianglesCount () const
size_t QuadranglesCount () const
size_t LoopsCount () const
virtual void AddPoint (const MbCartPoint &p2D, const MbCartPoint3D &p3D, const MbVector3D &n3D)=0
 Добавить в триангуляцию параметры, точку и нормаль триангулируемой поверхности в точке.
virtual void AddPoint (const MbCartPoint &p2D, const MbCartPoint3D &p3D)=0
 Добавить в триангуляцию параметры и точку.
virtual void AddPoint (const MbCartPoint3D &p3D, const MbVector3D &n3D)=0
 Добавить в триангуляцию точку и нормаль в точке.
virtual void AddPoint (const MbCartPoint3D &p3D)=0
 Добавить в триангуляцию точку.
virtual void AddNormal (const MbVector3D &n3D)=0
 Добавить в триангуляцию нормаль.
virtual void AddParam (const MbCartPoint &p2D)=0
 Добавить в триангуляцию параметры триангулируемой поверхности.
virtual void AddPoint (const MbFloatPoint &p2D, const MbFloatPoint3D &p3D, const MbFloatVector3D &n3D)=0
 Добавить в триангуляцию параметры, точку и нормаль триангулируемой поверхности в точке.
virtual void AddPoint (const MbFloatPoint &p2D, const MbFloatPoint3D &p3D)=0
 Добавить в триангуляцию параметры и точку.
virtual void AddPoint (const MbFloatPoint3D &p3D, const MbFloatVector3D &n3D)=0
 Добавить в триангуляцию точку и нормаль в точке.
virtual void AddPoint (const MbFloatPoint3D &p3D)=0
 Добавить в триангуляцию точку.
virtual void AddNormal (const MbFloatVector3D &n3D)=0
 Добавить в триангуляцию нормаль.
virtual void AddParam (const MbFloatPoint &p2D)=0
 Добавить в триангуляцию параметры триангулируемой поверхности.
template<class TrianglesVector >
void AddTriangles (const TrianglesVector &trngs)
 Добавить в триангуляцию объекты.
template<class QuadranglesVector >
void AddQuadrangles (const QuadranglesVector &qrngs)
 Добавить в триангуляцию объекты.
virtual void AddEscorts (const std::vector< uint32 > &scores)=0
 Добавить в коллекцию данных.
virtual void GetPoint (size_t i, MbCartPoint3D &p) const =0
 Выдать точку по её номеру.
virtual void GetNormal (size_t i, MbVector3D &n) const =0
 Выдать нормаль по её номеру.
virtual void GetParam (size_t i, MbCartPoint &p) const =0
 Выдать параметр по его номеру.
virtual const uint32 & GetEscort (size_t i) const =0
 Выдать дополнительную информацию по её номеру.
virtual void GetPoint (size_t i, MbFloatPoint3D &p) const =0
 Выдать точку по её номеру.
virtual void GetNormal (size_t i, MbFloatVector3D &n) const =0
 Выдать нормаль по её номеру.
virtual void GetParam (size_t i, MbFloatPoint &p) const =0
 Выдать параметр по его номеру.
virtual void SetPoint (size_t i, const MbCartPoint3D &p)=0
 Установить точку с заданным номером.
virtual void SetNormal (size_t i, const MbVector3D &n)=0
 Установить нормаль с заданным номером.
virtual void SetParam (size_t i, const MbCartPoint &p)=0
 Установить параметр с заданным номером.
virtual void SetEscort (size_t i, const uint32 &e)=0
 Установить дополнительную информацию по её номеру.
virtual void PointRemove (size_t i)=0
 Удалить точку с заданным номером.
virtual void NormalRemove (size_t i)=0
 Удалить нормаль с заданным номером.
virtual void ParamRemove (size_t i)=0
 Удалить параметры поверхности с заданным номером.
void TriangleRemove (size_t k)
 Удалить треугольник по его индексу.
void QuadrangleRemove (size_t k)
 Удалить четырёхугольник по его индексу.
void LoopRemove (size_t k)
 Удалить полигон по его индексу.
virtual void PointsDelete ()=0
 Удалить точки.
virtual void NormalsDelete ()=0
 Удалить нормали.
virtual void PapamsDelete ()=0
 Удалить параметры.
virtual void EscortsDelete ()=0
 Удалить дополнительную информацию.
void TrianglesDelete ()
 Удалить все треугольники.
void QuadranglesDelete ()
 Удалить все четырёхугольники.
void LoopsDelete ()
 Удалить все полигоны.
void AddTriangle (const MbTriangle &triangle)
void AddTriangle (uint j0, uint j1, uint j2, bool o)
void AddQuadrangle (const MbQuadrangle &quadrangle)
void AddQuadrangle (uint j0, uint j1, uint j2, uint j3, bool o)
void AddGridLoop (MbGridLoop &poly)
void CollectEdges (std::vector< c3d::UintPair > &edges) const
bool GetTrianglePointIndex (size_t i, uint &ind0, uint &ind1, uint &ind2) const
 Выдать индексы точек в массиве points для i-го треугольника (связанного или несвязанного).
bool GetQuadranglePointIndex (size_t i, uint &ind0, uint &ind1, uint &ind2, uint &ind3) const
 Выдать индексы точек в массиве points для i-го четырехугольника (связанного или несвязанного).
virtual bool GetTriangleParams (size_t i, MbCartPoint &r0, MbCartPoint &r1, MbCartPoint &r2) const =0
virtual bool GetTrianglePoints (size_t i, MbCartPoint3D &p0, MbCartPoint3D &p1, MbCartPoint3D &p2) const =0
virtual bool GetTrianglePoints (size_t i, MbFloatPoint3D &p0, MbFloatPoint3D &p1, MbFloatPoint3D &p2) const =0
virtual bool GetTriangleNormals (size_t i, MbVector3D &n0, MbVector3D &n1, MbVector3D &n2) const =0
virtual bool GetTriangleNormals (size_t i, MbFloatVector3D &n0, MbFloatVector3D &n1, MbFloatVector3D &n2) const =0
virtual bool GetQuadrangleParams (size_t i, MbCartPoint &r0, MbCartPoint &r1, MbCartPoint &r2, MbCartPoint &r3) const =0
virtual bool GetQuadranglePoints (size_t i, MbCartPoint3D &p0, MbCartPoint3D &p1, MbCartPoint3D &p2, MbCartPoint3D &p3) const =0
virtual bool GetQuadranglePoints (size_t i, MbFloatPoint3D &p0, MbFloatPoint3D &p1, MbFloatPoint3D &p2, MbFloatPoint3D &n3) const =0
virtual bool GetQuadrangleNormals (size_t i, MbVector3D &n0, MbVector3D &n1, MbVector3D &n2, MbVector3D &n3) const =0
virtual bool GetQuadrangleNormals (size_t i, MbFloatVector3D &n0, MbFloatVector3D &n1, MbFloatVector3D &n2, MbFloatVector3D &n3) const =0
virtual bool GetSingleNormal (MbVector3D &) const =0
virtual bool GetSingleNormal (MbFloatVector3D &) const =0
virtual void SynchronizNormals ()=0
 Если количество точек больше количества нормалей, то добавить недостающие нормали (только для плоской триангуляции).
const MbTriangleGetTriangle (size_t i) const
const MbQuadrangleGetQuadrangle (size_t i) const
const MbGridLoopGetGridLoop (size_t i) const
bool GetTriangleIndex (size_t i, uint &i0, uint &i1, uint &i2) const
bool GetQuadrangleIndex (size_t i, uint &i0, uint &i1, uint &i2, uint &i3) const
template<class TrianglesVector >
void GetTriangles (TrianglesVector &tVector) const
template<class QuadranglesVector >
void GetQuadrangles (QuadranglesVector &qVector) const
void ConvertQuadranglesToTriangles ()
 Преобразовать четырёхугольники в треугольники.
void ConvertAllToTriangles ()
 Преобразовать все объекты в треугольники и уравнять число точек и нормалей.
virtual bool TriangleIntersectRect (size_t i, MbRect &rect) const =0
 Определить, пересекается ли проекция на глобальную плоскость XY треугольника с заданным номером с присланным прямоугольником.
virtual void TriangleGetGabRect (size_t i, MbRect &rect) const =0
 Рассчитать габаритный прямоугольник проекции на глобальную плоскость XY треугольника с заданным номером.
virtual bool QuadrangleIntersectRect (size_t i, MbRect &rect) const =0
 Определить, пересекается ли проекция на глобальную плоскость XY четырёхугольника с заданным номером с присланным прямоугольником.
virtual void QuadrangleGetGabRect (size_t i, MbRect &rect) const =0
 Рассчитать габаритный прямоугольник проекции на глобальную плоскость XY четырёхугольника с заданным номером.
virtual void AddRect (MbRect &rect) const =0
 Расширить присланный габаритный прямоугольник так, чтобы он включал в себя проекцию данного объекта на глобальную плоскость XY.
virtual void AddCube (MbCube &r) const =0
 Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.
virtual bool RemoveRedundantPoints (bool deleteNormals, double epsilon=LENGTH_EPSILON)=0
 Удалить дублирующие с заданной точностью друг друга точки.
virtual MbeItemLocation GetLocation (const MbPlacement3D &pl, double eps, bool onlyInItem=false) const =0
 Определить положение объекта относительно плоскости.
virtual bool InsideLocation (const MbPlacement3D &place, MbRect &rect, double eps) const =0
 Определить положение объекта относительно трубы.
virtual void SetVista (const MbCartPoint3D &vista)=0
 Преобразовать триангуляцию так, чтобы её параллельная проекция выглядела как центральная проекция, наблюдаемая из заданной точки vista.
virtual void DeleteVista (const MbCartPoint3D &vista)=0
 Отменить преобразование триангуляцию для центральной проекции, наблюдаемой из заданной точки vista.
virtual void ParamsReserve (size_t n)=0
 Зарезервировать память для контейнера параметров.
virtual void PointsReserve (size_t n)=0
 Зарезервировать память для контейнера точек.
virtual void NormalsReserve (size_t n)=0
 Зарезервировать память для контейнера нормалей.
virtual void EscordsReserve (size_t n)=0
 Зарезервировать память для контейнера параметров.
void TrianglesReserve (size_t n)
 Зарезервировать память для контейнера треугольников.
void QuadranglesReserve (size_t n)
 Зарезервировать память для контейнера четырёхугольников.
void LoopsReserve (size_t n)
 Зарезервировать память для контейнера полигонов.
virtual void ReserveParamsPoints (size_t n)=0
 Зарезервировать память для контейнеров.
virtual void ReservePointsNormals (size_t n)=0
 Зарезервировать память для контейнеров.
virtual void ReserveParamsPointsNormals (size_t n)=0
 Зарезервировать память для контейнеров.
virtual void Flush ()=0
 Удалить всю триангуляцию без освобождения памяти, занятую контейнерами.
virtual void HardFlush ()=0
 Удалить всю триангуляцию и освободить память.
virtual void Adjust ()=0
 Освободить лишнюю память.
virtual size_t SizeOf () const =0
 Выдать размер занимаемой памяти.
virtual void Reverse ()=0
 Инвертировать последовательность вершин треугольников и четырехугольников.
virtual bool IsSame (const MbGrid &init, double eps) const =0
 Являются ли объекты равными?
const MbStepDataGetStepData () const
 Выдать параметр расчета триангуляции (стрелку прогиба или угол отклонения).
void SetStepData (const MbStepData &stData)
 Установить параметр расчета триангуляции (стрелку прогиба или угол отклонения).
const MbCubeCube () const
 Вернуть габаритный куб.
virtual void Init (const MbGrid &grid)=0
const MbTriangleGetTrianglesAddr () const
 Выдать адрес начала массива.
const MbQuadrangleGetQuadranglesAddr () const
 Выдать адрес начала массива.
virtual const MbCartPoint3DGetExactPointsAddr () const =0
 Выдать адрес начала массива.
virtual const MbVector3DGetExactNormalsAddr () const =0
 Выдать адрес начала массива.
virtual const MbCartPointGetExactParamsAddr () const =0
 Выдать адрес начала массива.
virtual const MbFloatPoint3DGetFloatPointsAddr () const =0
 Выдать адрес начала массива.
virtual const MbFloatVector3DGetFloatNormalsAddr () const =0
 Выдать адрес начала массива.
virtual const MbFloatPointGetFloatParamsAddr () const =0
 Выдать адрес начала массива.

Защищенные члены

 MbGrid (const MbGrid &init)
 MbGrid (const MbGrid &init, MbRegDuplicate *iReg)
 Конструктор копирования с регистратором.
 MbGrid ()
 Конструктор без параметров.

Защищенные данные

std::vector< MbTriangletriangles
 Индексное множество треугольных пластин содержит номера элементов множества params и/или множеств points и normals.
std::vector< MbQuadranglequadrangles
 Индексное множество четырёхугольных пластин содержит номера элементов множества params и/или множеств points и normals.
std::vector< MbGridLoop * > loops
 Индексное множество граничных циклов триангуляции содержит номера элементов множества points и/или params. Объект владеет элементами множества.
MbStepData stepData
 Параметр расчета триангуляции.
MbCube cube
 Габаритный куб объекта.

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

Триангуляция представляет собой набор треугольных и четырёхугольных пластин, стыкующихся друг с другом по общим сторонам.
В простейшем случае триангуляция состоит из набора точек и набора треугольников. Треугольник - это три номера из набора точек, определяющих вершины треугольника. Триангуляция используется для аппроксимации криволинейных поверхностей. В определенных случаях использование плоских пластин значительно упрощает работу с криволинейными поверхностями. Триангуляция описывает геометрическую форму объектов с определённой степенью точности.
Триангуляция используется для получения точечных изображений, вычисления масс-инерционных характеристик, проверки столкновений объектов, проведения численных экспериментов над моделями. Для одного и того же объекта триангуляция может иметь разное наполнение данных, в зависимости от назначения.

Назначения триангуляции
От назначения триангуляции зависит наполнение данных:
Если триангуляция предназначена для визуализации геометрической формы, то заполняются множества points и normals, шаг движения вдоль кривых и поверхностей вычисляется по стрелке прогиба, работают функции Step, StepU, StepV.
Если триангуляция предназначена для аппроксимации геометрической формы с привязкой к параметрам поверхности, то заполняются множества params, points и normals, шаг движения вдоль кривых и поверхностей вычисляется по стрелке прогиба.
Если триангуляция предназначена для вычисления инерционных характеристик, то заполняется множество params, шаг движения вдоль кривых и поверхностей вычисляется по углу отклонения нормали, работают функции DeviationStep, DeviationStepU, DeviationStepV.
Если триангуляция предназначена для определения столкновений элементов модели, то заполняются множества params и points, шаг движения вдоль кривых и поверхностей вычисляется по стрелке прогиба, работают функции Step, StepU, StepV.
Если триангуляция предназначена для разбивки на элементы, то заполняются множества points и normals, шаг движения вдоль кривых и поверхностей вычисляется с ограничением длины сторон треугольников, может быть добавлено ограничение по стрелке прогиба и углу отклонения нормали. (работают функции MetricStep, MetricStepU, MetricStepV).

Методы

virtual MbGrid& MbGrid::Duplicate ( MbRegDuplicate iReg = NULL) const [pure virtual]

Создать копию примитива с использованием регистратора. Регистратор используется для предотвращения многократного копирования примитива, входящего в состав нескольких объектов копируемых одновременно. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Взаимосвязь представляет собой наличие в объектах ссылок на общие примитивы. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного примитива, что ведет к потере связи между копиями.

Аргументы:
[in]iReg- Регистратор.
Возвращает:
Копия объекта.

Замещает MbPrimitive.

Замещается в MbExactGrid и MbFloatGrid.

virtual void MbGrid::Transform ( const MbMatrix3D matr) [pure virtual]

Преобразовать примитив согласно матрице c использованием регистратора. Регистратор служит для предотвращения многократного преобразования примитива, входящего в состав нескольких объектов, трансформируемых одновременно. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных примитивов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих примитивов, подлежащих трансформации.

Аргументы:
[in]matr- Матрица преобразования.

Замещает MbPrimitive.

Замещается в MbExactGrid и MbFloatGrid.

virtual void MbGrid::Move ( const MbVector3D to) [pure virtual]

Сдвинуть примитив вдоль вектора с использованием регистратора. Регистратор служит для предотвращения многократного преобразования примитива, входящего в состав нескольких объектов, трансформируемых одновременно. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных примитивов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих примитивов, подлежащих сдвигу.

Аргументы:
[in]to- Вектор сдвига.

Замещает MbPrimitive.

Замещается в MbExactGrid и MbFloatGrid.

virtual void MbGrid::Rotate ( const MbAxis3D axis,
double  angle 
) [pure virtual]

Повернуть примитив вокруг оси на заданный угол с использованием регистратора. Регистратор служит для предотвращения многократного преобразования примитива, входящего в состав нескольких объектов, трансформируемых одновременно. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных примитивов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих примитивов, подлежащих повороту.

Аргументы:
[in]axis- Ось поворота.
[in]angle- Угол поворота.

Замещает MbPrimitive.

Замещается в MbExactGrid и MbFloatGrid.

virtual MbeItemLocation MbGrid::GetLocation ( const MbPlacement3D pl,
double  eps,
bool  onlyInItem = false 
) const [pure virtual]

Определить положение объекта относительно плоскости XY локальной системы координат.

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

Замещается в MbExactGrid и MbFloatGrid.

virtual bool MbGrid::InsideLocation ( const MbPlacement3D place,
MbRect rect,
double  eps 
) const [pure virtual]

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

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

Замещается в MbExactGrid и MbFloatGrid.


Данные класса

MbCube MbGrid::cube [mutable, protected]

Габаритный куб объекта рассчитывается только при запросе габарита объекта. Габаритный куб в конструкторе объекта и после модификации объекта принимает неопределенное значение.


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