34 template<
class Po
int,
class Po
intRef>
35 template<
class AboveOp,
class BelowOp>
45 FixedList<scalar, 3> d;
53 d[i] = pln.signedDistance(tri[i]);
76 label i1 = d.fcIndex(i0);
77 label i2 = d.fcIndex(i1);
80 point p01 = planeIntersection(d, tri, i0, i1);
81 point p02 = planeIntersection(d, tri, i0, i2);
83 aboveOp(triPoints(tri[i1], tri[i2], p02));
84 aboveOp(triPoints(tri[i1], p02, p01));
85 belowOp(triPoints(tri[i0], p01, p02));
93 label i1 = d.fcIndex(i0);
94 label i2 = d.fcIndex(i1);
97 point p01 = planeIntersection(d, tri, i0, i1);
98 point p02 = planeIntersection(d, tri, i0, i2);
100 belowOp(triPoints(tri[i1], tri[i2], p02));
101 belowOp(triPoints(tri[i1], p02, p01));
102 aboveOp(triPoints(tri[i0], p01, p02));
112 template<
class Po
int,
class Po
intRef>
113 template<
class AboveOp,
class BelowOp>
121 triSliceWithPlane(pl,
triPoints(a_, b_, c_), aboveOp, belowOp);
125 template<
class Po
int,
class Po
intRef>
126 template<
class Ins
ideOp,
class Outs
ideOp>
144 storeOp insideOpA(insideTrisA, nInsideA);
148 storeOp outsideOpA(outsideTrisA, nOutsideA);
158 const plane pl0(tgt.
a(), tgt.
b(), tgt.
b() +
s*
n);
159 triSliceWithPlane(pl0, thisTri, insideOpA, outsideOpA);
164 if (insideOpA.
nTris_ == 0)
170 if (outsideOpA.
nTris_ == 0)
182 storeOp insideOpB(insideTrisB, nInsideB);
190 const plane pl0(tgt.
b(), tgt.
c(), tgt.
c() +
s*
n);
192 for (label i = 0; i < insideOpA.
nTris_; i++)
195 triSliceWithPlane(pl0, tri, insideOpB, outsideOpA);
212 const plane pl0(tgt.
c(), tgt.
a(), tgt.
a() +
s*
n);
216 for (label i = 0; i < insideOpB.
nTris_; i++)
219 triSliceWithPlane(pl0, tri, insideOpA, outsideOpA);
232 for (label i = 0; i < insideOpA.
nTris_; i++)
234 insideOp(insideOpA.
tris_[i]);
237 for (label i = 0; i < outsideOpA.
nTris_; i++)
239 outsideOp(outsideOpA.
tris_[i]);