Полигональный объект с топологией MbPolymesh

Класс MbPolymesh объявлен в файле polymesh.h.

Полигональный объект MbPolymesh является наследником класса MbItem и описывается топологией _pTopo, представляющей собой описание полигонального объекта в виде структуры Halfedge.

Представление Halfedge – это представление полигональной модели в виде графа, где ключевым элементом представления является направленное ребро, ассоциированное с фасетом, которому оно принадлежит, и вершиной, из которой ребро исходит. Таким образом, каждое неграничное ребро поверхности представлено в виде пары противоположно направленных рёбер (реберной пары). Рёбра организуются в замкнутые циклы – фасеты.

Как дополнительный набор информации объект, помимо топологии, хранит информацию о сегментации объекта. Объект может быть разделён на регионы. Каждый регион содержит набор связных компонент, именуемых подрегионами. По аналогии с организацией Halfedge каждый подрегион может иметь один или несколько сегментационных рёберных циклов.

Для обеспечения гибкости представления каждому элементу топологии может быть назначен атрибут, хранящий дополнительную информацию о данном элементе. Так, например, у вершины может быть атрибут, хранящий информацию о её 3D-координатах. Через атрибуты возможно назначение пользователем производных данных типов bool, float, double, unsigned int, int и size_t.

Изображение полигонального объекта с визуализацией рёбер приведено на рис. 1. Регионы сегментации показаны разным цветом.

../../../../_images/O.8.11.1.png

Рис. 1

Тонированное изображение полигонального объекта приведено на рис. 2. Циклы подрегионов показаны белым цветом.

../../../../_images/O.8.11.2.png

Рис. 2

Фасеты могут иметь произвольное количество рёбер. Например, на рис. 3 видны пятиугольные фасеты, составляющие грани додекаэдра:

../../../../_images/O.8.11.3.png

Рис. 3

Полигональный объект с топологией может быть создан из объекта MbMesh, а также сконструирован пользователем самостоятельно. Пример создания такого объекта можно найти в тестовом приложении в файле test_sample_polymesh.cpp. Топология необходима для анализа, лечения и редактирования полигональных объектов.