32 template<
class Po
int,
class Po
intRef>
47 storeOp inside(insideTets, nInside);
48 storeOp cutInside(cutInsideTets, nCutInside);
51 storeOp outside(outsideTets, nOutside);
64 sliceWithPlane(pl0, cutInside, outside);
79 for (
label i = 0; i < nCutInside; i++)
81 cutInsideTets[i].tet().sliceWithPlane(pl1, inside, outside);
96 for (
label i = 0; i < nInside; i++)
98 insideTets[i].tet().sliceWithPlane(pl2, cutInside, outside);
103 nInside = nCutInside;
114 for (
label i = 0; i < nCutInside; i++)
116 cutInsideTets[i].tet().sliceWithPlane(pl3, inside, outside);
128 template<
class Po
int,
class Po
intRef>
134 const scalar fac = 1 + tol;
152 scalar radiusSqr =
magSqr(ctr - a_);
156 radiusSqr < minRadiusSqr
162 minRadiusSqr = radiusSqr;
167 scalar radiusSqr =
magSqr(ctr - a_);
171 radiusSqr < minRadiusSqr
177 minRadiusSqr = radiusSqr;
182 scalar radiusSqr =
magSqr(ctr - a_);
186 radiusSqr < minRadiusSqr
192 minRadiusSqr = radiusSqr;
197 scalar radiusSqr =
magSqr(ctr - b_);
201 radiusSqr < minRadiusSqr
207 minRadiusSqr = radiusSqr;
216 point ctr = 0.5*(a_ + b_);
217 scalar radiusSqr =
magSqr(a_ - ctr);
218 scalar testRadSrq = facSqr*radiusSqr;
222 radiusSqr < minRadiusSqr
223 &&
magSqr(c_-ctr) <= testRadSrq
224 &&
magSqr(d_-ctr) <= testRadSrq)
228 minRadiusSqr = radiusSqr;
234 point ctr = 0.5*(a_ + c_);
235 scalar radiusSqr =
magSqr(a_ - ctr);
236 scalar testRadSrq = facSqr*radiusSqr;
240 radiusSqr < minRadiusSqr
241 &&
magSqr(b_-ctr) <= testRadSrq
242 &&
magSqr(d_-ctr) <= testRadSrq
247 minRadiusSqr = radiusSqr;
253 point ctr = 0.5*(a_ + d_);
254 scalar radiusSqr =
magSqr(a_ - ctr);
255 scalar testRadSrq = facSqr*radiusSqr;
259 radiusSqr < minRadiusSqr
260 &&
magSqr(b_-ctr) <= testRadSrq
261 &&
magSqr(c_-ctr) <= testRadSrq
266 minRadiusSqr = radiusSqr;
272 point ctr = 0.5*(b_ + c_);
273 scalar radiusSqr =
magSqr(b_ - ctr);
274 scalar testRadSrq = facSqr*radiusSqr;
278 radiusSqr < minRadiusSqr
279 &&
magSqr(a_-ctr) <= testRadSrq
280 &&
magSqr(d_-ctr) <= testRadSrq
285 minRadiusSqr = radiusSqr;
291 point ctr = 0.5*(b_ + d_);
292 scalar radiusSqr =
magSqr(b_ - ctr);
293 scalar testRadSrq = facSqr*radiusSqr;
297 radiusSqr < minRadiusSqr
298 &&
magSqr(a_-ctr) <= testRadSrq
299 &&
magSqr(c_-ctr) <= testRadSrq)
303 minRadiusSqr = radiusSqr;
309 point ctr = 0.5*(c_ + d_);
310 scalar radiusSqr =
magSqr(c_ - ctr);
311 scalar testRadSrq = facSqr*radiusSqr;
315 radiusSqr < minRadiusSqr
316 &&
magSqr(a_-ctr) <= testRadSrq
317 &&
magSqr(b_-ctr) <= testRadSrq
322 minRadiusSqr = radiusSqr;
333 template<
class Po
int,
class Po
intRef>
347 buffer[0] = (1.0/9.0)*
magSqr(Sa())/magVol;
348 buffer[1] = (1.0/9.0)*
magSqr(Sb())/magVol;
349 buffer[2] = (1.0/9.0)*
magSqr(Sc())/magVol;
350 buffer[3] = (1.0/9.0)*
magSqr(Sd())/magVol;
354 template<
class Po
int,
class Po
intRef>
375 buffer[0] = (1.0/9.0)*(sa & sb)/magVol;
376 buffer[1] = (1.0/9.0)*(sa & sc)/magVol;
377 buffer[2] = (1.0/9.0)*(sa & sd)/magVol;
378 buffer[3] = (1.0/9.0)*(sd & sb)/magVol;
379 buffer[4] = (1.0/9.0)*(sb & sc)/magVol;
380 buffer[5] = (1.0/9.0)*(sd & sc)/magVol;
384 template<
class Po
int,
class Po
intRef>
395 buffer[0] = (1.0/9.0)*
sqr(Sa())/magVol;
396 buffer[1] = (1.0/9.0)*
sqr(Sb())/magVol;
397 buffer[2] = (1.0/9.0)*
sqr(Sc())/magVol;
398 buffer[3] = (1.0/9.0)*
sqr(Sd())/magVol;
402 template<
class Po
int,
class Po
intRef>
419 buffer[0] = (1.0/9.0)*(sa * sb)/magVol;
420 buffer[1] = (1.0/9.0)*(sa * sc)/magVol;
421 buffer[2] = (1.0/9.0)*(sa * sd)/magVol;
422 buffer[3] = (1.0/9.0)*(sd * sb)/magVol;
423 buffer[4] = (1.0/9.0)*(sb * sc)/magVol;
424 buffer[5] = (1.0/9.0)*(sd * sc)/magVol;