.. role:: blue :class: blue Полигональный объект MbMesh =========================== .. _MbMesh_Polygonal_Object: .. версия ядра: Класс :blue:`MbMesh` объявлен в файле *mesh.h*. Полигональный объект :blue:`MbMesh` является наследником класса :blue:`MbItem` и описывается множеством триангуляций RPArray< MbGrid > **grids**, множеством полигонов RPArray< MbPolygon3D > **wires**, множеством апексов RPArray< MbApex3D > **peaks**, указателем на оригинальный объект :ref:`MbRefItem ` *item*, типом *type*, габаритным кубом **cube** и признаком замкнутости *closed*. Полигональный объект представляет собой набор треугольных и четырёхугольных пластин, ломаных линий и отдельных точек. Одним из способов построения полигонального объекта является аппроксимация других объектов геометрической модели, например тела. Каждая *i*-ая грань тела аппроксимируется триангуляцией **grids**\[*i*], каждое *j*-ое ребро тела аппроксимируется полигоном **wires**\[*j*], каждой *k*-ой вершине тела соответствует апекс **peaks**\[*k*], признак замкнутости *closed* соответствует замкнутости тела. Ещё одним способом получения полигонального объекта является импорт данных с помощью конвертера полигонального представления. Триангуляция MbGrid представляет собой множество точек SArray< MbFloatPoint3D > **points**, согласованное с ним множество нормалей SArray< MbFloatVector3D > **normals** (количество точек равно количеству нормалей), множество двумерных точек параметрической области поверхности SArray< MbFloatPoint > **params** (количество двумерных точек равно количеству трёхмерных точек или равно нулю -- множество может быть пустым), множество треугольных пластин SArray< MbTriangle > *triangles* в виде трёх индексов множества точек **points**, множество четырёхугольных пластин SArray< MbQuadrangle > *quadrangles* в виде четырёх индексов множества точек **points**. Пластины триангуляции аппроксимируют некоторую поверхность. Полигон :blue:`MbPolygon3D` представляет собой упорядоченное множество точек, последовательное соединение которых даёт ломаную линию, аппроксимирующую некоторую кривую. Апекс :blue:`MbApex3D` представляет собой точку, наделённую дополнительными данными. Указатель на оригинальный объект **item** может быть равен нулю, а тип *type* может быть неопределённым. Векторное изображение полигонального объекта приведено на рис. 1: .. figure:: /MODELER/OBJECTS_OF_GEOMETRIC_MODEL/pictures/O.8.5.1.png :width: 12cm :align: center Рис. 1 Тонированное изображение полигонального объекта приведено на рис. 2: .. figure:: /MODELER/OBJECTS_OF_GEOMETRIC_MODEL/pictures/O.8.5.2.png :width: 12cm :align: center Рис. 2 На рисунке видны отдельные треугольники объекта из-за того, что направление нормалей в каждом треугольнике постоянно. Если направление нормалей в треугольниках триангуляции непрерывно меняется, то отдельные треугольники объекта становятся не видны, см. рис. 3: .. figure:: /MODELER/OBJECTS_OF_GEOMETRIC_MODEL/pictures/O.8.5.3.png :width: 12cm :align: center Рис. 3 Полигональный объект может быть создан методом :blue:`MbItem`:: :blue:`CreateMesh`\() или методом :blue:`MbItem`:: :blue:`AddYourMesh`\(). Полигональный объект используется для визуализации, расчётов и производства моделируемых объектов. Основным преимуществом полигонального объекта является простота и высокая скорость вычислений, например пересечения с прямой линией.