aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp/math/Transformation.h
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp/math/Transformation.h')
-rw-r--r--meowpp/math/Transformation.h237
1 files changed, 0 insertions, 237 deletions
diff --git a/meowpp/math/Transformation.h b/meowpp/math/Transformation.h
deleted file mode 100644
index 086cb03..0000000
--- a/meowpp/math/Transformation.h
+++ /dev/null
@@ -1,237 +0,0 @@
-#ifndef math_Transformation_H__
-#define math_Transformation_H__
-
-#include "Matrix.h"
-#include "../Self.h"
-
-#include <list>
-#include <cstdlib>
-
-namespace meow {
-
-/*!
- * @brief A base class for implementing kinds of transformations.
- *
- * We define that the input and output form of our transformations all be
- * \b matrix . Some advance methods such as calculating jacobian matrix
- * will require that the input form must be a vector.
- * @author cat_leopard
- */
-template<class Scalar>
-class Transformation {
-private:
- struct Myself {
- size_t inputRows_;
- size_t inputCols_;
- size_t outputRows_;
- size_t outputCols_;
- size_t psize_;
-
- Myself(Myself const& b):
- inputRows_(b.inputRows_), inputCols_(b.inputCols_),
- outputRows_(b.outputRows_), outputCols_(b.outputCols_),
- psize_(b.psize_) {
- }
-
- Myself(size_t ir, size_t ic, size_t or_, size_t oc, size_t ps):
- inputRows_(ir), inputCols_(ic), outputRows_(or_), outputCols_(oc),
- psize_(ps) {
- }
-
- ~Myself() {
- }
- };
-
- Self<Myself> const self;
-protected:
- /*!
- * Construct and setup
- * @param [in] inputRows number of rows of the input matrix.
- * @param [in] inputCols number of columns of the input matrix.
- * @param [in] outputRows number of rows of the output matrix.
- * @param [in] outputCols number of columns of the output matrix.
- * @param [in] psize number of parameters
- */
- Transformation(size_t inputRows, size_t inputCols,
- size_t outputRows, size_t outputCols,
- size_t psize):
- self(Myself(inputRows, inputCols, outputRows, outputCols, psize)) {
- }
-
- /*!
- * Construct and copy setings from another transformation class.
- * @param [in] b Specify where to copy the informations.
- */
- Transformation(Transformation const& b):
- self(b.self, Self<Myself>::COPY_FROM) {
- }
-
- /*!
- * @brief Copy from the specified one
- *
- * @param [in] b The specified one
- * @return \c *this
- */
- Transformation& copyFrom(Transformation const& b) {
- self().copyFrom(b.self);
- return *this;
- }
-
- /*!
- * @brief reference from the specified one
- *
- * @param [in] b The specified one
- * @return \c *this
- */
- Transformation& referenceFrom(Transformation const& b) {
- self().referenceFrom(b.self);
- return *this;
- }
-public:
- /*!
- * Destructor
- */
- virtual ~Transformation() {
- }
-
- /*!
- * @brief Return the number of rows of the input matrix.
- *
- * @return Number of rows.
- */
- size_t inputRows() const {
- return self->inputRows_;
- }
-
- /*!
- * @brief Return the number of columns of the input matrix.
- *
- * @return Number of columns.
- */
- size_t inputCols() const {
- return self->inputCols_;
- }
-
- /*!
- * @brief Return the number of rows of the output matrix.
- *
- * @return Number of rows.
- */
- size_t outputRows() const {
- return self->outputRows_;
- }
-
- /*!
- * @brief Return the number of columns of the output matrix.
- *
- * @return Number of columns.
- */
- size_t outputCols() const {
- return self->outputCols_;
- }
-
- /*!
- * @brief Return the number of parameters.
- *
- * @return Number of parameters.
- */
- size_t parameterSize() const {
- return self->psize_;
- }
-
- /*!
- * @brief Get the \a i -th parameter.
- *
- * @param [in] i The index of the specified parameter.
- * @note It's a pure virtual method.
- */
- virtual Scalar parameter(size_t i) const = 0;
-
- /*!
- * @brief Setup the \a i -th parameter.
- *
- * @param [in] i The index of the specified parameter.
- * @param [in] s The new value to the specified parameter.
- * @note It's a pure virtual method.
- */
- virtual Scalar parameter(size_t i, Scalar const& s) = 0;
-
- /*!
- * @brief Do transformate.
- *
- * @param [in] x The input matrix.
- * @note It's a pure virtual method.
- */
- virtual Matrix<Scalar> transformate(Matrix<Scalar> const& x) const = 0;
-
- /*!
- * @brief Calculate the jacobian matrix (derivate by the input matrix)
- * of the transformation.
- *
- * Consider the case of a non-differentiable
- * transformation might be implemented, we return an empty matrix
- * now instead of making it be a pure virtual method.
- * @param [in] x The input matrix.
- * @return An empty matrix.
- */
- virtual Matrix<Scalar> jacobian(Matrix<Scalar> const& x) const {
- return Matrix<Scalar>();
- }
-
- /*!
- * @brief Calculate the jacobian matrix (derivate by the \a i -th parameter)
- * of the transformation.
- *
- * Consider the case of a non-differentiable transformation might be
- * implemented, we return an empty matrix now instead of making it be
- * a pure virtual method.
- * @param [in] x The input matrix.
- * @param [in] i The index of the specified parameter.
- * @return An empty matrix.
- */
- virtual Matrix<Scalar> jacobian(Matrix<Scalar> const& x, size_t i) const {
- return Matrix<Scalar>();
- }
-
- /*!
- * @brief Return whether this transformation is inversable or not
- *
- * @return \c false
- */
- virtual bool inversable() const { return false; }
-
- /*!
- * @brief Do the inverse transformation
- *
- * @param [in] x The input matirx
- * @return An empty matrix
- */
- virtual Matrix<Scalar> transformateInv(Matrix<Scalar> const& x) const {
- return Matrix<Scalar>();
- }
-
- /*!
- * @brief Return the jacobian matrix of the inverse transformation
- *
- * @param [in] x The input matirx
- * @return An empty matrix
- */
- virtual Matrix<Scalar> jacobianInv(Matrix<Scalar> const& x) const {
- return Matrix<Scalar>();
- }
-
- /*!
- * @brief Return the jacobian matrix of the inverse transformation
- *
- * @param [in] x The input matirx
- * @param [in] i The index of the specified parameter.
- * @return An empty matrix
- */
- virtual Matrix<Scalar> jacobianInv(Matrix<Scalar> const& x, size_t i) const {
- return Matrix<Scalar>();
- }
-};
-
-} // meow
-
-#endif // math_Transformation_H__