42 if ((faceNormals[faceLabels[i]] & n) < SMALL)
66 octantNormal /=
mag(octantNormal);
79 if (
visNormal(pointNormals[pointI], faceNormals, pFaces))
81 pn[pointI] = pointNormals[pointI];
87 "Foam::meshTools::calcBoxPointNormals(const primitivePatch& pp)"
88 ) <<
"Average point normal not visible for point:"
103 const vector& n = faceNormals[pFaces[i]];
113 else if (n.
x() < -SMALL)
129 else if (n.
y() < -SMALL)
144 else if (n.
z() < -SMALL)
157 for (label octant = 0; octant < 8; octant++)
159 if (visOctant & mask)
173 pn[pointI] = octantNormal[visI];
177 pn[pointI] = vector::zero;
181 "Foam::meshTools::calcBoxPointNormals"
182 "(const primitivePatch& pp)"
183 ) <<
"No visible octant for point:" << pp.
meshPoints()[pointI]
185 <<
"Normal set to " << pn[pointI] <<
endl;
214 os <<
"v " << pt.
x() <<
' ' << pt.
y() <<
' ' << pt.
z() <<
endl;
232 const face&
f = faces[faceLabels[i]];
236 if (foamToObj.insert(f[fp], vertI))
246 os <<
' ' << foamToObj[f[fp]]+1;
248 os <<
' ' << foamToObj[f[0]]+1 <<
endl;
265 writeOBJ(os, faces, points, allFaces);
282 const cell& cFaces = cells[cellLabels[i]];
286 usedFaces.insert(cFaces[j]);
290 writeOBJ(os, faces, points, usedFaces.toc());
356 label edgeI = candidates[i];
358 const edge&
e = edges[edgeI];
360 if ((e[0] == v0 && e[1] == v1) || (e[0] == v1 && e[1] == v0))
382 label edgeI = v0Edges[i];
384 const edge&
e = edges[edgeI];
407 label edge0 = f0Edges[f0EdgeI];
411 label edge1 = f1Edges[f1EdgeI];
421 "meshTools::getSharedEdge(const primitiveMesh&, const label"
423 ) <<
"Faces " << f0 <<
" and " << f1 <<
" do not share an edge"
438 const cell& cFaces = mesh.
cells()[cell0I];
442 label faceI = cFaces[cFaceI];
460 "meshTools::getSharedFace(const primitiveMesh&, const label"
462 ) <<
"No common face for"
463 <<
" cell0I:" << cell0I <<
" faces:" << cFaces
464 <<
" cell1I:" << cell1I <<
" faces:"
465 << mesh.
cells()[cell1I]
489 label faceI = eFaces[eFaceI];
506 if ((face0 == -1) || (face1 == -1))
510 "meshTools::getEdgeFaces(const primitiveMesh&, const label"
511 ", const label, label&, label&"
512 ) <<
"Can not find faces using edge " << mesh.
edges()[edgeI]
523 const label thisEdgeI,
524 const label thisVertI
527 forAll(edgeLabels, edgeLabelI)
529 label edgeI = edgeLabels[edgeLabelI];
531 if (edgeI != thisEdgeI)
535 if ((e.
start() == thisVertI) || (e.
end() == thisVertI))
544 "meshTools::otherEdge(const primitiveMesh&, const labelList&"
545 ", const label, const label)"
546 ) <<
"Can not find edge in "
548 <<
" connected to edge "
549 << thisEdgeI <<
" with vertices " << mesh.
edges()[thisEdgeI]
585 const label otherCellI,
593 "meshTools::otherCell(const primitiveMesh&, const label"
595 ) <<
"Face " << faceI <<
" is not internal"
599 label newCellI = mesh.
faceOwner()[faceI];
601 if (newCellI == otherCellI)
615 const label startEdgeI,
616 const label startVertI,
622 label edgeI = startEdgeI;
624 label vertI = startVertI;
626 for (label iter = 0; iter < nEdges; iter++)
628 edgeI =
otherEdge(mesh, fEdges, edgeI, vertI);
630 vertI = mesh.
edges()[edgeI].otherVertex(vertI);
648 for (
direction cmpt=0; cmpt<vector::nComponents; cmpt++)
650 if (dirs[cmpt] == -1)
652 pt[cmpt] = 0.5*(min[cmpt] + max[cmpt]);
669 bool isConstrained =
false;
670 for (
direction cmpt=0; cmpt<vector::nComponents; cmpt++)
672 if (dirs[cmpt] == -1)
674 isConstrained =
true;
683 for (
direction cmpt=0; cmpt<vector::nComponents; cmpt++)
685 if (dirs[cmpt] == -1)
687 pts[i][cmpt] = 0.5*(min[cmpt] + max[cmpt]);
703 for (
direction cmpt=0; cmpt<vector::nComponents; cmpt++)
705 if (dirs[cmpt] == -1)
720 bool isConstrained =
false;
721 for (
direction cmpt=0; cmpt<vector::nComponents; cmpt++)
723 if (dirs[cmpt] == -1)
725 isConstrained =
true;
734 for (
direction cmpt=0; cmpt<vector::nComponents; cmpt++)
736 if (dirs[cmpt] == -1)
776 const label startEdgeI
783 "Foam::meshTools::getCutDir(const label, const label)"
790 label edgeI = startEdgeI;
794 for (label i = 0; i < 3; i++)
801 if ((eVec & avgVec) > 0)
810 label vertI = mesh.
edges()[edgeI].
end();
815 avgVec /=
mag(avgVec) + VSMALL;
833 "Foam::meshTools::getCutDir(const label, const vector&)"
841 scalar maxCos = -GREAT;
844 for (label i = 0; i < 4; i++)
848 label e0 = cEdges[cEdgeI];
850 if (!doneEdges.found(e0))
854 scalar cosAngle =
mag(avgDir & cutDir);
856 if (cosAngle > maxCos)
866 doneEdges.insert(e0);
867 doneEdges.insert(e1);
868 doneEdges.insert(e2);
869 doneEdges.insert(e3);
876 if (!doneEdges.found(cEdges[cEdgeI]))
880 "meshTools::cutDirToEdge(const label, const vector&)"
881 ) <<
"Cell:" << cellI <<
" edges:" << cEdges <<
endl
882 <<
"Edge:" << cEdges[cEdgeI] <<
" not yet handled"
891 "meshTools::cutDirToEdge(const label, const vector&)"
892 ) <<
"Problem : did not find edge aligned with " << cutDir