Commit 44d1ed3e authored by laurence's avatar laurence
Browse files

ENH: boundBox: Change distanceFromBoxSqr to nearest()

Returns the nearest point instead of a distance
parent ec634a89
......@@ -791,15 +791,19 @@ Foam::DistributedDelaunayMesh<Triangulation>::rangeInsertReferredWithInfo
label count = 0;
for (PointIterator it = begin; it != end; ++it)
{
const scalar distFromBbSqr = bb.distanceFromBoxSqr
(
topoint(it->point())
);
const pointFromPoint samplePoint = topoint(it->point());
pointsBbDistSqr.append
(
std::make_pair(distFromBbSqr, count++)
);
if (!bb.contains(samplePoint))
{
const Foam::point nearestPoint = bb.nearest(samplePoint);
const scalar distFromBbSqr = magSqr(nearestPoint - samplePoint);
pointsBbDistSqr.append
(
std::make_pair(distFromBbSqr, count++)
);
}
}
std::random_shuffle(pointsBbDistSqr.begin(), pointsBbDistSqr.end());
......
......@@ -300,21 +300,14 @@ bool Foam::boundBox::containsAny
}
Foam::scalar Foam::boundBox::distanceFromBoxSqr(const point& pt) const
Foam::point Foam::boundBox::nearest(const point& pt) const
{
if (contains(pt))
{
return 0;
}
// Clip the point to the range of the bounding box
const scalar surfPtx = Foam::max(Foam::min(pt.x(), max_.x()), min_.x());
const scalar surfPty = Foam::max(Foam::min(pt.y(), max_.y()), min_.y());
const scalar surfPtz = Foam::max(Foam::min(pt.z(), max_.z()), min_.z());
const point surfacePt(surfPtx, surfPty, surfPtz);
return magSqr(pt - surfacePt);
return point(surfPtx, surfPty, surfPtz);
}
......
......@@ -225,9 +225,10 @@ public:
const FixedList<label, Size>& indices
) const;
//- Distance of a point from the box.
// Return 0 if inside.
scalar distanceFromBoxSqr(const point&) const;
//- Return the nearest point on the boundBox to the supplied point.
// If point is inside the boundBox then the point is returned
// unchanged.
point nearest(const point&) const;
// Friend Operators
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment