ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkEuler3DTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkEuler3DTransform_h
19 #define itkEuler3DTransform_h
20 
21 #include <iostream>
22 #include "itkRigid3DTransform.h"
23 
24 namespace itk
25 {
46 template<typename TParametersValueType=double >
47 class ITK_TEMPLATE_EXPORT Euler3DTransform :
48  public Rigid3DTransform<TParametersValueType>
49 {
50 public:
51  ITK_DISALLOW_COPY_AND_ASSIGN(Euler3DTransform);
52 
58 
60  itkNewMacro(Self);
61 
63  itkTypeMacro(Euler3DTransform, Rigid3DTransform);
64 
66  static constexpr unsigned int SpaceDimension = 3;
67  static constexpr unsigned int InputSpaceDimension = 3;
68  static constexpr unsigned int OutputSpaceDimension = 3;
69  static constexpr unsigned int ParametersDimension = 6;
70 
71  using ParametersType = typename Superclass::ParametersType;
72  using ParametersValueType = typename Superclass::ParametersValueType;
73  using FixedParametersType = typename Superclass::FixedParametersType;
74  using FixedParametersValueType = typename Superclass::FixedParametersValueType;
75  using JacobianType = typename Superclass::JacobianType;
76  using JacobianPositionType = typename Superclass::JacobianPositionType;
77  using InverseJacobianPositionType = typename Superclass::InverseJacobianPositionType;
79  using InputVectorType = typename Superclass::InputVectorType;
80  using OutputVectorType = typename Superclass::OutputVectorType;
81  using InputCovariantVectorType = typename Superclass::InputCovariantVectorType;
82  using OutputCovariantVectorType = typename Superclass::OutputCovariantVectorType;
83  using InputVnlVectorType = typename Superclass::InputVnlVectorType;
84  using OutputVnlVectorType = typename Superclass::OutputVnlVectorType;
85  using InputPointType = typename Superclass::InputPointType;
86  using OutputPointType = typename Superclass::OutputPointType;
87  using MatrixType = typename Superclass::MatrixType;
88  using InverseMatrixType = typename Superclass::InverseMatrixType;
89  using CenterType = typename Superclass::CenterType;
90  using TranslationType = typename Superclass::TranslationType;
91  using OffsetType = typename Superclass::OffsetType;
93 
98  void SetParameters(const ParametersType & parameters) override;
99 
100  const ParametersType & GetParameters() const override;
101 
102  const FixedParametersType & GetFixedParameters() const override;
103  void SetFixedParameters(const FixedParametersType & parameters) override;
104 
106  void SetRotation(ScalarType angleX, ScalarType angleY, ScalarType angleZ);
107 
108  itkGetConstMacro(AngleX, ScalarType);
109  itkGetConstMacro(AngleY, ScalarType);
110  itkGetConstMacro(AngleZ, ScalarType);
111 
116  void ComputeJacobianWithRespectToParameters( const InputPointType & p, JacobianType & jacobian) const override;
117  using Superclass::ComputeJacobianWithRespectToPosition;
118 
125  virtual void SetComputeZYX (const bool flag);
126  itkGetConstMacro(ComputeZYX, bool);
128 
129  void SetIdentity() override;
130 
131 protected:
132  Euler3DTransform(const MatrixType & matrix, const OutputPointType & offset);
133  Euler3DTransform(unsigned int paramsSpaceDims);
135 
136  ~Euler3DTransform() override = default;
137 
138  void PrintSelf(std::ostream & os, Indent indent) const override;
139 
141  void SetVarRotation(ScalarType angleX, ScalarType angleY, ScalarType angleZ);
142 
144  void ComputeMatrix() override;
145 
146  void ComputeMatrixParameters() override;
147 
148 private:
153 }; // class Euler3DTransform
154 } // namespace itk
155 
156 #ifndef ITK_MANUAL_INSTANTIATION
157 #include "itkEuler3DTransform.hxx"
158 #endif
159 
160 #endif /* itkEuler3DTransform_h */
typename Superclass::OutputVnlVectorType OutputVnlVectorType
typename Superclass::ScalarType AngleType
typename Superclass::OutputCovariantVectorType OutputCovariantVectorType
Light weight base class for most itk classes.
typename Superclass::ParametersValueType ParametersValueType
typename Superclass::InverseMatrixType InverseMatrixType
typename Superclass::TranslationType TranslationType
typename Superclass::JacobianType JacobianType
typename Superclass::InverseJacobianPositionType InverseJacobianPositionType
typename Superclass::JacobianPositionType JacobianPositionType
Rigid3DTransform of a vector space (e.g. space coordinates)
typename Superclass::CenterType CenterType
typename Superclass::FixedParametersType FixedParametersType
typename Superclass::OutputVectorType OutputVectorType
typename Superclass::MatrixType MatrixType
typename Superclass::FixedParametersValueType FixedParametersValueType
typename Superclass::InputVectorType InputVectorType
typename Superclass::OutputPointType OutputPointType
typename Superclass::ParametersType ParametersType
Euler3DTransform of a vector space (e.g. space coordinates)
typename Superclass::InputVnlVectorType InputVnlVectorType
typename Superclass::ScalarType ScalarType
Control indentation during Print() invocation.
Definition: itkIndent.h:49
typename Superclass::ScalarType ScalarType
typename Superclass::InputPointType InputPointType
typename Superclass::InputCovariantVectorType InputCovariantVectorType
typename Superclass::OffsetType OffsetType