X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGSphere.hxx;h=e4fcb096a7e576a53ca1cfe69d867cf6b695a542;hb=3bcd0bafd5fba1eebadfd1cb8a7294d665cf1932;hp=26649e1b12c5202f62bdf999e462509c1b0c70d1;hpb=4faf727f1b6f0e5167116334b85228981325a417;p=simgear.git diff --git a/simgear/math/SGSphere.hxx b/simgear/math/SGSphere.hxx index 26649e1b..e4fcb096 100644 --- a/simgear/math/SGSphere.hxx +++ b/simgear/math/SGSphere.hxx @@ -18,9 +18,16 @@ #ifndef SGSphere_H #define SGSphere_H + 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. @@ -39,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) @@ -60,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()) {