diff options
Diffstat (limited to 'meowpp/math/Transformations.h')
-rw-r--r-- | meowpp/math/Transformations.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/meowpp/math/Transformations.h b/meowpp/math/Transformations.h new file mode 100644 index 0000000..3b20ebe --- /dev/null +++ b/meowpp/math/Transformations.h @@ -0,0 +1,53 @@ +#ifndef math_Transformations_H__ +#define math_Transformations_H__ + +#include "Transformation.h" + +#include <cstdlib> + +namespace meow{ + template<class Scalar> + class BallProjection: public Transformation<Scalar>{ + private: + Scalar _radius; + size_t _dimension; + public: + BallProjection(size_t __dimension); + BallProjection(size_t __dimension, Scalar const& __radius); + + Scalar parameter(size_t __i) const; + Scalar parameter(size_t __i, Scalar const& __s); + + Scalar radius() const; + Scalar radius(Scalar const& __radius); + + Matrix<Scalar> transformate(Matrix<Scalar> const& __x) const; + Matrix<Scalar> jacobian (Matrix<Scalar> const& __x ) const; + Matrix<Scalar> jacobian (Matrix<Scalar> const& __x, size_t __i) const; + }; + + + template<class Scalar> + class PhotoProjection: public Transformation<Scalar>{ + private: + Scalar _focal; + size_t _dimension; + public: + PhotoProjection(size_t __dimension); + PhotoProjection(size_t __dimension, Scalar const& __focal); + + Scalar parameter(size_t __i) const; + Scalar parameter(size_t __i, Scalar const& __s); + + Scalar focal() const; + Scalar focal(Scalar const& __focal); + + Matrix<Scalar> transformate(Matrix<Scalar> const& __x) const; + Matrix<Scalar> jacobian (Matrix<Scalar> const& __x ) const; + Matrix<Scalar> jacobian (Matrix<Scalar> const& __x, size_t __i) const; + }; +} + +#include "Transformations.hpp" + +#endif // Transformations_H__ |