Non-pointer based hierarchical recursive searching. Storage is dynamic, so elements can be deleted. More...
Classes | |
class | node |
Tree node. Has up pointer and down pointers. More... | |
Public Member Functions | |
dynamicIndexedOctree (const Type &shapes, const treeBoundBox &bb, const label maxLevels, const scalar maxLeafRatio, const scalar maxDuplicity) | |
Construct from shapes. More... | |
autoPtr< dynamicIndexedOctree< Type > > | clone () const |
Clone. More... | |
const Type & | shapes () const |
Reference to shape. More... | |
const List< node > & | nodes () const |
List of all nodes. More... | |
const contentListList & | contents () const |
List of all contents (referenced by those nodes that are. More... | |
const treeBoundBox & | bb () const |
Top bounding box. More... | |
pointIndexHit | findNearest (const point &sample, const scalar nearestDistSqr) const |
Calculate nearest point on nearest shape. More... | |
void | findNearest (const label nodeI, const point &, scalar &nearestDistSqr, label &nearestShapeI, point &nearestPoint) const |
Low level: calculate nearest starting from subnode. More... | |
pointIndexHit | findNearest (const linePointRef &ln, treeBoundBox &tightest, point &linePoint) const |
Find nearest to line. More... | |
pointIndexHit | findLine (const point &start, const point &end) const |
Find nearest intersection of line between start and end. More... | |
pointIndexHit | findLineAny (const point &start, const point &end) const |
Find any intersection of line between start and end. More... | |
labelList | findBox (const treeBoundBox &bb) const |
Find (in no particular order) indices of all shapes inside or. More... | |
labelList | findSphere (const point ¢re, const scalar radiusSqr) const |
Find (in no particular order) indices of all shapes inside or. More... | |
labelBits | findNode (const label nodeI, const point &) const |
Find deepest node (as parent+octant) containing point. Starts. More... | |
label | findInside (const point &) const |
Find shape containing point. Only implemented for certain. More... | |
const labelList & | findIndices (const point &) const |
Find the shape indices that occupy the result of findNode. More... | |
volumeType | getVolumeType (const point &) const |
Determine type (inside/outside/mixed) for point. unknown if. More... | |
template<class CompareOp > | |
void | findNear (const scalar nearDist, const dynamicIndexedOctree< Type > &tree2, CompareOp &cop) const |
Find near pairs and apply CompareOp to them. More... | |
bool | insert (label startIndex, label endIndex) |
Insert a new object into the tree. More... | |
bool | insertIndex (const label nodIndex, const label index, label &nLevels) |
bool | remove (const label index) |
Remove an object from the tree. More... | |
label | removeIndex (const label nodIndex, const label index) |
void | print (prefixOSstream &, const bool printContents, const label) const |
Print tree. Either print all indices (printContent = true) or. More... | |
bool | write (Ostream &os) const |
void | writeTreeInfo () const |
Static Public Member Functions | |
static scalar & | perturbTol () |
Get the perturbation tolerance. More... | |
static bool | isContent (const labelBits i) |
static bool | isEmpty (const labelBits i) |
static bool | isNode (const labelBits i) |
static label | getContent (const labelBits i) |
static label | getNode (const labelBits i) |
static direction | getOctant (const labelBits i) |
static volumeType | getSide (const vector &outsideNormal, const vector &vec) |
Helper function to return the side. Returns outside if. More... | |
static bool | overlaps (const point &bbMin, const point &bbMax, const scalar nearestDistSqr, const point &sample) |
Helper: does bb intersect a sphere around sample? Or is any. More... | |
Friends | |
Ostream & | operator (Ostream &, const dynamicIndexedOctree< Type > &) |
Non-pointer based hierarchical recursive searching. Storage is dynamic, so elements can be deleted.
Definition at line 57 of file dynamicIndexedOctree.H.
dynamicIndexedOctree | ( | const Type & | shapes, |
const treeBoundBox & | bb, | ||
const label | maxLevels, | ||
const scalar | maxLeafRatio, | ||
const scalar | maxDuplicity | ||
) |
Construct from shapes.
Definition at line 2137 of file dynamicIndexedOctree.C.
|
static |
Get the perturbation tolerance.
Definition at line 2173 of file dynamicIndexedOctree.C.
|
inline |
Clone.
Definition at line 420 of file dynamicIndexedOctree.H.
|
inline |
Reference to shape.
Definition at line 431 of file dynamicIndexedOctree.H.
List of all nodes.
Definition at line 437 of file dynamicIndexedOctree.H.
|
inline |
List of all contents (referenced by those nodes that are.
contents)
Definition at line 444 of file dynamicIndexedOctree.H.
|
inline |
Top bounding box.
Definition at line 450 of file dynamicIndexedOctree.H.
Referenced by dynamicIndexedOctree< Foam::dynamicTreeDataPoint >::findNear().
Definition at line 463 of file dynamicIndexedOctree.H.
Referenced by dynamicIndexedOctree< Foam::dynamicTreeDataPoint >::getContent().
Definition at line 468 of file dynamicIndexedOctree.H.
Definition at line 473 of file dynamicIndexedOctree.H.
Referenced by dynamicIndexedOctree< Foam::dynamicTreeDataPoint >::getNode().
Definition at line 478 of file dynamicIndexedOctree.H.
Definition at line 488 of file dynamicIndexedOctree.H.
Definition at line 498 of file dynamicIndexedOctree.H.
Foam::pointIndexHit findNearest | ( | const point & | sample, |
const scalar | nearestDistSqr | ||
) | const |
Calculate nearest point on nearest shape.
Returns
Definition at line 2181 of file dynamicIndexedOctree.C.
void findNearest | ( | const label | nodeI, |
const point & | sample, | ||
scalar & | nearestDistSqr, | ||
label & | nearestShapeI, | ||
point & | nearestPoint | ||
) | const |
Low level: calculate nearest starting from subnode.
Definition at line 470 of file dynamicIndexedOctree.C.
Foam::pointIndexHit findNearest | ( | const linePointRef & | ln, |
treeBoundBox & | tightest, | ||
point & | linePoint | ||
) | const |
Find nearest to line.
Returns
Definition at line 2209 of file dynamicIndexedOctree.C.
Foam::pointIndexHit findLine | ( | const point & | start, |
const point & | end | ||
) | const |
Find nearest intersection of line between start and end.
Definition at line 2242 of file dynamicIndexedOctree.C.
Foam::pointIndexHit findLineAny | ( | const point & | start, |
const point & | end | ||
) | const |
Find any intersection of line between start and end.
Definition at line 2253 of file dynamicIndexedOctree.C.
Foam::labelList findBox | ( | const treeBoundBox & | bb | ) | const |
Find (in no particular order) indices of all shapes inside or.
overlapping bounding box (i.e. all shapes not outside box)
Definition at line 2264 of file dynamicIndexedOctree.C.
Foam::labelList findSphere | ( | const point & | centre, |
const scalar | radiusSqr | ||
) | const |
Find (in no particular order) indices of all shapes inside or.
overlapping a bounding sphere (i.e. all shapes not outside sphere)
Definition at line 2284 of file dynamicIndexedOctree.C.
Foam::labelBits findNode | ( | const label | nodeI, |
const point & | sample | ||
) | const |
Find deepest node (as parent+octant) containing point. Starts.
off from starting index in nodes_ (use 0 to start from top) Use getNode and getOctant to extract info, or call findIndices.
Definition at line 2305 of file dynamicIndexedOctree.C.
Foam::label findInside | ( | const point & | sample | ) | const |
Find shape containing point. Only implemented for certain.
shapes.
Definition at line 2352 of file dynamicIndexedOctree.C.
const Foam::labelList & findIndices | ( | const point & | sample | ) | const |
Find the shape indices that occupy the result of findNode.
Definition at line 2384 of file dynamicIndexedOctree.C.
Foam::volumeType getVolumeType | ( | const point & | sample | ) | const |
Determine type (inside/outside/mixed) for point. unknown if.
cannot be determined (e.g. non-manifold surface)
Definition at line 2406 of file dynamicIndexedOctree.C.
|
static |
Helper function to return the side. Returns outside if.
outsideNormal&vec >= 0, inside otherwise
Definition at line 452 of file dynamicIndexedOctree.C.
|
static |
Helper: does bb intersect a sphere around sample? Or is any.
corner point of bb closer than nearestDistSqr to sample.
Definition at line 43 of file dynamicIndexedOctree.C.
void findNear | ( | const scalar | nearDist, |
const dynamicIndexedOctree< Type > & | tree2, | ||
CompareOp & | cop | ||
) | const |
Find near pairs and apply CompareOp to them.
tree2 can be *this or different tree.
Definition at line 2476 of file dynamicIndexedOctree.C.
Insert a new object into the tree.
Definition at line 2498 of file dynamicIndexedOctree.C.
Definition at line 2545 of file dynamicIndexedOctree.C.
Remove an object from the tree.
Definition at line 2621 of file dynamicIndexedOctree.C.
Foam::label removeIndex | ( | const label | nodIndex, |
const label | index | ||
) |
Definition at line 2636 of file dynamicIndexedOctree.C.
void print | ( | prefixOSstream & | os, |
const bool | printContents, | ||
const label | nodeI | ||
) | const |
Print tree. Either print all indices (printContent = true) or.
just size of contents nodes.
Definition at line 2719 of file dynamicIndexedOctree.C.
Definition at line 2817 of file dynamicIndexedOctree.C.
void writeTreeInfo | ( | ) | const |
Definition at line 2791 of file dynamicIndexedOctree.C.
|
friend |