35 template<
class>
class FaceList,
43 const PrimitivePatch<Face, FaceList, PointField, PointType>&
p
49 const Field<PointType>& localPoints =
p.localPoints();
56 const labelList& faceNbs = edgeFaces[edgeI];
58 if (faceNbs.size() > 2)
62 const edge&
e = edges[edgeI];
64 const point& edgePt = localPoints[
e.start()];
67 e2 /=
mag(e2) + VSMALL;
71 const Face& f0 = localFaces[faceNbs[0]];
73 scalar maxAngle = GREAT;
78 if (f0[fpI] !=
e.start())
80 vector faceEdgeDir = localPoints[f0[fpI]] - edgePt;
81 faceEdgeDir /=
mag(faceEdgeDir) + VSMALL;
83 const scalar angle = e2 & faceEdgeDir;
85 if (
mag(angle) < maxAngle)
88 maxAngleEdgeDir = faceEdgeDir;
95 vector e0 = e2 ^ maxAngleEdgeDir;
96 e0 /=
mag(e0) + VSMALL;
101 SortableList<scalar> faceAngles(faceNbs.size());
106 for (
label nbI = 1; nbI < faceNbs.size(); nbI++)
110 const Face&
f = localFaces[faceNbs[nbI]];
117 if (
f[fpI] !=
e.start())
119 vector faceEdgeDir = localPoints[
f[fpI]] - edgePt;
120 faceEdgeDir /=
mag(faceEdgeDir) + VSMALL;
122 const scalar angle = e2 & faceEdgeDir;
124 if (
mag(angle) < maxAngle)
127 maxAngleEdgeDir = faceEdgeDir;
132 vector vec = e2 ^ maxAngleEdgeDir;
133 vec /=
mag(vec) + VSMALL;