ITK  6.0.0
Insight Toolkit
itkComposeScaleSkewVersor3DTransform.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
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 * https://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 itkComposeScaleSkewVersor3DTransform_h
19#define itkComposeScaleSkewVersor3DTransform_h
20
21#include <iostream>
23
24namespace itk
25{
52template <typename TParametersValueType = double>
53class ITK_TEMPLATE_EXPORT ComposeScaleSkewVersor3DTransform : public VersorRigid3DTransform<TParametersValueType>
54{
55public:
56 ITK_DISALLOW_COPY_AND_MOVE(ComposeScaleSkewVersor3DTransform);
57
63
65 itkNewMacro(Self);
66
68 itkOverrideGetNameOfClassMacro(ComposeScaleSkewVersor3DTransform);
69
71 static constexpr unsigned int InputSpaceDimension = 3;
72 static constexpr unsigned int OutputSpaceDimension = 3;
73 static constexpr unsigned int ParametersDimension = 12;
74
76 using typename Superclass::ParametersType;
77 using typename Superclass::FixedParametersType;
78 using typename Superclass::JacobianType;
79 using typename Superclass::JacobianPositionType;
80 using typename Superclass::InverseJacobianPositionType;
81 using typename Superclass::ScalarType;
82 using typename Superclass::InputPointType;
83 using typename Superclass::OutputPointType;
84 using typename Superclass::InputVectorType;
85 using typename Superclass::OutputVectorType;
86 using typename Superclass::InputVnlVectorType;
87 using typename Superclass::OutputVnlVectorType;
88 using typename Superclass::InputCovariantVectorType;
89 using typename Superclass::OutputCovariantVectorType;
90 using typename Superclass::MatrixType;
91 using typename Superclass::InverseMatrixType;
92 using typename Superclass::CenterType;
93 using typename Superclass::OffsetType;
94 using typename Superclass::TranslationType;
95
96 using typename Superclass::VersorType;
97 using typename Superclass::AxisType;
98 using typename Superclass::AngleType;
99
103
107
108 using typename Superclass::AxisValueType;
109 using typename Superclass::ParametersValueType;
110
116 void
117 SetMatrix(const MatrixType & matrix) override;
118 void
119 SetMatrix(const MatrixType & matrix, const TParametersValueType tolerance) override;
130 void
131 SetParameters(const ParametersType & parameters) override;
132
133 const ParametersType &
134 GetParameters() const override;
135
136 void
137 SetScale(const ScaleVectorType & scale);
138
139 itkGetConstReferenceMacro(Scale, ScaleVectorType);
140
141 void
142 SetSkew(const SkewVectorType & skew);
143
144 itkGetConstReferenceMacro(Skew, SkewVectorType);
145
146 void
147 SetIdentity() override;
148
149 /* This function is not implemented for this transform. An exception
150 * is thrown if this function is called. */
151 void
153
154protected:
156#if !defined(ITK_LEGACY_REMOVE)
157 [[deprecated("Removed unused constructor")]] ComposeScaleSkewVersor3DTransform(const MatrixType & matrix,
158 const OutputVectorType & offset);
159#endif
160 ComposeScaleSkewVersor3DTransform(unsigned int parametersDimension);
162
163 void
164 PrintSelf(std::ostream & os, Indent indent) const override;
165
166 void
168 {
169 m_Scale = scale;
170 }
171
172 void
174 {
175 m_Skew = skew;
176 }
177
179 void
180 ComputeMatrix() override;
181
182 void
184
185private:
188
191}; // class ComposeScaleSkewVersor3DTransform
192} // namespace itk
193
194#ifndef ITK_MANUAL_INSTANTIATION
195# include "itkComposeScaleSkewVersor3DTransform.hxx"
196#endif
197
198#endif /* __ComposeScaleSkewVersor3DTransform_h */
Array2D class representing a 2D array.
Definition: itkArray2D.h:43
ComposeScaleSkewVersor3DTransform of a vector space (space coords)
void ComputeJacobianWithRespectToParameters(const InputPointType &p, JacobianType &jacobian) const override
void SetMatrix(const MatrixType &matrix, const TParametersValueType tolerance) override
void SetParameters(const ParametersType &parameters) override
void SetSkew(const SkewVectorType &skew)
const ParametersType & GetParameters() const override
void SetMatrix(const MatrixType &matrix) override
typename TranslationType::ValueType TranslationValueType
typename ScaleVectorType::ValueType ScaleVectorValueType
ComposeScaleSkewVersor3DTransform(unsigned int parametersDimension)
~ComposeScaleSkewVersor3DTransform() override=default
void SetScale(const ScaleVectorType &scale)
void PrintSelf(std::ostream &os, Indent indent) const override
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Light weight base class for most itk classes.
Class to hold and manage different parameter types used during optimization.
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:63
VersorRigid3DTransform of a vector space (e.g. space coordinates)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....