45 for (
const point& pt : pts)
47 os <<
"v " << pt.x() <<
' ' << pt.y() <<
' ' << pt.z() <<
nl;
58 Foam::scalar Foam::surfaceIntersection::minEdgeLen
60 const triSurface& surf,
64 const labelList& pEdges = surf.pointEdges()[pointi];
66 scalar minLen = GREAT;
70 const edge&
e = surf.edges()[pEdges[pEdgeI]];
72 minLen =
min(minLen,
e.mag(surf.localPoints()));
80 Foam::label Foam::surfaceIntersection::getEdge
82 const triSurface& surf,
87 const edge faceEdge = surf.localFaces()[facei].edge(fp);
89 const labelList& eLabels = surf.faceEdges()[facei];
93 const label edgeI = eLabels[eI];
95 if (surf.edges()[edgeI] == faceEdge)
102 <<
"Problem:: Cannot find edge with vertices " << faceEdge
103 <<
" in face " << facei
111 void Foam::surfaceIntersection::removeDuplicates
117 bool hasDuplicate =
false;
119 label prevVertI = -1;
123 label newVertI = map[elems[elemI]];
125 if (newVertI == prevVertI)
131 prevVertI = newVertI;
142 elems[elemI++] = map[oldElems[0]];
144 for (label vertI = 1; vertI < oldElems.size(); vertI++)
147 label newVertI = map[oldElems[vertI]];
149 if (newVertI != elems.last())
151 elems[elemI++] = newVertI;
154 elems.setSize(elemI);
171 map.setSize(edges.size());
178 const edge&
e = edges[edgeI];
180 if ((
e.start() !=
e.end()) && uniqueEdges.insert(
e))
184 map[edgeI] = newEdgeI;
186 newEdges[newEdgeI++] =
e;
190 newEdges.setSize(newEdgeI);
207 map.setSize(elems.size());
214 label elem = elems[elemI];
216 if (uniqueElems.insert(elem))
220 map[elemI] = newElemI;
222 newElems[newElemI++] = elem;
226 newElems.setSize(newElemI);
232 void Foam::surfaceIntersection::writeIntersectedEdges
234 const triSurface& surf,
245 forAll(edgeCutVerts, edgeI)
247 const labelList& extraVerts = edgeCutVerts[edgeI];
249 if (extraVerts.size())
251 const edge&
e = surf.edges()[edgeI];
254 os <<
"l " <<
e.start()+1 <<
' '
255 << extraVerts[0] + surf.nPoints() + 1 <<
nl;
257 for (label i = 1; i < extraVerts.size(); i++)
259 os <<
"l " << extraVerts[i-1] + surf.nPoints() + 1 <<
' '
260 << extraVerts[i] + surf.nPoints() + 1 <<
nl;
263 os <<
"l " << extraVerts.last() + surf.nPoints() + 1
264 <<
' ' <<
e.end()+1 <<
nl;
271 Foam::label Foam::surfaceIntersection::classify
273 const scalar startTol,
277 const UList<point>&
points