62 scalar minMag = GREAT;
67 if (
mag(n[cmpt]) < minMag)
69 minMag =
mag(n[cmpt]);
74 offsets[0][minCmpt] = 1.0;
76 offsets[0] -= n[minCmpt]*n;
77 offsets[0] /=
mag(offsets[0]);
79 offsets[1] = n ^ offsets[0];
90 void Foam::searchableSurfaceWithGaps::offsetVecs
98 offset0.setSize(start.size());
99 offset1.setSize(start.size());
103 const Pair<vector> offsets(offsetVecs(start[i], end[i]));
104 offset0[i] = offsets[0];
105 offset1[i] = offsets[1];
110 Foam::label Foam::searchableSurfaceWithGaps::countMisses
112 const List<pointIndexHit>& info,
125 missMap.setSize(nMiss);
132 missMap[nMiss++] = i;
141 Foam::label Foam::searchableSurfaceWithGaps::countMisses
143 const List<pointIndexHit>& plusInfo,
144 const List<pointIndexHit>& minInfo,
151 if (!plusInfo[i].hit() || !minInfo[i].hit())
157 missMap.setSize(nMiss);
162 if (!plusInfo[i].hit() || !minInfo[i].hit())
164 missMap[nMiss++] = i;
174 Foam::searchableSurfaceWithGaps::searchableSurfaceWithGaps
184 const word subGeomName(dict.
lookup(
"surface"));
189 subGeom_.set(0, &const_cast<searchableSurface&>(s));
212 surface().findLine(start, end, info);
216 label nMiss = countMisses(info, compactMap);
243 const vectorField smallVec(SMALL*(compactEnd-compactStart));
248 compactStart+offset0-smallVec,
249 compactEnd+offset0+smallVec,
255 compactStart-offset0-smallVec,
256 compactEnd-offset0+smallVec,
263 if (plusInfo[i].hit() && minInfo[i].hit())
265 info[compactMap[i]] = plusInfo[i];
266 info[compactMap[i]].rawPoint() -= offset0[i];
271 nMiss = countMisses(plusInfo, minInfo, plusMissMap);
284 label mapI = plusMissMap[i];
285 compactStart[i] = compactStart[mapI];
286 compactEnd[i] = compactEnd[mapI];
287 compactMap[i] = compactMap[mapI];
288 offset0[i] = offset0[mapI];
289 offset1[i] = offset1[mapI];
297 const vectorField smallVec(SMALL*(compactEnd-compactStart));
301 compactStart+offset1-smallVec,
302 compactEnd+offset1+smallVec,
307 compactStart-offset1-smallVec,
308 compactEnd-offset1+smallVec,
315 if (plusInfo[i].hit() && minInfo[i].hit())
317 info[compactMap[i]] = plusInfo[i];
318 info[compactMap[i]].rawPoint() -= offset1[i];
334 findLine(start, end, info);
347 findLine(start, end, nearestInfo);
352 if (nearestInfo[pointI].hit())
355 info[pointI][0] = nearestInfo[pointI];
359 info[pointI].
clear();