.. role:: blue :class: blue Ребро грани MbCurveEdge ======================= .. _MbCurveEdge_Face_Edge: .. версия ядра: Класс :blue:`MbCurveEdge` объявлен в файле *topology.h*. Ребро :blue:`MbCurveEdge` является наследником ребра :blue:`MbEdge` и представляет собой ребро, построенное на кривой пересечения поверхностей :ref:`MbSurfaceIntersectionCurve `. Ребро :blue:`MbCurveEdge` предназначено для описания участка границы грани. В отличие от ребра :blue:`MbEdge` ребро :blue:`MbCurveEdge` описывает не просто кривую, а участок стыковки двух граней или участок края грани. Структура данных ребра грани содержит указатель на кривую пересечения поверхностей :ref:`MbSurfaceIntersectionCurve ` **curve**, признак совпадения направления ребра с направлением кривой *sameSense*, указатель на начальную вершину :blue:`MbVertex` **begVertex**, указатель на конечную вершину :blue:`MbVertex` **endVertex**, указатель на грань слева :blue:`MbFace` **facePlus** и указатель на грань справа :blue:`MbFace` **faceMinus** от ребра. На рис. 1 приведено ребро, соединяющее две грани. .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.1.png :width: 12cm :align: center Рис. 1 Ребро грани может описывать участок стыковки двух различных граней. В этом случае указатели на грань слева и грань справа от ребра не равны нулю и не равны друг другу. Поверхности, лежащие в структурах данных соединяемых ребром граней, совпадают с поверхностями, лежащими в структуре данных кривой ребра, а именно: **facePlus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveOne.suface и **faceMinus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveTwo.suface или **facePlus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveTwo.suface и **faceMinus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveOne.suface. У циклически замкнутой по одному или обоим параметрам поверхности грани присутствуют участки границы, по которым грань стыкуется сама с собой. Такое ребро является швом. В этом случае указатели на грань слева и грань справа от ребра равны друг другу, рис. 2: .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.2.png :width: 12cm :align: center Рис. 2 Ребро грани может описывать участок края грани. Такое ребро является краевым. В этом случае указатель на грань слева или грань справа от ребра равен нулю, рис. 3. .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.3.png :width: 12cm :align: center Рис. 3 Ребро, имеющее нулевую длину, является полюсным и описывает полюс грани. Полюсное ребро не является краевым, так как грань в полюсном ребре не имеет края. Как правило, полюсное ребро располагается в особых точках поверхности грани. В области параметров поверхности грани полюсному участку соответствует некоторая кривая. Указатели на начальную и конечную вершину полюсного ребра равны. Полюсное ребро приведено на рис. 4: .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.4.png :width: 12cm :align: center Рис. 4 У полюсного ребра указатель на грань слева или грань справа от ребра равен нулю. Кривая пересечения полюсного ребра имеет следующие данные: **curve**\→\ curveOne.suface == **curve**\→\ curveTwo.suface, а отрезок **curve**\→\ curveOne.curve является дублем отрезка **curve**\→\ curveTwo.curve. Ребро грани может быть именовано и может иметь атрибуты. Имя может использоваться для идентификации ребра, атрибуты могут нести дополнительную информацию о ребре грани, например, цвет, стиль, происхождение и так далее. Ребро грани используется для твердотельного и гибридного моделирования.