]> git.tdb.fi Git - libs/math.git/commitdiff
TransformedShape should derive from Shape
authorMikko Rasa <tdb@tdb.fi>
Sun, 19 May 2013 16:27:22 +0000 (19:27 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 19 May 2013 16:27:22 +0000 (19:27 +0300)
source/geometry/transformedshape.h

index 9a98f3139d85ef56edcd3fcdb1d8ab47116b6fee..10af1e7588a7c2efb357037113f9e22970fe887f 100644 (file)
@@ -9,7 +9,7 @@ namespace Msp {
 namespace Geometry {
 
 template<typename T, unsigned D>
-class TransformedShape
+class TransformedShape: public Shape<T, D>
 {
 private:
        Shape<T, D> *shape;
@@ -26,6 +26,7 @@ public:
        const Shape<T, D> &get_shape() const { return *shape; }
        const AffineTransformation<T, D> &get_transformation() const { return transformation; }
 
+       virtual HyperBox<T, D> get_axis_aligned_bounding_box() const;
        virtual bool check_intersection(const Ray<T, D> &) const;
 };
 
@@ -61,6 +62,13 @@ inline TransformedShape<T, D> *TransformedShape<T, D>::clone() const
        return new TransformedShape<T, D>(*this);
 }
 
+template<typename T, unsigned D>
+inline HyperBox<T, D> TransformedShape<T, D>::get_axis_aligned_bounding_box() const
+{
+       // XXX This is not correct for most shapes
+       return shape->get_axis_aligned_bounding_box();
+}
+
 template<typename T, unsigned D>
 inline bool TransformedShape<T, D>::check_intersection(const Ray<T, D> &ray) const
 {