summaryrefslogtreecommitdiff
path: root/indra/llmath/llsphere.cpp
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-05-22 09:30:04 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-05-22 09:30:04 -0400
commiteb81d5f23fc725f53857d7a62923e273a057c455 (patch)
tree5c1ba76e722d9630fa597023a1e6c196a04f758c /indra/llmath/llsphere.cpp
parentf8ccb39b8d944f9d2bf4308f909273cd5a35cbe7 (diff)
parent47985e5822ce9fdebb7443e13b3c1a781a842ecd (diff)
Merge remote-tracking branch 'DRTVWR-600-maint-A' into nat/kwds
Diffstat (limited to 'indra/llmath/llsphere.cpp')
-rw-r--r--indra/llmath/llsphere.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/indra/llmath/llsphere.cpp b/indra/llmath/llsphere.cpp
index 7292e3c0de..3f04ca704c 100644
--- a/indra/llmath/llsphere.cpp
+++ b/indra/llmath/llsphere.cpp
@@ -73,14 +73,14 @@ F32 LLSphere::getRadius() const
bool LLSphere::contains(const LLSphere& other_sphere) const
{
F32 separation = (mCenter - other_sphere.mCenter).length();
- return (mRadius >= separation + other_sphere.mRadius) ? true : false;
+ return mRadius >= separation + other_sphere.mRadius;
}
// returns 'true' if this sphere completely contains other_sphere
bool LLSphere::overlaps(const LLSphere& other_sphere) const
{
F32 separation = (mCenter - other_sphere.mCenter).length();
- return (separation <= mRadius + other_sphere.mRadius) ? true : false;
+ return mRadius >= separation - other_sphere.mRadius;
}
// returns overlap
@@ -93,9 +93,8 @@ F32 LLSphere::getOverlap(const LLSphere& other_sphere) const
bool LLSphere::operator==(const LLSphere& rhs) const
{
- // TODO? -- use approximate equality for centers?
- return (mRadius == rhs.mRadius
- && mCenter == rhs.mCenter);
+ return fabs(mRadius - rhs.mRadius) <= FLT_EPSILON &&
+ (mCenter - rhs.mCenter).length() <= FLT_EPSILON;
}
std::ostream& operator<<( std::ostream& output_stream, const LLSphere& sphere)