X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgeometry%2Fextrudedshape.h;h=83933b0808a02f32d8febcce5eee8c8a23ad85d0;hb=313e10c1dcf5504789cc145166aece93d8141212;hp=0d895ac5bc0aecbac9d6de46f5e93c9c932ca0dd;hpb=643aa7b2317f88463f66da11e595ebe0f6c9621d;p=libs%2Fmath.git diff --git a/source/geometry/extrudedshape.h b/source/geometry/extrudedshape.h index 0d895ac..83933b0 100644 --- a/source/geometry/extrudedshape.h +++ b/source/geometry/extrudedshape.h @@ -33,7 +33,6 @@ public: virtual HyperBox get_axis_aligned_bounding_box() const; virtual bool contains(const LinAl::Vector &) const; - virtual bool check_intersection(const Ray &) const; virtual unsigned get_max_ray_intersections() const; virtual unsigned get_intersections(const Ray &, SurfacePoint *, unsigned) const; }; @@ -92,12 +91,6 @@ inline bool ExtrudedShape::contains(const LinAl::Vector &point) cons return base->contains(LinAl::Vector(point)); } -template -inline bool ExtrudedShape::check_intersection(const Ray &ray) const -{ - return get_intersections(ray, 0, 1); -} - template inline unsigned ExtrudedShape::get_max_ray_intersections() const { @@ -141,7 +134,7 @@ inline unsigned ExtrudedShape::get_intersections(const Ray &ray, Sur base_points = reinterpret_cast *>(points+size)-size; unsigned count = base->get_intersections(base_ray, base_points, size); - for(unsigned i=0; i::get_intersections(const Ray &ray, Sur } ++n; - if(n==size) - return n; } } /* If the ray is not parallel to the base space, it may pass through the caps. */ - if(ray_direction[D-1]) + if(n p = ray_start+ray_direction*x; - if(base->contains(LinAl::Vector(p)) && ncontains(LinAl::Vector(p))) { if(points) { @@ -176,16 +167,13 @@ inline unsigned ExtrudedShape::get_intersections(const Ray &ray, Sur points[n].normal = LinAl::Vector(); points[n].normal[D-1] = i; points[n].distance = x; - - if(n==1 && x