X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgeometry%2Fhypersphere.h;h=cbec2d99af744e7182f4b5f0081379b059a14d95;hb=827b227ae53884109b6885ccd1424dda8c0b3725;hp=01aee0e57b22e2791763077aecb3e3193ea35843;hpb=643aa7b2317f88463f66da11e595ebe0f6c9621d;p=libs%2Fmath.git diff --git a/source/geometry/hypersphere.h b/source/geometry/hypersphere.h index 01aee0e..cbec2d9 100644 --- a/source/geometry/hypersphere.h +++ b/source/geometry/hypersphere.h @@ -2,6 +2,7 @@ #define MSP_GEOMETRY_HYPERSPHERE_H_ #include +#include #include #include "hyperbox.h" #include "ray.h" @@ -22,7 +23,7 @@ private: T radius; public: - HyperSphere(); + HyperSphere(): radius(1) { } explicit HyperSphere(T); virtual HyperSphere *clone() const; @@ -36,15 +37,13 @@ public: virtual unsigned get_intersections(const Ray &, SurfacePoint *, unsigned) const; }; -template -inline HyperSphere::HyperSphere(): - radius(1) -{ } - template inline HyperSphere::HyperSphere(T r): radius(r) -{ } +{ + if(r<=T(0)) + throw std::invalid_argument("HyperSphere::HyperShpere"); +} template inline HyperSphere *HyperSphere::clone() const @@ -90,10 +89,10 @@ inline unsigned HyperSphere::get_intersections(const Ray &ray, Surfa T offset = sqrt(offset_sq); unsigned n = 0; - for(int i=-1; i<=1; i+=2) + for(int i=-1; (n::get_intersections(const Ray &ray, Surfa } ++n; - if(n==size) - return n; } }