MbCurveEdge Face Edge
Class MbCurveEdge is declared in file topology.h.
Edge MbCurveEdge is a derived edge of MbEdge and represents an edge constructed on a surface intersection curve MbSurfaceIntersectionCurve. Edge MbCurveEdge is intended to describe a portion of a face boundary. Unlike edge MbEdge, edge MbCurveEdge describes not just a curve, but a portion of the junction of two faces or a portion of a face border.
The data structure of the face edge contains a pointer to the surface intersection curve MbSurfaceIntersectionCurve curve, a flag indicating coincidence of the edge direction with the curve direction sameSense, a pointer to the start vertex MbVertex begVertex, a pointer to the end vertex MbVertex endVertex, a pointer to the face on the left MbFace facePlus and a pointer to the face on the right MbFace faceMinus of the edge. Fig. 1 shows an edge connecting two faces.
Fig. 1
A face edge can describe a portion of the junction of two different faces. In this case, the pointers to the face on the left and the face on the right of the edge are not null and not equal to each other. The surfaces stored in the data structures of the faces connected by the edge coincide with the surfaces stored in the data structure of the edge curve, namely:
facePlus→surface→GetSurface() == curve→curveOne.suface and
faceMinus→surface→GetSurface() == curve→curveTwo.suface
or
facePlus→surface→GetSurface() == curve→curveTwo.suface and
faceMinus→surface→GetSurface() == curve→curveOne.suface.
For a face of a surface that is cyclically closed in one or both parameters, there are boundary segments where the face joins to itself. Such an edge is a seam. In this case, the pointers to the face on the left and the face on the right of the edge are equal to each other, see Fig. 2:
Fig. 2
A face edge can describe a portion of a face border. Such an edge is a border edge. In this case, the pointer to the face on the left or the face on the right of the edge is null, see Fig. 3.
Fig. 3
An edge with zero length is a pole edge and describes a face pole. A pole edge is not a border edge, because the face has no border at the pole edge. As a rule, a pole edge is located at special points of the face surface. In the parametric domain of the face surface, a certain curve corresponds to the pole segment. The pointers to the start and end vertex of a pole edge are equal. A pole edge is shown in Fig. 4:
Fig. 4
For a pole edge, the pointer to the face on the left or the face on the right of the edge is null. The intersection curve of the pole edge has the following data:
curve→curveOne.suface == curve→curveTwo.suface, and segment
curve→curveOne.curve is a duplicate of segment curve→curveTwo.curve.
A face edge may be named and may have attributes. The name can be used to identify the edge; attributes can carry additional information about the face edge, for example, color, style, origin, and so on.
A face edge is used for solid and hybrid modeling.