bool Foam::octreeDataBoundBox::overlaps ( const label index, const treeBoundBox& sampleBb ) const { return sampleBb.overlaps(allBb_[index]); }
bool Foam::octreeDataCell::overlaps ( const label index, const treeBoundBox& cubeBb ) const { return cubeBb.overlaps(bbs_[index]); }
bool Foam::treeLeaf<Foam::octreeDataTriSurface>::findNearest ( const octreeDataTriSurface& shapes, const point& sample, treeBoundBox& tightest, label& tightestI, scalar& tightestDist ) const { // Some aliases const treeBoundBoxList& allBb = shapes.allBb(); point& min = tightest.min(); point& max = tightest.max(); point nearest; bool changed = false; forAll(indices_, i) { label faceI = indices_[i]; // Quick rejection test. if (tightest.overlaps(allBb[faceI])) { // Full calculation scalar dist = shapes.calcNearest(faceI, sample, nearest); if (dist < tightestDist) { // Update bb (centered around sample, span is dist) min.x() = sample.x() - dist; min.y() = sample.y() - dist; min.z() = sample.z() - dist; max.x() = sample.x() + dist; max.y() = sample.y() + dist; max.z() = sample.z() + dist; tightestI = faceI; tightestDist = dist; changed = true; } } }