C3D Kernel  104598
Классы | Перечисления | Функции
Полигональные объекты
Методы геометрических вычислений
Граф связей класса Полигональные объекты:

Классы

class  MbMeshProcessor
 Класс для создания тела в граничном представлении по полигональной сетке. Подробнее...
struct  MbCurvature
 Данные о кривизне и главных направлениях изменений кривизны. Подробнее...
class  MbFloatPoint
 Двумерная точка. Подробнее...
class  MbFloatPoint3D
 Трехмерная точка. Подробнее...
class  MbFloatVector3D
 Трехмерный вектор. Подробнее...
class  MbFloatAxis3D
 Ось. Подробнее...
class  MbExactGrid
 Триангуляция на числах double. Подробнее...
class  MbFloatGrid
 Триангуляция на числах float. Подробнее...
class  MbExactPolygon3D
 Полигон на числах double. Подробнее...
class  MbFloatPolygon3D
 Полигон на числах float. Подробнее...
class  MbPolygon
 Двумерный полигон. Подробнее...
class  MbPrimitive
 Примитив. Подробнее...
class  MbApex3D
 Апекс (точка). Подробнее...
class  MbExactApex3D
 Апекс на числах double. Подробнее...
class  MbFloatApex3D
 Апекс на числах float. Подробнее...
class  MbPolygon3D
 Полигон. Подробнее...
class  MbGrid
 Триангуляция. Подробнее...
class  MbTriangle
 Tреугольник. Подробнее...
class  MbQuadrangle
 Четырёхугольник. Подробнее...
class  MbElement
 Объемный элемент. Подробнее...
class  MbGridLoop
 Граница триангуляции. Подробнее...
class  MbGridSegment
 Сегмент(результат сегментации) полигональной сетки. Подробнее...
class  MbFaceAndGrid
 Математическая грань и ее рассчитанная решетка. Подробнее...
struct  MbLumpAndFaces
 Тело с массивом граней и триангуляционных решеток. Подробнее...

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

enum  MbePrimitiveType {
  pt_Apex3D, pt_ExactApex3D, pt_FloatApex3D, pt_Polygon3D,
  pt_ExactPolygon3D, pt_FloatPolygon3D, pt_Grid, pt_ExactGrid,
  pt_FloatGrid
}
 Типы примитивов. Подробнее...
enum  MbeMoveType { mt_Forward = 0, mt_Backward = 1 }
 Направление движения Подробнее...

Функции

void CalculateWire (const MbPlaneItem &obj, const MbPlacement3D &plane, double sag, MbMesh &mesh)
 Построить полигональный двухмерный объект.
MbResultType CreateIcosahedron (const MbPlacement3D &place, double radius, const MbFormNote &fn, MbMesh *&result)
 Построить икосаэдр в виде полигональной модели.
MbResultType CreateSpherePolyhedron (const MbPlacement3D &place, double radius, double &epsilon, MbMesh *&result)
 Построить полигональную сферу.
MbResultType CreateConvexPolyhedron (const SArray< MbFloatPoint3D > &points, MbMesh *&result)
 Вычислить выпуклую оболочку для множества точек.
MbResultType CreateConvexPolyhedron (const MbMesh &mesh, double offset, MbMesh *&result)
 Построить выпуклую оболочку для триангуляционной сетки.
bool AreIntersectConvexPolyhedrons (const MbMesh &mesh1, const MbMesh &mesh2)
 Определить, пересекаются ли данные выпуклые сетки.
MbResultType MeshCutting (MbMesh &mesh, MbeCopyMode sameShell, const MbPlacement3D &place, int part, const MbSNameMaker &names, bool closed, MbMesh *&result)
 Отрезать часть полигонального объекта плоскостью.
MbResultType CalculateBallPivotingGrid (const MbCollection &collection, double radius, double radiusMin, double angle, MbMesh *&result)
 Построить триангуляцию по облаку точек на основе алгоритма поворотного шара.
static MbMeshProcessorMbMeshProcessor::Create (const MbCollection &collection)
 Создать экземпляр процессора по коллекции.
virtual void MbMeshProcessor::SetRelativeTolerance (double tolerance)=0
 Установить относительную точность.
virtual void MbMeshProcessor::SetTolerance (double tolerance)=0
 Установить точность.
