triangle2D Class Reference

2-D triangle and queries More...

Inheritance diagram for triangle2D:
[legend]
Collaboration diagram for triangle2D:
[legend]

Public Member Functions

 triangle2D (const vector2D &a, const vector2D &b, const vector2D &c, const bool orient=false)
 Construct from 3 2-D points. More...
 
 triangle2D (const vector &a3d, const vector &b3d, const vector &c3d, const vector &axis1, const vector &axis2, const bool orient=false)
 Construct from 3 3-D points and axes. More...
 
label order () const
 
label snapClosePoints (const triangle2D &triB)
 
void interArea (const triangle2D &triB, vector2D &centre, scalar &area) const
 Return the intersection centre and area. More...
 
scalar interArea (const triangle2D &triB) const
 Return the intersection area. More...
 
bool overlaps (const triangle2D &triB) const
 Return true if triB overlaps. More...
 
scalar area () const noexcept
 Return the triangle area. More...
 
vector2D centre () const
 Return the triangle centre. More...
 
bool contains (const triangle2D &tri) const
 Return true if tri is within this triangle. More...
 
bool isSame (const triangle2D &triB) const
 Return true if triB is the same as this triangle. More...
 
bool pointInside (const vector2D &p) const
 Return true if t point p is inside this triangle. More...
 
- Public Member Functions inherited from FixedList< vector2D, 3 >
void writeEntry (const word &keyword, Ostream &os) const
 Write the list as a dictionary entry with keyword. More...
 
 FixedList ()=default
 Default construct. More...
 
 FixedList (const vector2D &val)
 Construct and initialize all entries to given value. More...
 
 FixedList (const Foam::zero)
 Construct and initialize all entries to zero. More...
 
 FixedList (const vector2D list[N])
 Copy construct from C-array (deprecated) More...
 
 FixedList (const FixedList< vector2D, N > &list)
 Copy construct. More...
 
 FixedList (FixedList< vector2D, N > &&list)
 
 FixedList (std::initializer_list< vector2D > list)
 Construct from an initializer list. Runtime size check. More...
 
 FixedList (const UList< vector2D > &list)
 Construct from UList. Runtime size check. More...
 
 FixedList (const FixedList< vector2D, AnyNum > &list, const FixedList< label, N > &indices)
 Copy construct from a subset of the input. No size check. More...
 
 FixedList (const UList< vector2D > &list, const FixedList< label, N > &indices)
 Copy construct from a subset of the input. No size check. More...
 
 FixedList (const SLList< vector2D > &list)
 Construct from SLList. Runtime size check. More...
 
 FixedList (Istream &is)
 Construct from Istream. More...
 
autoPtr< FixedList< vector2D, N > > clone () const
 Clone. More...
 
const vector2Dcdata () const noexcept
 Return pointer to the underlying array serving as data storage. More...
 
vector2Ddata () noexcept
 Return pointer to the underlying array serving as data storage. More...
 
const char * cdata_bytes () const noexcept
 Return pointer to the underlying array serving as data storage,. More...
 
char * data_bytes () noexcept
 Return pointer to the underlying array serving as data storage,. More...
 
vector2Dfirst () noexcept
 The first element of the list, position [0]. More...
 
const vector2Dfirst () const noexcept
 The first element of the list, position [0]. More...
 
vector2Dlast () noexcept
 The last element of the list, position [N-1]. More...
 
const vector2Dlast () const noexcept
 The last element of the list, position [N-1]. More...
 
label fcIndex (const label i) const
 
const vector2DfcValue (const label i) const
 Return forward circular value (ie, next value in the list) More...
 
vector2DfcValue (const label i)
 Return forward circular value (ie, next value in the list) More...
 
label rcIndex (const label i) const
 
const vector2DrcValue (const label i) const
 Return reverse circular value (ie, previous value in the list) More...
 
vector2DrcValue (const label i)
 Return reverse circular value (ie, previous value in the list) More...
 
void checkStart (const label start) const
 Check start is within valid range [0,size) More...
 
void checkSize (const label size) const
 Check size is identical to template parameter N. More...
 
void checkIndex (const label i) const
 Check index is within valid range [0,N) More...
 
bool uniform () const
 True if all entries have identical values, and list is non-empty. More...
 
