CompositeShape(const CompositeShape &);
CompositeShape &operator=(const CompositeShape &);
public:
- virtual ~CompositeShape();
+ ~CompositeShape() override;
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const { return max_isect; }
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override { return max_isect; }
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D, typename O>
ExtrudedShape(const Shape<T, D-1> &, T);
ExtrudedShape(const ExtrudedShape &);
ExtrudedShape &operator=(const ExtrudedShape &);
- virtual ~ExtrudedShape();
+ ~ExtrudedShape() override;
- virtual ExtrudedShape *clone() const;
+ ExtrudedShape *clone() const override;
const Shape<T, D-1> &get_base() const { return *base; }
T get_length() const { return length; }
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const;
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override;
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D>
HalfSpace();
HalfSpace(const LinAl::Vector<T, D> &);
- virtual HalfSpace *clone() const;
+ HalfSpace *clone() const override;
const LinAl::Vector<T, D> &get_normal() const { return normal; }
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const { return 1; }
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override { return 1; }
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D>
HyperBox();
explicit HyperBox(const LinAl::Vector<T, D> &);
- virtual HyperBox *clone() const;
+ HyperBox *clone() const override;
const LinAl::Vector<T, D> &get_dimensions() const { return dimensions; }
T get_dimension(unsigned) const;
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const { return 2; }
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override { return 2; }
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D>
HyperSphere() = default;
explicit HyperSphere(T);
- virtual HyperSphere *clone() const;
+ HyperSphere *clone() const override;
T get_radius() const { return radius; }
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const { return 2; }
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override { return 2; }
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D>
template<typename Iter>
static Intersection from_iterator_range(const Iter &, const Iter &);
- virtual Intersection *clone() const;
+ Intersection *clone() const override;
};
template<typename T, unsigned D>
DimensionIndependentLoader(bool = true);
public:
- virtual ~DimensionIndependentLoader();
+ ~DimensionIndependentLoader() override;
const Shape<T, D> &get_shape() const;
Negation &operator=(const Negation &);
~Negation();
- virtual Negation *clone() const;
+ Negation *clone() const override;
const Shape<T, D> &get_shape() const { return *shape; }
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const { return shape->get_max_ray_intersections(); }
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override { return shape->get_max_ray_intersections(); }
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D>
TransformedShape &operator=(const TransformedShape &);
~TransformedShape();
- virtual TransformedShape *clone() const;
+ TransformedShape *clone() const override;
const Shape<T, D> &get_shape() const { return *shape; }
const AffineTransform<T, D> &get_transformation() const { return transformation; }
- virtual BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const;
- virtual bool contains(const LinAl::Vector<T, D> &) const;
- virtual unsigned get_max_ray_intersections() const { return shape->get_max_ray_intersections(); }
- virtual unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const;
- virtual Coverage get_coverage(const BoundingBox<T, D> &) const;
+ BoundingBox<T, D> get_axis_aligned_bounding_box(unsigned = 0) const override;
+ bool contains(const LinAl::Vector<T, D> &) const override;
+ unsigned get_max_ray_intersections() const override { return shape->get_max_ray_intersections(); }
+ unsigned get_intersections(const Ray<T, D> &, SurfacePoint<T, D> *, unsigned) const override;
+ Coverage get_coverage(const BoundingBox<T, D> &) const override;
};
template<typename T, unsigned D>
template<typename Iter>
static Union from_iterator_range(const Iter &, const Iter &);
- virtual Union *clone() const;
+ Union *clone() const override;
};
template<typename T, unsigned D>