virtual double MbMeshProcessor::GetTolerance () const =0
 Получить точность.
virtual const MbCollectionMbMeshProcessor::GetSimplifiedMesh ()=0
 Получить исправленную (упрощенную) копию входной полигональной сетки.
virtual const MbCollectionMbMeshProcessor::GetSegmentedMesh ()=0
 Получить сегментированную копию входной полигональной сетки.
virtual const std::vector
< MbCurvature > & 
MbMeshProcessor::CalculateCurvatures ()=0
 Рассчитать главные кривизны и главные направления изменения кривизн в точках сетки.
virtual MbResultType MbMeshProcessor::SegmentMesh (bool createSurfaces=true)=0
 Сегментровать полигональную сетку.
virtual MbResultType MbMeshProcessor::CreateBRepShell (MbFaceShell *&pShell)=0
 Создать оболочку.
virtual void MbMeshProcessor::FitSurfaceToSegment (size_t idxSegment)=0
 Вписать поверхность.
virtual void MbMeshProcessor::FitSurfaceToSegment (size_t idxSegment, MbeSpaceType surfaceType)=0
 Вписать поверхность заданного типа.
virtual const MbSurfaceMbMeshProcessor::GetSegmentSurface (size_t idxSegment) const =0
 Получить поверхность для сегмента.
virtual void MbMeshProcessor::ResetSegmentation ()=0
 Очистить сегментацию полигональной сетки.
virtual bool MbMeshProcessor::FindShortestVertexPath (uint v1, uint v2, std::vector< uint > &path)=0
 Найти ближайший путь между двумя вершинами коллекции.
MbResultType ConvertMeshToShell (MbMesh &mesh, MbFaceShell *&shell, double tolerance=0.1)
 Создать оболочку по полигональной сетке c автоматическим распознаванием поверхностей.
MbResultType ConvertCollectionToShell (MbCollection &collection, MbFaceShell *&shell, double tolerance=0.1)
 Создать оболочку по коллекции, содержащей полигональную сетку c автоматическим распознаванием поверхностей.
void CalculateHideMesh (const MbSurface &surf, const MbVector3D &eyeDir, double sag, MbMesh *&mesh)
 Рассчитать сетку.
void TriangulateRegion (const MbRegion &region, double sag, MbPlanarGrid &grid)
 Трингуляция двумерного региона

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

Типы примитивов полигонального объекта.

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

Апекс.

pt_ExactApex3D 

Апекс на числах double.

pt_FloatApex3D 

Апекс на числах float.

pt_Polygon3D 

Полигон.

pt_ExactPolygon3D 

Полигон на числах double.

pt_FloatPolygon3D 

Полигон на числах float.

pt_Grid 

Триангуляция.

pt_ExactGrid 

Триангуляция на числах double.

pt_FloatGrid 

Триангуляция на числах float.

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

Вперед.

mt_Backward 

Назад.


Функции

void CalculateWire ( const MbPlaneItem obj,
const MbPlacement3D plane,
double  sag,
MbMesh mesh 
)

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

Аргументы:
[in]obj- Двумерный объект (если NULL, то объект не создаётся).
[in]plane- Локальная система координат.
[in]sag- Максимальное отклонение полигонального объекта от оригинала по прогибу.
[out]mesh- Полигональный объект.
MbResultType CreateIcosahedron ( const MbPlacement3D place,
double  radius,
const MbFormNote fn,
MbMesh *&  result 
)

Построить икосаэдр в виде полигональной модели.

Аргументы:
[in]place- Местная система координат.
[in]radius- Радиус описанной сферы.
[in]fn- Способ построения полигонального объекта.
[out]result- Результат построения.
Возвращает:
Возвращает код результата операции.
MbResultType CreateSpherePolyhedron ( const MbPlacement3D place,
double  radius,
double &  epsilon,
MbMesh *&  result 
)

Построить аппроксимацию сферы выпуклым многогранником.

Аргументы:
[in]place- Местная система координат.
[in]radius- Радиус сферы.
[in]epsilon- Параметр аппроксимации сферы.
[out]result- Результат построения.
Возвращает:
Возвращает код результата операции.
MbResultType CreateConvexPolyhedron ( const SArray< MbFloatPoint3D > &  points,
MbMesh *&  result 
)

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

Возвращает:
Возвращает код результата операции.
MbResultType CreateConvexPolyhedron ( const MbMesh mesh,
double  offset,
MbMesh *&  result 
)

Построить сетку, представляющую собой выпуклую оболочку для тела, заданного его триангуляционной сеткой. По заданному объекту MbMesh строится охватывающая его вершины выпуклая триангуляционная сетка. Расстояние offset задает смещение точек результирующей сетки относительно заданной вдоль нормалей к её граням. Если offset = 0, то результирующая сетка будет в точности охватывать все вершины заданной. Смещение по нормали может быть как положительным, так и отрицательным (внутрь сетки). Используется для определения пересечения с некоторым допуском (offset).

Аргументы:
[in]mesh- Исходная триангуляционная сетка.
[in]offset- Отступ по нормали для результирующей сетки.
[out]resMesh- Результирующая выпуклая триангуляционная сетка.
Возвращает:
Возвращает код результата операции.
bool AreIntersectConvexPolyhedrons ( const MbMesh mesh1,
const MbMesh mesh2 
)

Определить, пересекаются ли данные выпуклые оболочки, заданные триангуляционными сетками. Пересечение определяется по алгоритму Гильберта-Джонсона-Керти (Gilbert-Johnson-Keerthi). Заданные сетки равноправны, их последовательность в алгоритме не важна. Сложность алгоритма линейная, зависит от количества вершин сеток.

Аргументы:
[in]mesh1- Первая выпуклая триангуляционная сетка.
[in]mesh2- Вторая выпуклая триангуляционная сетка.
Возвращает:
true - Выпуклые триангуляционные сетки пересекаются. false - Выпуклые триангуляционные сетки не пересекаются.
MbResultType MeshCutting ( MbMesh mesh,
MbeCopyMode  sameShell,
const MbPlacement3D place,
int  part,
const MbSNameMaker names,
bool  closed,
MbMesh *&  result 
)

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

Аргументы:
[in]solid- Исходный полигональный объект.
[in]sameShell- Режим копирования исходного объекта.
[in]surface- Секущая плоскость.
[in]part- Направление отсечения.
[in]names- Именователь.
[in]closed- Флаг режима отсечения: true - сечем как тело, false - сечем как оболочку.
[out]result- Построенный полигональный объект.
Возвращает:
Возвращает код результата операции.
MbResultType CalculateBallPivotingGrid ( const MbCollection collection,
double  radius,
double  radiusMin,
double  angle,
MbMesh *&  result 
)
Аргументы:
[in]collection- Коллекция трехмерных элементов.
[in]radius- Радиус поворотного шара, если radius==0 будет предпринята попытка его автоопределения.
[in]radiusMin- Радиус кластеризации ( в % от радиуса поворотного шара ).
[in]angle- Максимальный угол между двумя соседними элементами сетки.
[out]result- Построенный полигональный объект.
Возвращает:
Возвращает код результата операции.
static MbMeshProcessor* MbMeshProcessor::Create ( const MbCollection collection) [static]

Создать экземпляр процессора по коллекции. Пользователь должен сам удалить объект.

Аргументы:
[in]collection- Входная коллекция, содержащая треугольную сетку.
Возвращает:
Возвращает указатель на созданный объект.
virtual void MbMeshProcessor::SetRelativeTolerance ( double  tolerance) [pure virtual]

Установить относительную точность по габаритам текущей сетки.

Аргументы:
[in]tolerance- Относительная точность.
virtual void MbMeshProcessor::SetTolerance ( double  tolerance) [pure virtual]

Установить точность распознавания поверхностей и расширения сегментов сетки. Метод должен быть вызван перед вызовом SegmentMesh. Точность по умолчанию равна 0.1.

Аргументы:
[in]tolerance- Точность.
virtual double MbMeshProcessor::GetTolerance ( ) const [pure virtual]

Получить текущую точность, используемую при распознавании поверхностей и расширения сегментов сетки.

Возвращает:
Возвращает абсолютную точность.
virtual const MbCollection& MbMeshProcessor::GetSimplifiedMesh ( ) [pure virtual]

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

Возвращает:
Возвращает исправленную версию входной полигональной сетки.
virtual const MbCollection& MbMeshProcessor::GetSegmentedMesh ( ) [pure virtual]

