41 searchableSurfaceWithGaps,
67 scalar minMag = GREAT;
72 if (
mag(
n[cmpt]) < minMag)
74 minMag =
mag(
n[cmpt]);
79 offsets[0][minCmpt] = 1.0;
81 offsets[0] -=
n[minCmpt]*
n;
82 offsets[0] /=
mag(offsets[0]);
84 offsets[1] =
n ^ offsets[0];
95 void Foam::searchableSurfaceWithGaps::offsetVecs
103 offset0.setSize(start.size());
104 offset1.setSize(start.size());
108 const Pair<vector> offsets(offsetVecs(start[i],
end[i]));
109 offset0[i] = offsets[0];
110 offset1[i] = offsets[1];
115 Foam::label Foam::searchableSurfaceWithGaps::countMisses
117 const List<pointIndexHit>& info,
130 missMap.setSize(nMiss);
137 missMap[nMiss++] = i;
146 Foam::label Foam::searchableSurfaceWithGaps::countMisses
148 const List<pointIndexHit>& plusInfo,
149 const List<pointIndexHit>& minInfo,
156 if (!plusInfo[i].hit() || !minInfo[i].hit())
162 missMap.setSize(nMiss);
167 if (!plusInfo[i].hit() || !minInfo[i].hit())
169 missMap[nMiss++] = i;
179 Foam::searchableSurfaceWithGaps::searchableSurfaceWithGaps
197 bounds() = subGeom_[0].bounds();
214 surface().findLine(start,
end, info);
218 label nMiss = countMisses(info, compactMap);
245 const vectorField smallVec(1
e-6*(compactEnd-compactStart));
250 compactStart+offset0-smallVec,
251 compactEnd+offset0+smallVec,
257 compactStart-offset0-smallVec,
258 compactEnd-offset0+smallVec,
265 if (plusInfo[i].hit() && minInfo[i].hit())
267 info[compactMap[i]] = plusInfo[i];
268 info[compactMap[i]].rawPoint() -= offset0[i];
273 nMiss = countMisses(plusInfo, minInfo, plusMissMap);
286 label mapI = plusMissMap[i];
287 compactStart[i] = compactStart[mapI];
288 compactEnd[i] = compactEnd[mapI];
289 compactMap[i] = compactMap[mapI];
290 offset0[i] = offset0[mapI];
291 offset1[i] = offset1[mapI];
293 compactStart.setSize(plusMissMap.size());
294 compactEnd.setSize(plusMissMap.size());
295 compactMap.
setSize(plusMissMap.size());
296 offset0.setSize(plusMissMap.size());
297 offset1.setSize(plusMissMap.size());
299 const vectorField smallVec(1
e-6*(compactEnd-compactStart));
303 compactStart+offset1-smallVec,
304 compactEnd+offset1+smallVec,
309 compactStart-offset1-smallVec,
310 compactEnd-offset1+smallVec,
317 if (plusInfo[i].hit() && minInfo[i].hit())
319 info[compactMap[i]] = plusInfo[i];
320 info[compactMap[i]].rawPoint() -= offset1[i];
336 findLine(start,
end, info);
349 findLine(start,
end, nearestInfo);
354 if (nearestInfo[pointi].hit())
357 info[pointi][0] = nearestInfo[pointi];
361 info[pointi].
clear();