Templated tree of axis-aligned bounding boxes (AABB). More...
#include <AABBTree.H>


Public Member Functions | |
| AABBTree () | |
| Default construct. | |
| AABBTree (const UList< Type > &objects, const pointField &points, const bool equalBinSize=true, label maxLevel=3, label minBinSize=100) | |
| Construct from components. | |
| const List< treeBoundBox > & | boundBoxes () const noexcept |
| Return the bounding boxes making up the tree. | |
| const List< labelList > & | addressing () const noexcept |
| Return the contents addressing. | |
| bool | pointInside (const point &pt) const |
| Determine whether a point is inside the bounding boxes. | |
| bool | overlaps (const boundBox &bbIn) const |
| Determine whether a bounding box overlaps the tree bounding boxes. | |
| void | writeOBJ (Ostream &os) const |
| Write all tree boxes (leaves) in OBJ format. | |
| Public Member Functions inherited from AABBTreeBase | |
| AABBTreeBase ()=default | |
| Default construct. | |
Protected Member Functions | |
| void | writeOBJ (const bool leavesOnly, const bool writeLinesOnly, const treeBoundBox &bb, const label nodeI, const List< Pair< treeBoundBox > > &bbs, const List< Pair< label > > &nodes, label &vertI, Ostream &os) const |
| Write OBJ for all bounding boxes. | |
| void | createBoxes (const bool equalBinSize, const label level, const UList< Type > &objects, const pointField &points, const labelUList &objectIDs, const treeBoundBox &bb, const label nodeI, DynamicList< Pair< treeBoundBox > > &bbs, DynamicList< labelPair > &nodes, DynamicList< labelList > &addressing) const |
| Create the bounding boxes by interrogating points. | |
Protected Attributes | |
| label | maxLevel_ |
| Maximum tree level. | |
| label | minLeafSize_ |
| Minimum points per leaf. | |
| List< treeBoundBox > | boundBoxes_ |
| Bounding boxes making up the tree. | |
| List< labelList > | addressing_ |
| Leaf addressing. | |
Friends | |
| Istream & | operator>> (Istream &, AABBTree &) |
| Ostream & | operator<< (Ostream &, const AABBTree &) |
Additional Inherited Members | |
| Static Public Member Functions inherited from AABBTreeBase | |
| static void | writeOBJ (Ostream &os, const treeBoundBox &bb, label &vertIndex, const bool writeLinesOnly=false) |
| Write treeBoundBox in OBJ format. | |
| Static Protected Attributes inherited from AABBTreeBase | |
| static scalar | tolerance_ = 1e-4 |
| Relative tolerance. | |
Templated tree of axis-aligned bounding boxes (AABB).
Designed to be templated on either faces or cells, the AABBTree will decompose the input into a tree of AABB's. The maximum number of tree levels and minimum number of objects per leaf are provided on construction, and the contents (addressing) is stored.
Definition at line 113 of file AABBTree.H.
| AABBTree | ( | ) |
Default construct.
Definition at line 270 of file AABBTree.C.
References addressing_, boundBoxes_, maxLevel_, and minLeafSize_.
Referenced by operator<<, and operator>>.

| AABBTree | ( | const UList< Type > & | objects, |
| const pointField & | points, | ||
| const bool | equalBinSize = true, | ||
| label | maxLevel = 3, | ||
| label | minBinSize = 100 ) |
Construct from components.
equalBinSize: divide into equal number of elements or equal span
Definition at line 280 of file AABBTree.C.
References addressing(), addressing_, boundBoxes(), boundBoxes_, bitSet::count(), createBoxes(), DynamicList< T, SizeMin >::emplace_back(), UList< T >::empty(), Foam::endl(), forAll, Foam::identity(), boundBox::inflate(), Foam::Info, maxLevel_, minLeafSize_, points, bitSet::set(), and UList< T >::size().

|
protected |
Write OBJ for all bounding boxes.
Definition at line 28 of file AABBTree.C.
References os(), writeOBJ(), and AABBTreeBase::writeOBJ().
Referenced by writeOBJ().


|
protected |
Create the bounding boxes by interrogating points.
Definition at line 75 of file AABBTree.C.
References boundBox::add(), addressing(), Foam::component(), createBoxes(), DynamicList< T, SizeMin >::emplace_back(), boundBox::inflate(), boundBox::maxDir(), maxLevel_, boundBox::min(), minLeafSize_, points, DynamicList< T, SizeMin >::push_back(), bitSet::set(), DynamicList< T, SizeMin >::shrink(), UList< T >::size(), Foam::sort(), boundBox::span(), and AABBTreeBase::tolerance_.
Referenced by AABBTree(), and createBoxes().


|
inlinenoexcept |
Return the bounding boxes making up the tree.
Definition at line 209 of file AABBTree.H.
References boundBoxes_, and Foam::noexcept.
Referenced by AABBTree().

Return the contents addressing.
Definition at line 217 of file AABBTree.H.
References addressing_, and Foam::noexcept.
Referenced by AABBTree(), and createBoxes().

| bool pointInside | ( | const point & | pt | ) | const |
Determine whether a point is inside the bounding boxes.
Definition at line 403 of file AABBTree.C.
References boundBoxes_.
| bool overlaps | ( | const boundBox & | bbIn | ) | const |
Determine whether a bounding box overlaps the tree bounding boxes.
Definition at line 418 of file AABBTree.C.
References boundBoxes_.
| void writeOBJ | ( | Ostream & | os | ) | const |
Write all tree boxes (leaves) in OBJ format.
Definition at line 390 of file AABBTree.C.
References boundBoxes_, os(), and AABBTreeBase::writeOBJ().

References AABBTree().
References AABBTree().
|
protected |
Maximum tree level.
Definition at line 124 of file AABBTree.H.
Referenced by AABBTree(), AABBTree(), and createBoxes().
|
protected |
Minimum points per leaf.
Definition at line 129 of file AABBTree.H.
Referenced by AABBTree(), AABBTree(), and createBoxes().
|
protected |
Bounding boxes making up the tree.
Definition at line 134 of file AABBTree.H.
Referenced by AABBTree(), AABBTree(), boundBoxes(), overlaps(), pointInside(), and writeOBJ().
Leaf addressing.
Definition at line 139 of file AABBTree.H.
Referenced by AABBTree(), AABBTree(), and addressing().