62 scalar minMag = GREAT;
65 for (
direction cmpt = 0; cmpt < vector::nComponents; cmpt++)
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];
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];
132 missMap[nMiss++] = i;
151 if (!plusInfo[i].hit() || !minInfo[i].hit())
162 if (!plusInfo[i].hit() || !minInfo[i].hit())
164 missMap[nMiss++] = i;
184 const word subGeomName(
dict.lookup(
"surface"));
191 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());
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();