Получить сегменитрованную копию входной сетки, на которой выполняются операции MbMeshProcessor: подсчет кривизн, сегментация, построение оболочки. Сегментация доступна внутри коллекции.

Возвращает:
Возвращает сегментированную версию входной полигональной сетки.
virtual const std::vector<MbCurvature>& MbMeshProcessor::CalculateCurvatures ( ) [pure virtual]

Рассчитать главные кривизны и главные направления изменения кривизн в точках сетки.

Возвращает:
Возвращает главные кривизны и главные направления в точках сетки.
virtual MbResultType MbMeshProcessor::SegmentMesh ( bool  createSurfaces = true) [pure virtual]

Выполнить сегментацию полигональной сетки.

Возвращает:
Возвращает код результата операции.
Аргументы:
[in]createSurfaces- Создавать ли поверхности на сегментах.
virtual MbResultType MbMeshProcessor::CreateBRepShell ( MbFaceShell *&  pShell) [pure virtual]

Создать оболочку в граничном представлении, соответствующее модели, заданной полигональной сеткой. Используется текущая сегментация. Если сегментация не была вычислена, но вычисляется автоматическая сегментация (с параметрами по умолчанию).

Аргументы:
[out]pShell- Указатель на созданную оболочку.
Возвращает:
Возвращает код результата операции.
virtual void MbMeshProcessor::FitSurfaceToSegment ( size_t  idxSegment) [pure virtual]

Распознать поверхность по сегменту сетки с заданным индексом. Распознанная поверхность может быть получена с помощью метода GetSegmentSurface.

Аргументы:
[in]idxSegment- Индекс сегмента полигональной сетки.
virtual void MbMeshProcessor::FitSurfaceToSegment ( size_t  idxSegment,
MbeSpaceType  surfaceType 
) [pure virtual]

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

Аргументы:
[in]idxSegment- Индекс сегмента полигональной сетки.
[in]surfaceType- Тип вписываемой поверхности.
virtual const MbSurface* MbMeshProcessor::GetSegmentSurface ( size_t  idxSegment) const [pure virtual]

Получить поверхность, вписанную в сегмент. Чтобы поверхность была определена предварительно должны быть вызваны методы SegmentMesh или FitSurfaceToSegment. Распознанная поверхность с помощью метода GetSegmentSurface.

Аргументы:
[in]idxSegment- Индекс сегмента полигональной сетки.
Возвращает:
Возвращает указатель на поверхность для сегмента, если поверхность определена, иначе - NULL.
virtual void MbMeshProcessor::ResetSegmentation ( ) [pure virtual]

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

virtual bool MbMeshProcessor::FindShortestVertexPath ( uint  v1,
uint  v2,
std::vector< uint > &  path 
) [pure virtual]

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

Аргументы:
[in]v1- Индекс первой вершины.
[in]v2- Индекс второй вершины.
[out]path- Путь из первой вершины во вторую. Массив содержит последовательные индексы всех вершин пути.
Возвращает:
Возвращает код результата операции.
MbResultType ConvertMeshToShell ( MbMesh mesh,
MbFaceShell *&  shell,
double  tolerance = 0.1 
)

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

Аргументы:
[in]mesh- Входная сетка.
[out]shell- Указатель на созданную оболочку.
[in]tolerance- Точность распознавания поверхностей(по умолчанию равна 0.1).
Возвращает:
Возвращает код результата операции.
MbResultType ConvertCollectionToShell ( MbCollection collection,
MbFaceShell *&  shell,
double  tolerance = 0.1 
)

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

Аргументы:
[in]collection- Коллекция, содержащая входную сетку.
[out]shell- Указатель на созданную оболочку.
[in]tolerance- Точность распознавания поверхностей(по умолчанию равна 0.1).
Возвращает:
Возвращает код результата операции.
void CalculateHideMesh ( const MbSurface surf,
const MbVector3D eyeDir,
double  sag,
MbMesh *&  mesh 
)

Рассчитать сетку массива кривых очерка поверхности.

void TriangulateRegion ( const MbRegion region,
double  sag,
MbPlanarGrid grid 
)

Трингуляция двумерного региона. Регион region должен быть корректным (на некорректном работает неправильно)

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