// Return true if the cut edge at loop[index] is preceded by cuts through // the edge end points. bool Foam::geomCellLooper::edgeEndsCut ( const labelList& loop, const label index ) const { label edgeI = getEdge(loop[index]); const edge& e = mesh().edges()[edgeI]; const label prevCut = loop[loop.rcIndex(index)]; const label nextCut = loop[loop.fcIndex(index)]; if (!isEdge(prevCut) && !isEdge(nextCut)) { // Cuts before and after are both vertices. Check if both // the edge endpoints label v0 = getVertex(prevCut); label v1 = getVertex(nextCut); if ( (v0 == e[0] && v1 == e[1]) || (v0 == e[1] && v1 == e[0]) ) { return true; } } return false; }
// Get faceEdges in order of face points, i.e. faceEdges[0] is between // f[0] and f[1] labelList getSortedEdges ( const edgeList& edges, const labelList& f, const labelList& edgeLabels ) { labelList faceEdges(edgeLabels.size(), -1); // Find starting pos in f for every edgeLabels forAll(edgeLabels, i) { label edgeI = edgeLabels[i]; const edge& e = edges[edgeI]; label fp = findIndex(f, e[0]); label fp1 = f.fcIndex(fp); if (f[fp1] == e[1]) { // EdgeI between fp -> fp1 faceEdges[fp] = edgeI; } else { // EdgeI between fp-1 -> fp faceEdges[f.rcIndex(fp)] = edgeI; } }