label find (const vector2D &val, label pos=0) const
 Find index of the first occurrence of the value. More...
 
label rfind (const vector2D &val, label pos=-1) const
 Find index of the last occurrence of the value. More...
 
bool found (const vector2D &val, label pos=0) const
 True if the value if found in the list. More...
 
void resize (const label n)
 Dummy function, to make FixedList consistent with List. More...
 
void resize_nocopy (const label n)
 Dummy function, to make FixedList consistent with List. More...
 
void setSize (const label n)
 Dummy function, to make FixedList consistent with List. More...
 
void fill (const vector2D &val)
 Assign all entries to the given value. More...
 
void fill (const Foam::zero)
 Assign all entries to zero. More...
 
void moveFirst (const label i)
 Move element to the first position. More...
 
void moveLast (const label i)
 Move element to the last position. More...
 
void swapFirst (const label i)
 Swap element with the first element. More...
 
void swapLast (const label i)
 Swap element with the last element. More...
 
void transfer (FixedList< vector2D, N > &list)
 
vector2Doperator[] (const label i)
 Return element of FixedList. More...
 
const vector2Doperator[] (const label i) const
 Return element of constant FixedList. More...
 
void operator= (const vector2D list[N])
 Assignment to array operator. Takes linear time. More...
 
void operator= (const UList< vector2D > &list)
 Assignment to UList operator. Takes linear time. More...
 
void operator= (const SLList< vector2D > &list)
 Assignment to SLList operator. Takes linear time. More...
 
void operator= (std::initializer_list< vector2D > list)
 Assignment to an initializer list. Takes linear time. More...
 
void operator= (const vector2D &val)
 Assign all entries to the given value. fill() More...
 
void operator= (const Foam::zero)
 Assign all entries to zero. fill() More...
 
void operator= (const FixedList< vector2D, N > &list)
 Copy assignment. More...
 
void operator= (FixedList< vector2D, N > &&list)
 Move assignment. More...
 
iterator begin () noexcept
 Return an iterator to begin traversing the FixedList. More...
 
const_iterator begin () const noexcept
 Return const_iterator to begin traversing the constant FixedList. More...
 
iterator end () noexcept
 Return an iterator to end traversing the FixedList. More...
 
const_iterator end () const noexcept
 Return const_iterator to end traversing the constant FixedList. More...
 
const_iterator cbegin () const noexcept
 Return const_iterator to begin traversing the constant FixedList. More...
 
const_iterator cend () const noexcept
 Return const_iterator to end traversing the constant FixedList. More...
 
reverse_iterator rbegin ()
 Return reverse_iterator to begin reverse traversing the FixedList. More...
 
const_reverse_iterator rbegin () const
 Return const_reverse_iterator to begin reverse traversing FixedList. More...
 
reverse_iterator rend ()
 Return reverse_iterator to end reverse traversing the FixedList. More...
 
const_reverse_iterator rend () const
 Return const_reverse_iterator to end reverse traversing FixedList. More...
 
const_reverse_iterator crbegin () const
 Return const_reverse_iterator to begin reverse traversing FixedList. More...
 
const_reverse_iterator crend () const
 Return const_reverse_iterator to end reverse traversing FixedList. More...
 
void swap (FixedList< vector2D, N > &other)
 Swap lists by swapping the content of the individual list elements. More...
 
bool operator== (const FixedList< vector2D, N > &list) const
 Equality operation on FixedLists of the same type. More...
 
bool operator!= (const FixedList< vector2D, N > &list) const
 The opposite of the equality operation. Takes linear time. More...
 
bool operator< (const FixedList< vector2D, N > &list) const
 Compare two FixedLists lexicographically. Takes linear time. More...
 
bool operator> (const FixedList< vector2D, N > &list) const
 Compare two FixedLists lexicographically. Takes linear time. More...
 
bool operator<= (const FixedList< vector2D, N > &list) const
 Return true if !(a > b). Takes linear time. More...
 
bool operator>= (const FixedList< vector2D, N > &list) const
 Return true if !(a < b). Takes linear time. More...
 
IstreamreadList (Istream &is)
 Read from Istream, discarding contents of existing List. More...
 
