Введение в BREP представление геометрических моделей.
Библиотека ZenCad основана на функциональных возможностях и объектной структуре геометрического ядра OpenCascade, использующего для работы с геометрическими моделями BREP (boundary representation/граничное представление).
Для более полного понимания работы библиотеки и использования продвинутых функций требуется хотя бы поверхностное понимание BREP и топологической структуры геометрических объектов в используемом геометрическом ядре.
BREP представление.
Граничное представление (ан. Boundary representation) есть способ представления тел через описание их границ.
Объект в граничном представлении задаётся топологически (с помощью набора ссылок на ограничивающие его объекты) и геометрически (с помощью порождающего его форму геометрического правила). Ограничивающие объекты в свою очередь задаются исходя из тех же соображений.
Так, например, куб является объёмным телом, порождённым внутренним пространством оболочки, образованной 6-ю гранями. Каждая грань геометрически задана уравнением плоскости и ограничена 4-мя объектами рёбер. Каждое ребро геометрически задано уравнением прямой и ограничено двумя вершинами.
В разных библиотеках, использующих BREP представление, разделение на классы объектов может выполняться с определённой спецификой, но общая идея будет неизменной. ZenCad использует систему классов ядра OpenCascade.
Классы геометрических объектов.
ZenCad | OpenCascade | Составной | Мерность | Описание |
---|---|---|---|---|
Shape | TopoDS_Shape | неопр. | неопр. | Абстрактный геометрический объект |
Vertex* | TopoDS_Vertex | нет | 0 | Вершина |
Edge | TopoDS_Edge | нет | 1 | Ребро |
Wire | TopoDS_Wire | да | 1 | Сложное ребро |
Face | TopoDS_Face | нет | 2 | Грань |
Shell | TopoDS_Shell | да | 2 | Оболочка |
Solid | TopoDS_Solid | нет | 3 | Твёрдое тело |
CompSolid | TopoDS_CompSolid | да | 3 | Множество твёрдых тел |
Compound | TopoDS_Compound | да | неопр. | Составной объект |
! * В zencad практически всегда вместо Vertex используется эквивалентный объект точки point3.
Более подробно о ядре.
Ядро OpenCascade довольно обширно, имеет бесчисленное количество инструментов и потому врядли возможно сколь-нибудь передать его суть в рамках этой маленькой справки.
За подробной информацией о геометрическом ядре OpenCascade следует обратиться к документации: Technology Overview Reference Manual