FreeFOAM The Cross-Platform CFD Toolkit
treeDataTriSurface Class Reference

Encapsulates data for (indexedOc)tree searches on triSurface. More...

#include <meshTools/treeDataTriSurface.H>


Detailed Description

Encapsulates data for (indexedOc)tree searches on triSurface.

Source files

Definition at line 54 of file treeDataTriSurface.H.

List of all members.

Public Member Functions

 ClassName ("treeDataTriSurface")
 treeDataTriSurface (const triSurface &)
 Construct from triSurface. Holds reference.
const triSurfacesurface () const
label size () const
pointField points () const
 Get representative point cloud for all shapes inside.
label getVolumeType (const indexedOctree< treeDataTriSurface > &, const point &) const
 Get type (inside,outside,mixed,unknown) of point w.r.t. surface.
bool overlaps (const label index, const treeBoundBox &sampleBb) const
 Does (bb of) shape at index overlap bb.
void findNearest (const labelList &indices, const point &sample, scalar &nearestDistSqr, label &nearestIndex, point &nearestPoint) const
 Calculates nearest (to sample) point in shape.
void findNearest (const labelList &indices, const linePointRef &ln, treeBoundBox &tightest, label &minIndex, point &linePoint, point &nearestPoint) const
 Calculates nearest (to line) point in shape.
bool intersects (const label index, const point &start, const point &end, point &result) const
 Calculate intersection of triangle with ray. Sets result.

Constructor & Destructor Documentation

treeDataTriSurface ( const triSurface surface)

Construct from triSurface. Holds reference.

Definition at line 182 of file treeDataTriSurface.C.


Member Function Documentation

ClassName ( "treeDataTriSurface"  )
const triSurface& surface ( ) const
inline

Definition at line 94 of file treeDataTriSurface.H.

label size ( ) const
inline

Definition at line 99 of file treeDataTriSurface.H.

References List< T >::size().

Foam::pointField points ( ) const

Get representative point cloud for all shapes inside.

(one point per shape)

Definition at line 190 of file treeDataTriSurface.C.

References forAll, and points.

Foam::label getVolumeType ( const indexedOctree< treeDataTriSurface > &  tree,
const point sample 
) const
bool overlaps ( const label  index,
const treeBoundBox sampleBb 
) const

Does (bb of) shape at index overlap bb.

For testing: robust one

return cubeBb.overlaps(triBb);

Exact test of triangle intersecting bb

Definition at line 265 of file treeDataTriSurface.C.

References treeBoundBox::contains(), f(), triangleFuncs::intersectBb(), boundBox::max(), Foam::max(), boundBox::min(), Foam::min(), treeBoundBox::overlaps(), and points.

void findNearest ( const labelList indices,
const point sample,
scalar &  nearestDistSqr,
label &  nearestIndex,
point nearestPoint 
) const

Calculates nearest (to sample) point in shape.

Returns actual point and distance (squared)

Definition at line 315 of file treeDataTriSurface.C.

References b, f(), forAll, and points.

void findNearest ( const labelList indices,
const linePointRef ln,
treeBoundBox tightest,
label &  minIndex,
point linePoint,
point nearestPoint 
) const

Calculates nearest (to line) point in shape.

Returns point and distance (squared)

Definition at line 398 of file treeDataTriSurface.C.

References notImplemented.

bool intersects ( const label  index,
const point start,
const point end,
point result 
) const

Calculate intersection of triangle with ray. Sets result.

accordingly

Using exact intersections

pointHit info = f.tri(points).intersectionExact(start, end);

if (info.hit()) { intersectionPoint = info.hitPoint(); } return info.hit();

Definition at line 417 of file treeDataTriSurface.C.

References PointHit< Point >::distance(), f(), intersection::HALF_RAY, PointHit< Point >::hit(), PointHit< Point >::hitPoint(), triangle< Point, PointRef >::intersection(), boundBox::max(), Foam::max(), boundBox::min(), Foam::min(), points, and treeBoundBox::posBits().


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