Грань MbFace
Класс MbFace объявлен в файле topology.h.
Грань MbFace является наследником топологического объекта MbTopologyItem и представляет собой конечный кусок поверхности, которому приписано направление нормали и определены границы. Сторону поверхности и грани, при взгляде на которую мы смотрим навстречу нормали, будем называть внешней, другую сторону будем называть внутренней. Стороны поверхности MbSurface не обладают равноправием относительно нормали, так как у поверхности одна сторона всегда внешняя, а другая сторона всегда внутренняя. В отличие от поверхности для грани мы имеем возможность назначить направление нормали и тем самым назначить внешнюю и внутреннюю стороны.
Структура данных грани содержит указатель на поверхность MbSurface* surface, признак совпадения направления нормали грани с направлением нормали поверхности sameSense и совокупность циклов грани RPArray<MbLoop> loops. У грани есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов грани.
Указатель на поверхность не может быть нулём. Признак совпадения направления нормали грани с направлением нормали поверхности принимает значение true, если нормали грани и поверхности совпадают, в противном случае признак принимает значение false. Сторону грани, при взгляде на которую мы смотрим навстречу нормали, называют внешней стороной, а другую сторону грани называют внутренней стороной.
Циклы грани описывают границы грани. Каждая граница грани замкнута. Каждый цикл описывается последовательностью рёбер MbOrientedEdge в порядке их следования вдоль границы. Количество циклов грани равно количеству границ поверхности грани. Одна из границ грани является внешней и содержит границы внутренних вырезов. Цикл, располагающийся первым по счёту в контейнере циклов, описывает внешнюю границу грани и содержит внутри себя внутренние циклы, которые описывают внутренние границы грани. Внешний цикл грани ориентирован против часовой стрелки, а внутренние циклы ориентированы по часовой стрелке, если смотреть навстречу нормали грани. Таким образом, при движении вдоль цикла грани по её внешней стороне грань всегда располагается слева. На рис. 1 стрелки указывают направления циклов грани и её нормали.
Рис. 1
Циклы одной грани не должны пересекать друг друга и сами себя.
Грань может быть именована и может иметь атрибуты. Имя может использоваться для идентификации грани, атрибуты могут нести дополнительную информацию о грани, например, цвет, прозрачность, происхождение и так далее.
Грань используется для твердотельного и гибридного моделирования.