The OpenFOAM Foundation
triangle< Point, PointRef > Class Template Reference

A triangle primitive used to calculate face normals and swept volumes. More...

## Public Types

enum  proxType { NONE, POINT, EDGE }
Return types for classify. More...

## Public Member Functions

triangle (const Point &a, const Point &b, const Point &c)
Construct from three points. More...

triangle (const UList< Point > &, const FixedList< label, 3 > &indices)
Construct from three points in the list of points. More...

triangle (Istream &)
Construct from Istream. More...

const Point & a () const
Return first vertex. More...

const Point & b () const
Return second vertex. More...

const Point & c () const
Return third vertex. More...

Point centre () const
Return centre (centroid) More...

scalar mag () const
Return scalar magnitude. More...

vector normal () const
Return vector normal. More...

Point circumCentre () const
Return circum-centre. More...

scalar quality () const
Return quality: Ratio of triangle and circum-circle. More...

scalar sweptVol (const triangle &t) const
Return swept-volume. More...

tensor inertia (PointRef refPt=vector::zero, scalar density=1.0) const
Return the inertia tensor, with optional reference. More...

Point randomPoint (Random &rndGen) const
Return a random point on the triangle from a uniform. More...

Point randomPoint (cachedRandom &rndGen) const
Return a random point on the triangle from a uniform. More...

scalar barycentric (const point &pt, List< scalar > &bary) const
Calculate the barycentric coordinates of the given. More...

pointHit ray (const point &p, const vector &q, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction dir=intersection::VECTOR) const
Return point intersection with a ray. More...

pointHit intersection (const point &p, const vector &q, const intersection::algorithm alg, const scalar tol=0.0) const
Fast intersection with a ray. More...

pointHit nearestPointClassify (const point &p, label &nearType, label &nearLabel) const
Find the nearest point to p on the triangle and classify it: More...

pointHit nearestPoint (const point &p) const
Return nearest point to p on triangle. More...

bool classify (const point &p, label &nearType, label &nearLabel) const
Classify nearest point to p in triangle plane. More...

pointHit nearestPoint (const linePointRef &edge, pointHit &edgePoint) const
Return nearest point to line on triangle. Returns hit if. More...

## Friends

Istreamoperator>> (Istream &, triangle &)

Ostreamoperator (Ostream &, const triangle &)

## Detailed Description

### template<class Point, class PointRef> class Foam::triangle< Point, PointRef >

A triangle primitive used to calculate face normals and swept volumes.

Source files

Definition at line 57 of file triangle.H.

## Member Enumeration Documentation

 enum proxType

Return types for classify.

Enumerator
NONE
POINT
EDGE

Definition at line 89 of file triangle.H.

## Constructor & Destructor Documentation

 triangle ( const Point & a, const Point & b, const Point & c )
inline

Construct from three points.

Definition at line 34 of file triangleI.H.

 triangle ( const UList< Point > & points, const FixedList< label, 3 > & indices )
inline

Construct from three points in the list of points.

The indices could be from triFace etc.

Definition at line 48 of file triangleI.H.

 triangle ( Istream & is )
inline

Construct from Istream.

Definition at line 61 of file triangleI.H.

## Member Function Documentation

 const Point & a ( ) const
inline

Return first vertex.

Definition at line 70 of file triangleI.H.

Here is the caller graph for this function:

 const Point & b ( ) const
inline

Return second vertex.

Definition at line 76 of file triangleI.H.

Here is the caller graph for this function:

 const Point & c ( ) const
inline

Return third vertex.

Definition at line 82 of file triangleI.H.

Here is the caller graph for this function:

 Point centre ( ) const
inline

Return centre (centroid)

Definition at line 89 of file triangleI.H.

Referenced by momentOfInertia::massPropertiesShell(), and polyMesh::pointInCell().

Here is the caller graph for this function:

 Foam::scalar mag ( ) const
inline

Return scalar magnitude.

Definition at line 96 of file triangleI.H.

References Foam::mag().

Referenced by FreeStream< CloudType >::inflow(), and momentOfInertia::massPropertiesShell().

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::vector normal ( ) const
inline

Return vector normal.

Definition at line 103 of file triangleI.H.

Here is the caller graph for this function:

 Point circumCentre ( ) const
inline

Return circum-centre.

Definition at line 110 of file triangleI.H.

Here is the call graph for this function:

inline

Definition at line 137 of file triangleI.H.

References Foam::mag(), Foam::max(), Foam::min(), and Foam::sqrt().

Here is the call graph for this function:

 Foam::scalar quality ( ) const
inline

Return quality: Ratio of triangle and circum-circle.

