I found a solution in this article .
:

# :
public class WingedEdge
{
public Curve3d Curve { get; set; }
public Edge EndLeftEdge { get; set; }
public Edge EndRightEdge { get; set; }
public Vertex EndVertex { get; set; }
public Face LeftFace { get; set; }
public Face RightFace { get; set; }
public Edge StartLeftEdge { get; set; }
public Edge StartRightEdge { get; set; }
public Vertex StartVertex { get; set; }
}
, , :
public class Face
{
public WingedEdge FirstEdge { get; set; }
}
, :
WingedEdge edge = face.FirstEdge;
do {
WingedEdge edge = edge.LeftFace == face ? edge.LeftNextEdge : edge.RightNextEdge;
} while (edge != face.FirstEdge)
(?:) , . , .
( ).