OstreamwriteList (Ostream &os, const label shortLen=0) const
 Write List, with line-breaks in ASCII when length exceeds shortLen. More...
 

Static Public Member Functions

static void writeOBJ (Ostream &os, const triangle2D &tri, label offset)
 Write the triangle in OBJ format. More...
 
static label nClosePoints (const triangle2D &triA, const triangle2D &triB)
 Return the number of similar points between two triangles. More...
 
static scalar area (const vector2D &a, const vector2D &b, const vector2D &c)
 Return the signed area. More...
 
static bool lineSegmentIntersectionPoint (const vector2D &lp1, const vector2D &lp2, const vector2D &sp1, const vector2D &sp2, vector2D &intersection)
 
static bool lineIntersectionPoint (const vector2D &a, const vector2D &b, const vector2D &c, const vector2D &d, vector2D &intersection)
 
static bool lineIntersects (const vector2D &a, const vector2D &b, const vector2D &c, const vector2D &d)
 Return true if lines ab and cd intersect. More...
 
- Static Public Member Functions inherited from FixedList< vector2D, 3 >
static const FixedList< vector2D, N > & null ()
 Return a null FixedList. More...
 
static std::streamsize size_bytes () noexcept
 Number of contiguous bytes for the list data,. More...
 
static std::streamsize byteSize ()
 
static constexpr bool empty () noexcept
 Always false since zero-sized FixedList is compile-time disabled. More...
 
static constexpr label size () noexcept
 Return the number of elements in the FixedList. More...
 
static constexpr unsigned max_size () noexcept
 The dimensioned size (template parameter N) of the FixedList. More...
 

Static Public Attributes

static int debug = 0
 
static scalar relTol = 1e-8
 Relative tolerance. More...
 
static scalar absTol = 1e-10
 Absolute tolerance. More...
 

Additional Inherited Members

- Public Types inherited from FixedList< vector2D, 3 >
typedef vector2D value_type
 The value type the FixedList contains. More...
 
typedef vector2Dpointer
 The pointer type for non-const access to value_type items. More...
 
typedef const vector2Dconst_pointer
 The pointer type for const access to value_type items. More...
 
typedef vector2Dreference
 The type used for storing into value_type objects. More...
 
typedef const vector2Dconst_reference
 The type used for reading from constant value_type objects. More...
 
typedef vector2Diterator
 Random access iterator for traversing FixedList. More...
 
typedef const vector2Dconst_iterator
 Random access iterator for traversing FixedList. More...
 
typedef label size_type
 The type to represent the size of a FixedList. More...
 
typedef label difference_type
 The difference between iterator objects. More...
 
typedef std::reverse_iterator< iteratorreverse_iterator
 Reverse iterator (non-const access) More...
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 Reverse iterator (const access) More...
 
- Protected Member Functions inherited from FixedList< vector2D, 3 >
void writeEntry (Ostream &os) const
 Write the FixedList with its compound type. More...
 

Detailed Description

2-D triangle and queries

Source files

Definition at line 52 of file triangle2D.H.

Constructor & Destructor Documentation

◆ triangle2D() [1/2]

triangle2D ( const vector2D a,
const vector2D b,
const vector2D c,
const bool  orient = false 
)

Construct from 3 2-D points.

Definition at line 47 of file triangle2D.C.

References b.

◆ triangle2D() [2/2]

triangle2D ( const vector a3d,
const vector b3d,
const vector c3d,
const vector axis1,
const vector axis2,
const bool  orient = false 
)

Construct from 3 3-D points and axes.

Definition at line 71 of file triangle2D.C.

Member Function Documentation

◆ order()

Foam::label order ( ) const
inline

Returns: 1 if points are ordered in anti-clockwise direction -1 if points are ordered in clockwise direction 0 if the triangle has collapsed to a line

Definition at line 199 of file triangle2DI.H.

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

Referenced by triangle2D::interArea().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeOBJ()

void writeOBJ ( Ostream os,
const triangle2D tri,
label  offset 
)
inlinestatic

Write the triangle in OBJ format.

Definition at line 32 of file triangle2DI.H.

References Foam::endl(), Foam::nl, and os().

Here is the call graph for this function:

◆ nClosePoints()