area, scaled so that an equilateral triangle has a quality of 1

Definition at line 161 of file triangleI.H.

Here is the call graph for this function:

 Foam::scalar sweptVol ( const triangle< Point, PointRef > & t ) const
inline

Return swept-volume.

Definition at line 177 of file triangleI.H.

References triangle< Point, PointRef >::inertia().

Referenced by triangle< Point, PointRef >::quality().

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::tensor inertia ( PointRef refPt = `vector::zero`, scalar density = `1.0` ) const
inline

Return the inertia tensor, with optional reference.

point and density specification

Definition at line 196 of file triangleI.H.

References Foam::I, and Foam::mag().

Referenced by triFace::inertia(), and triangle< Point, PointRef >::sweptVol().

Here is the call graph for this function:

Here is the caller graph for this function:

 Point randomPoint ( Random & rndGen ) const
inline

Return a random point on the triangle from a uniform.

distribution

Definition at line 232 of file triangleI.H.

References s(), Random::scalar01(), and Foam::sqrt().

Referenced by FreeStream< CloudType >::inflow(), and patchInjectionBase::setPositionAndCell().

Here is the call graph for this function:

Here is the caller graph for this function:

 Point randomPoint ( cachedRandom & rndGen ) const
inline

Return a random point on the triangle from a uniform.

distribution

Definition at line 249 of file triangleI.H.

Here is the call graph for this function:

 Foam::scalar barycentric ( const point & pt, List< scalar > & bary ) const
inline

Calculate the barycentric coordinates of the given.

point, in the same order as a, b, c. Returns the determinant of the solution.

Definition at line 268 of file triangleI.H.

References Foam::mag(), triangle< Point, PointRef >::ray(), and List< T >::setSize().

Referenced by cellPointWeight::findTriangle(), and triangle< Point, PointRef >::randomPoint().

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::pointHit ray ( const point & p, const vector & q, const intersection::algorithm alg = `intersection::FULL_RAY`, const intersection::direction dir = `intersection::VECTOR` ) const
inline

Return point intersection with a ray.

For a hit, the distance is signed. Positive number represents the point in front of triangle. In case of miss pointHit is set to nearest point on triangle and its distance to the distance between the original point and the plane intersection point

Definition at line 309 of file triangleI.H.

Referenced by triangle< Point, PointRef >::barycentric(), and triFace::ray().

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::pointHit intersection ( const point & p, const vector & q, const intersection::algorithm alg, const scalar tol = `0.0` ) const
inline

Fast intersection with a ray.

For a hit, the pointHit.distance() is the line parameter t : intersection=p+t*q. Only defined for VISIBLE, FULL_RAY or HALF_RAY. tol increases the virtual size of the triangle by a relative factor.

Definition at line 425 of file triangleI.H.

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::pointHit nearestPointClassify ( const point & p, label & nearType, label & nearLabel ) const

Find the nearest point to p on the triangle and classify it:

+ near point (nearType=POINT, nearLabel=0, 1, 2) + near edge (nearType=EDGE, nearLabel=0, 1, 2) Note: edges are counted from starting vertex so e.g. edge 2 is from f[2] to f[0]

Definition at line 508 of file triangleI.H.

References cp, Foam::mag(), and triangle< Point, PointRef >::nearestPoint().

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::pointHit nearestPoint ( const point & p ) const
inline

Return nearest point to p on triangle.

Definition at line 657 of file triangleI.H.

References triangle< Point, PointRef >::classify().

Here is the call graph for this function:

Here is the caller graph for this function:

 bool classify ( const point & p, label & nearType, label & nearLabel ) const
inline

Classify nearest point to p in triangle plane.

w.r.t. triangle edges and points. Returns inside (true)/outside (false).

Definition at line 671 of file triangleI.H.

References triangle< Point, PointRef >::nearestPoint().

Referenced by triangle< Point, PointRef >::nearestPoint().

Here is the call graph for this function:

Here is the caller graph for this function:

 Foam::pointHit nearestPoint ( const linePointRef & edge, pointHit & edgePoint ) const
inline

Return nearest point to line on triangle. Returns hit if.

point is inside triangle. Sets edgePoint to point on edge (hit if nearest is inside line)

Definition at line 683 of file triangleI.H.

Here is the call graph for this function:

## Friends And Related Function Documentation

 Istream& operator>> ( Istream & , triangle< Point, PointRef > & )
friend
 Ostream& operator ( Ostream & , const triangle< Point, PointRef > & )
friend

The documentation for this class was generated from the following files:
• src/OpenFOAM/meshes/primitiveShapes/triangle/triangle.H
• src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H