Triangulation of faces. Handles concave polygons as well (inefficiently) More...
#include <triSurface/faceTriangulation.H>
Triangulation of faces. Handles concave polygons as well (inefficiently)
Works by trying to subdivide the face at the vertex with 'flattest' internal angle (i.e. closest to 180 deg).
Based on routine 'Diagonal' in
"Efficient Triangulation of Simple Polygons" Godfried Toussaint, McGill University.
After construction is the list of triangles the face is decomposed into. (Or empty list if no valid triangulation could be found).
Definition at line 66 of file faceTriangulation.H.
Public Member Functions | |
faceTriangulation () | |
Construct null. | |
faceTriangulation (const pointField &points, const face &f, const bool fallBack=false) | |
Construct from face and points. Decomposition based on average. | |
faceTriangulation (const pointField &points, const face &f, const vector &n, const bool fallBack=false) | |
Construct from face and points and user supplied (unit) normal. | |
faceTriangulation (Istream &) | |
Construct from Istream. | |
![]() | |
List () | |
Null constructor. | |
List (const label) | |
Construct with given size. | |
List (const label, const T &) | |
Construct with given size and value for all elements. | |
List (const List< T > &) | |
Copy constructor. | |
List (const Xfer< List< T > > &) | |
Construct by transferring the parameter contents. | |
List (List< T > &, bool reUse) | |
Construct as copy or re-use as specified. | |
List (const UList< T > &, const unallocLabelList &mapAddressing) | |
Construct as subset. | |
template<class InputIterator > | |
List (InputIterator first, InputIterator last) | |
Construct given start and end iterators. | |
template<unsigned Size> | |
List (const FixedList< T, Size > &) | |
Construct as copy of FixedList<T, Size> | |
List (const PtrList< T > &) | |
Construct as copy of PtrList<T> | |
List (const SLList< T > &) | |
Construct as copy of SLList<T> | |
List (const IndirectList< T > &) | |
Construct as copy of IndirectList<T> | |
List (const UIndirectList< T > &) | |
Construct as copy of UIndirectList<T> | |
List (const BiIndirectList< T > &) | |
Construct as copy of BiIndirectList<T> | |
List (Istream &) | |
Construct from Istream. | |
autoPtr< List< T > > | clone () const |
Clone. | |
~List () | |
label | size () const |
Return the number of elements in the UList. | |
void | resize (const label) |
Reset size of List. | |
void | resize (const label, const T &) |
Reset size of List and value for new elements. | |
void | setSize (const label) |
Reset size of List. | |
void | setSize (const label, const T &) |
Reset size of List and value for new elements. | |
void | clear () |
Clear the list, i.e. set size to zero. | |
void | append (const UList< T > &) |
Append a List at the end of this list. | |
void | append (const UIndirectList< T > &) |
Append a UIndirectList at the end of this list. | |
void | transfer (List< T > &) |
Transfer the contents of the argument List into this list. | |
template<unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> | |
void | transfer (DynamicList< T, SizeInc, SizeMult, SizeDiv > &) |
Transfer the contents of the argument List into this list. | |
void | transfer (SortableList< T > &) |
Transfer the contents of the argument List into this list. | |
Xfer< List< T > > | xfer () |
Transfer contents to the Xfer container. | |
T & | newElmt (const label) |
Return subscript-checked element of UList. | |
void | operator= (const UList< T > &) |
Assignment from UList operator. Takes linear time. | |
void | operator= (const List< T > &) |
Assignment operator. Takes linear time. | |
void | operator= (const SLList< T > &) |
Assignment from SLList operator. Takes linear time. | |
void | operator= (const IndirectList< T > &) |
Assignment from IndirectList operator. Takes linear time. | |
void | operator= (const UIndirectList< T > &) |
Assignment from UIndirectList operator. Takes linear time. | |
void | operator= (const BiIndirectList< T > &) |
Assignment from BiIndirectList operator. Takes linear time. | |
void | operator= (const T &) |
Assignment of all entries to the given value. | |
![]() | |
UList () | |
Null constructor. | |
UList (T *__restrict__ v, label size) | |
Construct from components. | |
label | fcIndex (const label i) const |
Return the forward circular index, i.e. the next index. | |
label | rcIndex (const label i) const |
Return the reverse circular index, i.e. the previous index. | |
label | byteSize () const |
Return the binary size in number of characters of the UList. | |
const T * | cdata () const |
Return a const pointer to the first data element,. | |
T * | data () |
Return a pointer to the first data element,. | |
void | checkStart (const label start) const |
Check start is within valid range (0 ... size-1). | |
void | checkSize (const label size) const |
Check size is within valid range (0 ... size). | |
void | checkIndex (const label i) const |
Check index i is within valid range (0 ... size-1). | |
void | writeEntry (Ostream &) const |
Write the UList as a dictionary entry. | |
void | writeEntry (const word &keyword, Ostream &) const |
Write the UList as a dictionary entry with keyword. | |
void | assign (const UList< T > &) |
Assign elements to those from UList. | |
T & | operator[] (const label) |
Return element of UList. | |
const T & | operator[] (const label) const |
Return element of constant UList. | |
operator const Foam::List< T > & () const | |
Allow cast to a const List<T>&. | |
iterator | begin () |
Return an iterator to begin traversing the UList. | |
iterator | end () |
Return an iterator to end traversing the UList. | |
const_iterator | cbegin () const |
Return const_iterator to begin traversing the constant UList. | |
const_iterator | cend () const |
Return const_iterator to end traversing the constant UList. | |
const_iterator | begin () const |
Return const_iterator to begin traversing the constant UList. | |
const_iterator | end () const |
Return const_iterator to end traversing the constant UList. | |
reverse_iterator | rbegin () |
Return reverse_iterator to begin reverse traversing the UList. | |
reverse_iterator | rend () |
Return reverse_iterator to end reverse traversing the UList. | |
const_reverse_iterator | crbegin () const |
Return const_reverse_iterator to begin reverse traversing the UList. | |
const_reverse_iterator | crend () const |
Return const_reverse_iterator to end reverse traversing the UList. | |
const_reverse_iterator | rbegin () const |
Return const_reverse_iterator to begin reverse traversing the UList. | |
const_reverse_iterator | rend () const |
Return const_reverse_iterator to end reverse traversing the UList. | |
label | max_size () const |
Return size of the largest possible UList. | |
bool | empty () const |
Return true if the UList is empty (ie, size() is zero). | |
void | swap (UList< T > &) |
Swap two ULists of the same type in constant time. | |
bool | operator== (const UList< T > &) const |
Equality operation on ULists of the same type. | |
bool | operator!= (const UList< T > &) const |
The opposite of the equality operation. Takes linear time. | |
bool | operator< (const UList< T > &) const |
Compare two ULists lexicographically. Takes linear time. | |
bool | operator> (const UList< T > &) const |
Compare two ULists lexicographically. Takes linear time. | |
bool | operator<= (const UList< T > &) const |
Return true if !(a > b). Takes linear time. | |
bool | operator>= (const UList< T > &) const |
Return true if !(a < b). Takes linear time. | |
template<> | |
const bool & | operator[] (const label i) const |
Additional Inherited Members | |
![]() | |
typedef SubList< T > | subList |
Declare type of subList. | |
![]() | |
typedef T | value_type |
Type of values the UList contains. | |
typedef T & | reference |
Type that can be used for storing into. | |
typedef const T & | const_reference |
Type that can be used for storing into. | |
typedef label | difference_type |
The type that can represent the difference between any two. | |
typedef label | size_type |
The type that can represent the size of a UList. | |
typedef T * | iterator |
Random access iterator for traversing UList. | |
typedef const T * | const_iterator |
Random access iterator for traversing UList. | |
typedef T * | reverse_iterator |
Reverse iterator for reverse traversal of UList. | |
typedef const T * | const_reverse_iterator |
Reverse iterator for reverse traversal of constant UList. | |
![]() | |
static const List< T > & | null () |
Return a null List. | |
![]() | |
void | size (const label) |
Override size to be inconsistent with allocated storage. |
Construct null.
Definition at line 614 of file faceTriangulation.C.
faceTriangulation | ( | const pointField & | points, |
const face & | f, | ||
const bool | fallBack = false |
||
) |
Construct from face and points. Decomposition based on average.
normal. After construction *this is size 0 or holds the triangles. If fallBack and triangulation fails does naive triangulation and never returns 0 size.
Definition at line 622 of file faceTriangulation.C.
References Foam::mag(), face::normal(), and setSize().
faceTriangulation | ( | const pointField & | points, |
const face & | f, | ||
const vector & | n, | ||
const bool | fallBack = false |
||
) |
Construct from face and points and user supplied (unit) normal.
After construction *this is size 0 or holds the triangles. If fallBack and triangulation fails does naive triangulation and never returns 0 size.
Definition at line 646 of file faceTriangulation.C.
References setSize().
faceTriangulation | ( | Istream & | is | ) |
Construct from Istream.
Definition at line 667 of file faceTriangulation.C.