63 template<
class Po
int,
class Po
intRef>
class tetrahedron;
65 template<
class Po
int,
class Po
intRef>
72 template<
class Po
int,
class Po
intRef>
85 template<
class Po
int,
class Po
intRef>
121 tetIntersectionList& tets_;
134 PointRef a_, b_, c_, d_;
136 inline static point planeIntersection
144 template<
class TetOp>
145 inline static void decomposePrism
151 template<
class AboveTetOp,
class BelowTetOp>
152 inline static void tetSliceWithPlane
199 inline const Point&
a()
const;
201 inline const Point&
b()
const;
203 inline const Point&
c()
const;
205 inline const Point&
d()
const;
222 inline Point
centre()
const;
225 inline scalar
mag()
const;
263 template<
class AboveTetOp,
class BelowTetOp>
275 tetIntersectionList& insideTets,
277 tetIntersectionList& outsideTets,
305 friend Istream&
operator>> <Point, PointRef>
311 friend Ostream& operator<< <Point, PointRef>
cachedRandom rndGen(label(0),-1)
vector Sa() const
Return face normal.
A triangle primitive used to calculate face normals and swept volumes.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void gradNiGradNj(tensorField &buffer) const
A 1D vector of objects of type <T> with a fixed size <Size>.
tetrahedron(const Point &a, const Point &b, const Point &c, const Point &d)
Construct from points.
tetrahedron< point, const point & > tetPointRef
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
scalar circumRadius() const
Return circum-radius.
void operator()(const tetPoints &)
FixedList< tetPoints, 200 > tetIntersectionList
Storage type for tets originating from intersecting tets.
Geometric class that creates a 2D plane and can return the intersection point between a line and the ...
Point randomPoint(Random &rndGen) const
Return a random point in the tetrahedron from a.
void gradNiSquared(scalarField &buffer) const
Fill buffer with shape function products.
scalar quality() const
Return quality: Ratio of tetrahedron and circum-sphere.
const Point & a() const
Return vertices.
Forward declarations of the specialisations of Field<T> for scalar, vector and tensor.
Point centre() const
Return centre (centroid)
triPointRef tri(const label facei) const
Return i-th face.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Simple random number generator.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
void gradNiGradNi(tensorField &buffer) const
scalar mag() const
Return volume.
pointHit containmentSphere(const scalar tol) const
Return (min)containment sphere, i.e. the smallest sphere with.
void tetOverlap(const tetrahedron< Point, PointRef > &tetB, tetIntersectionList &insideTets, label &nInside, tetIntersectionList &outsideTets, label &nOutside) const
Decompose tet into tets inside and outside other tet.
void sliceWithPlane(const plane &pl, AboveTetOp &aboveOp, BelowTetOp &belowOp) const
Decompose tet into tets above and below plane.
Tet storage. Null constructable (unfortunately tetrahedron<point, point> is not)
bool inside(const point &pt) const
Return true if point is inside tetrahedron.
pointHit nearestPoint(const point &p) const
Return nearest point to p on tetrahedron. Is p itself.
scalar barycentric(const point &pt, List< scalar > &bary) const
Calculate the barycentric coordinates of the given.
Point circumCentre() const
Return circum-centre.
void gradNiDotGradNj(scalarField &buffer) const