aimsdata  5.0.5
Neuroimaging data handling
motion.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 /*
35  * Non elastic AffineTransformation3d ( rotation + translation )
36  */
37 #ifndef AIMS_RESAMPLING_MOTION_H
38 #define AIMS_RESAMPLING_MOTION_H
39 
42 #include <aims/data/data.h>
43 
44 namespace aims
45 {
46 
47  //------------------------------------//
48  // DecomposedAffineTransformation3d //
49 //------------------------------------//
50 
51 
52 //-----------------------------------------------------------------------------
54  : public AffineTransformation3d
55 {
56 public:
57 
62  virtual AffineTransformation3d &operator = ( const AffineTransformation3d& other );
63 
64  // Get shearing
65  AimsData<float>& shearing() { return _shear; }
66  const AimsData<float>& shearing() const { return _shear; }
67 
68  // Get scaling
69  AimsData<float>& scaling() { return _scaling; }
70  const AimsData<float>& scaling() const { return _scaling; }
71 
72  // Get rot
73  AimsData<float>& rot() { return _rot;}
74  const AimsData<float>& rot() const { return _rot;}
75 
76  virtual void setToIdentity() ;
77 
78  // AffineTransformation3d algebraic operation
79  virtual void scale( const Point3df& sizeFrom, const Point3df& sizeTo );
80 
81  //Initialisation
82  virtual void setRotationAffine( float rx, float ry, float rz,
83  const Point3df & c = Point3df( 0.0 ) );
84  //void setRotationVectorial( const Point3df& v1, const Point3df& v2 );
85  void setShearing(float Cx, float Cy, float Cz ) ;
86  void setScaling(float Sx, float Sy, float Sz ) ;
87  void setRotation( float Rx, float Ry, float Rz ) ;
88  void transAffine(Point3df cg = Point3df( 0.0 ) );
89 
90 protected:
91 
95 
96 };
97 
98 }
99 
100 
103 
104 #endif
aims::AffineTransformation3d Motion
Definition: motion.h:101
AimsData< float > & scaling()
Definition: motion.h:69
const AimsData< float > & rot() const
Definition: motion.h:74
#define AIMSDATA_API
The class for EcatSino data write operation.
Definition: border.h:44
const AimsData< float > & scaling() const
Definition: motion.h:70
AimsData< float > & rot()
Definition: motion.h:73
const AimsData< float > & shearing() const
Definition: motion.h:66
AimsData< float > & shearing()
Definition: motion.h:65
aims::DecomposedAffineTransformation3d DecomposedMotion
Definition: motion.h:102
Affine 3D transformation.