X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGSphere.hxx;h=e4fcb096a7e576a53ca1cfe69d867cf6b695a542;hb=584ee1364f25e5c3795f9ff4633a792cba39bfc7;hp=9806e9e89423dd0b4ac66b4886bfeb81fe039212;hpb=d7931a28ce2d903761b4eff4b5486bde77664bca;p=simgear.git diff --git a/simgear/math/SGSphere.hxx b/simgear/math/SGSphere.hxx index 9806e9e8..e4fcb096 100644 --- a/simgear/math/SGSphere.hxx +++ b/simgear/math/SGSphere.hxx @@ -18,13 +18,16 @@ #ifndef SGSphere_H #define SGSphere_H -#ifndef _MSC_VER -# pragma GCC diagnostic ignored "-Wuninitialized" SGSphere(); -#endif template class SGSphere { public: + +#ifdef __GNUC__ +// Avoid "_center not initialized" warnings. +# pragma GCC diagnostic ignored "-Wuninitialized" +#endif + SGSphere() : /* * Do not initialize _center to save unneeded initialization time. @@ -43,6 +46,11 @@ public: _radius(sphere.getRadius()) { } +#ifdef __GNUC__ + // Restore warning settings. +# pragma GCC diagnostic warning "-Wuninitialized" +#endif + const SGVec3& getCenter() const { return _center; } void setCenter(const SGVec3& center) @@ -64,6 +72,18 @@ public: void clear() { _radius = -1; } + /// Return true if this is inside sphere + bool inside(const SGSphere& sphere) const + { + if (empty()) + return false; + if (sphere.empty()) + return false; + + T dist = sphere.getRadius() - getRadius(); + return distSqr(getCenter(), sphere.getCenter()) <= dist*dist; + } + void expandBy(const SGVec3& v) { if (empty()) {