Foam::label nClosePoints ( const triangle2D triA,
const triangle2D triB 
)
inlinestatic

Return the number of similar points between two triangles.

Definition at line 51 of file triangle2DI.H.

References forAll.

◆ area() [1/2]

Foam::scalar area ( const vector2D a,
const vector2D b,
const vector2D c 
)
inlinestatic

Return the signed area.

Definition at line 78 of file triangle2DI.H.

References b, and Vector2D< Cmpt >::perp().

Here is the call graph for this function:

◆ lineSegmentIntersectionPoint()

bool lineSegmentIntersectionPoint ( const vector2D lp1,
const vector2D lp2,
const vector2D sp1,
const vector2D sp2,
vector2D intersection 
)
inlinestatic

Set the intersection between a line and segment Return true if lines intersect

Definition at line 100 of file triangle2DI.H.

References Foam::endl(), Foam::mag(), Foam::nl, os(), Vector2D< Cmpt >::perp(), s(), Vector2D< Cmpt >::x(), and Vector2D< Cmpt >::y().

Here is the call graph for this function:

◆ lineIntersectionPoint()

bool lineIntersectionPoint ( const vector2D a,
const vector2D b,
const vector2D c,
const vector2D d,
vector2D intersection 
)
inlinestatic

Set the intersection between two lines Return true if lines intersect

Definition at line 156 of file triangle2DI.H.

References b.

◆ lineIntersects()

bool lineIntersects ( const vector2D a,
const vector2D b,
const vector2D c,
const vector2D d 
)
inlinestatic

Return true if lines ab and cd intersect.

Definition at line 169 of file triangle2DI.H.

References b, DebugInfo, and Foam::endl().

Here is the call graph for this function:

◆ snapClosePoints()

Foam::label snapClosePoints ( const triangle2D triB)

Snap [this] triangle's points to those of triB if they are within absTol

Returns the number of snapped points

Definition at line 93 of file triangle2D.C.

References forAll.

Referenced by faceAreaWeightAMI2D::storeInterArea().

Here is the caller graph for this function:

◆ interArea() [1/2]

void interArea ( const triangle2D triB,
vector2D centre,
scalar &  area 
) const

Return the intersection centre and area.

Definition at line 118 of file triangle2D.C.

References Foam::endl(), Foam::Info, n, OFstream::name(), Foam::name(), Foam::nl, triangle2D::order(), os(), p0, Vector2D< Cmpt >::x(), and Foam::Zero.

Here is the call graph for this function:

◆ interArea() [2/2]

Foam::scalar interArea ( const triangle2D triB) const

Return the intersection area.

Definition at line 265 of file triangle2D.C.

References Foam::Zero.

◆ overlaps()

bool overlaps ( const triangle2D triB) const

Return true if triB overlaps.

Definition at line 276 of file triangle2D.C.

References triangle2D::contains(), and Foam::j1().

Here is the call graph for this function:

◆ area() [2/2]

Foam::scalar area ( ) const
inlinenoexcept

Return the triangle area.

Definition at line 193 of file triangle2DI.H.

◆ centre()

Foam::vector2D centre ( ) const
inline

Return the triangle centre.

Definition at line 92 of file triangle2DI.H.

◆ contains()

bool contains ( const triangle2D tri) const
inline

Return true if tri is within this triangle.

Definition at line 205 of file triangle2DI.H.

Referenced by triangle2D::overlaps().

Here is the caller graph for this function:

◆ isSame()

bool isSame ( const triangle2D triB) const
inline

Return true if triB is the same as this triangle.

Definition at line 214 of file triangle2DI.H.

◆ pointInside()

bool pointInside ( const vector2D p) const
inline

Return true if t point p is inside this triangle.

Definition at line 225 of file triangle2DI.H.

References p.

Member Data Documentation

◆ debug

int debug = 0
static

Definition at line 67 of file triangle2D.H.

◆ relTol

Foam::scalar relTol = 1e-8
static

Relative tolerance.

Definition at line 70 of file triangle2D.H.

Referenced by faceAreaWeightAMI2D::storeInterArea().

◆ absTol

Foam::scalar absTol = 1e-10
static

Absolute tolerance.

Definition at line 73 of file triangle2D.H.


The documentation for this class was generated from the following files: