1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
// This file is part of ff3d - http://www.freefem.org/ff3d
// Copyright (C) 2001, 2002, 2003 Stphane Del Pino
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// $Id: TransformMatrix.hpp,v 1.3 2006/10/01 23:25:58 delpinux Exp $
#ifndef TRANSFORM_MATRIX_HPP
#define TRANSFORM_MATRIX_HPP
#include <Transform.hpp>
#include <TinyVector.hpp>
#include <TinyMatrix.hpp>
/**
* @file TransformMatrix.hpp
* @author Stephane Del Pino
* @date Sun Oct 1 16:13:20 2006
*
* @brief This class defines a 3x4 matrix using the same description
* that @p POV-Ray
*/
class TransformMatrix
: public Transform
{
private:
TinyVector<3> __translate; /**< TransformMatrix translation as
given in POV-Ray */
TinyMatrix<3,3> __matrix; /**< Matrix transformatino */
TinyMatrix<3,3> __invMatrix; /**< The inverse of the
transformMatrix is stored in the
matrix. This way one can know if a
vertex is the image of a vertex
contained in a base shape; so, if a
vertex is in the image of shape! */
public:
/**
* Applies the TransformMatrix to a vector
*
* @param x given vector
*
* @return @f$ Ax+b @f$
*/
TinyVector<3,real_t> operator()(const TinyVector<3,real_t>& x) const;
/**
* Applies the inverse TransformMatrix to a vector
*
* @param x given vector
*
* @return @f$ A^{-1}(x-b) @f$
*/
TinyVector<3,real_t> inverse(const TinyVector<3,real_t>& x) const;
/**
* Writes the TransformMatrix to a string
*
* @return POVRay string
*/
std::string povWrite() const;
/**
* Copies the TransformMatrix
*
* @return deep copy of the TransformMatrix
*/
ReferenceCounting<Transform> getCopy() const;
//! Constructs a TransformMatrix for a set of given angles passed by \a r.
/**
* Constructor
*
* @param r transformation matrix and vector
*/
TransformMatrix(const real_t r[12]);
/**
* Copy constructor
*
* @param r given TransformMatrix
*/
TransformMatrix(const TransformMatrix& r);
/**
* Destructor
*
*/
~TransformMatrix()
{
;
}
};
#endif // TRANSFORM_MATRIX_HPP
|