.. role:: blue :class: blue Грань MbFace ============ .. _MbFace_Face: .. версия ядра: Класс :blue:`MbFace` объявлен в файле *topology.h*. Грань :blue:`MbFace` является наследником топологического объекта :ref:`MbTopologyItem ` и представляет собой конечный кусок поверхности, которому приписано направление нормали и определены границы. Сторону поверхности и грани, при взгляде на которую мы смотрим навстречу нормали, будем называть внешней, другую сторону будем называть внутренней. Стороны поверхности :ref:`MbSurface ` не обладают равноправием относительно нормали, так как у поверхности одна сторона всегда внешняя, а другая сторона всегда внутренняя. В отличие от поверхности для грани мы имеем возможность назначить направление нормали и тем самым назначить внешнюю и внутреннюю стороны. Структура данных грани содержит указатель на поверхность :ref:`MbSurface `\* **surface**, признак совпадения направления нормали грани с направлением нормали поверхности **sameSense** и совокупность циклов грани RPArray<:ref:`MbLoop `> **loops**. У грани есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов грани. Указатель на поверхность не может быть нулём. Признак совпадения направления нормали грани с направлением нормали поверхности принимает значение true, если нормали грани и поверхности совпадают, в противном случае признак принимает значение false. Сторону грани, при взгляде на которую мы смотрим навстречу нормали, называют внешней стороной, а другую сторону грани называют внутренней стороной. Циклы грани описывают границы грани. Каждая граница грани замкнута. Каждый цикл описывается последовательностью рёбер :ref:`MbOrientedEdge ` в порядке их следования вдоль границы. Количество циклов грани равно количеству границ поверхности грани. Одна из границ грани является внешней и содержит границы внутренних вырезов. Цикл, располагающийся первым по счёту в контейнере циклов, описывает внешнюю границу грани и содержит внутри себя внутренние циклы, которые описывают внутренние границы грани. Внешний цикл грани ориентирован против часовой стрелки, а внутренние циклы ориентированы по часовой стрелке, если смотреть навстречу нормали грани. Таким образом, при движении вдоль цикла грани по её внешней стороне грань всегда располагается слева. На рис. 1 стрелки указывают направления циклов грани и её нормали. .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.2.1.png :width: 12cm :align: center Рис. 1 Циклы одной грани не должны пересекать друг друга и сами себя. Грань может быть именована и может иметь атрибуты. Имя может использоваться для идентификации грани, атрибуты могут нести дополнительную информацию о грани, например, цвет, прозрачность, происхождение и так далее. Грань используется для твердотельного и гибридного моделирования.