Полигональный объект с топологией MbPolymesh
Класс MbPolymesh объявлен в файле polymesh.h.
Полигональный объект MbPolymesh является наследником класса MbItem и описывается топологией _pTopo, представляющей собой описание полигонального объекта в виде структуры Halfedge.
Представление Halfedge – это представление полигональной модели в виде графа, где ключевым элементом представления является направленное ребро, ассоциированное с фасетом, которому оно принадлежит, и вершиной, из которой ребро исходит. Таким образом, каждое неграничное ребро поверхности представлено в виде пары противоположно направленных рёбер (реберной пары). Рёбра организуются в замкнутые циклы – фасеты.
Как дополнительный набор информации объект, помимо топологии, хранит информацию о сегментации объекта. Объект может быть разделён на регионы. Каждый регион содержит набор связных компонент, именуемых подрегионами. По аналогии с организацией Halfedge каждый подрегион может иметь один или несколько сегментационных рёберных циклов.
Для обеспечения гибкости представления каждому элементу топологии может быть назначен атрибут, хранящий дополнительную информацию о данном элементе. Так, например, у вершины может быть атрибут, хранящий информацию о её 3D-координатах. Через атрибуты возможно назначение пользователем производных данных типов bool, float, double, unsigned int, int и size_t.
Изображение полигонального объекта с визуализацией рёбер приведено на рис. 1. Регионы сегментации показаны разным цветом.
Рис. 1
Тонированное изображение полигонального объекта приведено на рис. 2. Циклы подрегионов показаны белым цветом.
Рис. 2
Фасеты могут иметь произвольное количество рёбер. Например, на рис. 3 видны пятиугольные фасеты, составляющие грани додекаэдра:
Рис. 3
Полигональный объект с топологией может быть создан из объекта MbMesh, а также сконструирован пользователем самостоятельно. Пример создания такого объекта можно найти в тестовом приложении в файле test_sample_polymesh.cpp. Топология необходима для анализа, лечения и редактирования полигональных объектов.