ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkAzimuthElevationToCartesianTransform.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 itkAzimuthElevationToCartesianTransform_h
19#define itkAzimuthElevationToCartesianTransform_h
20
21#include "itkAffineTransform.h"
22#include "itkMath.h"
23
24namespace itk
25{
87template <typename TParametersValueType = double, unsigned int VDimension = 3>
88class ITK_TEMPLATE_EXPORT AzimuthElevationToCartesianTransform
89 : public AffineTransform<TParametersValueType, VDimension>
90{
91public:
93
99
101 static constexpr unsigned int SpaceDimension = VDimension;
102 static constexpr unsigned int ParametersDimension = VDimension * (VDimension + 1);
103
106
109
111 using typename Superclass::ParametersType;
112 using typename Superclass::FixedParametersType;
114
116 using typename Superclass::JacobianType;
119
121 using typename Superclass::ScalarType;
122
124 using typename Superclass::InputPointType;
125 using typename Superclass::OutputPointType;
126
129
131 void
133 const double firstSampleDistance,
134 const long maxAzimuth,
135 const long maxElevation,
136 const double azimuthAngleSeparation,
137 const double elevationAngleSeparation);
138
139 void
141 const double firstSampleDistance,
142 const long maxAzimuth,
143 const long maxElevation);
144
147 TransformPoint(const InputPointType & point) const override;
148
150 inline InputPointType
152 {
153 InputPointType result;
154
156 {
157 result = static_cast<InputPointType>(TransformCartesianToAzEl(point));
158 }
159 else
160 {
161 result = static_cast<InputPointType>(TransformAzElToCartesian(point));
162 }
163 return result;
164 }
165
166 inline InputPointType
168 {
169 return BackTransform(point);
170 }
171
172
175 TransformCategoryEnum
180
183 void
185
188 void
190
194
198
203 itkSetMacro(MaxAzimuth, long);
204 itkGetConstMacro(MaxAzimuth, long);
206
211 itkSetMacro(MaxElevation, long);
212 itkGetConstMacro(MaxElevation, long);
214
216 itkSetMacro(RadiusSampleSize, double);
217 itkGetConstMacro(RadiusSampleSize, double);
219
221 itkSetMacro(AzimuthAngularSeparation, double);
222 itkGetConstMacro(AzimuthAngularSeparation, double);
224
226 itkSetMacro(ElevationAngularSeparation, double);
227 itkGetConstMacro(ElevationAngularSeparation, double);
229
231 itkSetMacro(FirstSampleDistance, double);
232 itkGetConstMacro(FirstSampleDistance, double);
234
235protected:
238
241
243 void
244 PrintSelf(std::ostream & os, Indent indent) const override;
245
246private:
254}; // class AzimuthElevationToCartesianTransform
255} // namespace itk
256
257#ifndef ITK_MANUAL_INSTANTIATION
258# include "itkAzimuthElevationToCartesianTransform.hxx"
259#endif
260
261#endif /* itkAzimuthElevationToCartesianTransform_h */
OptimizerParameters< FixedParametersValueType > FixedParametersType
TransformBaseTemplateEnums::TransformCategory TransformCategoryEnum
OptimizerParameters< ParametersValueType > ParametersType
static constexpr TransformCategoryEnum UnknownTransformCategory
Point< TParametersValueType, Self::InputSpaceDimension > InputPointType
AffineTransform(const MatrixType &matrix, const OutputVectorType &offset)
Point< TParametersValueType, Self::OutputSpaceDimension > OutputPointType
AffineTransform< TParametersValueType, VDimension > Superclass
OutputPointType TransformAzElToCartesian(const InputPointType &point) const
~AzimuthElevationToCartesianTransform() override=default
void PrintSelf(std::ostream &os, Indent indent) const override
itkGetConstMacro(RadiusSampleSize, double)
itkOverrideGetNameOfClassMacro(AzimuthElevationToCartesianTransform)
itkSetMacro(ElevationAngularSeparation, double)
OutputPointType TransformCartesianToAzEl(const OutputPointType &point) const
void SetAzimuthElevationToCartesianParameters(const double sampleSize, const double firstSampleDistance, const long maxAzimuth, const long maxElevation, const double azimuthAngleSeparation, const double elevationAngleSeparation)
InputPointType BackTransform(const OutputPointType &point) const
itkGetConstMacro(AzimuthAngularSeparation, double)
ITK_DISALLOW_COPY_AND_MOVE(AzimuthElevationToCartesianTransform)
OutputPointType TransformPoint(const InputPointType &point) const override
itkSetMacro(FirstSampleDistance, double)
void SetAzimuthElevationToCartesianParameters(const double sampleSize, const double firstSampleDistance, const long maxAzimuth, const long maxElevation)
itkGetConstMacro(ElevationAngularSeparation, double)
itkSetMacro(AzimuthAngularSeparation, double)
itkGetConstMacro(FirstSampleDistance, double)
Point< TParametersValueType, Self::InputSpaceDimension > InputPointType
Matrix< TParametersValueType, Self::SpaceDimension, Self::SpaceDimension > MatrixType
itkSetMacro(RadiusSampleSize, double)
Point< TParametersValueType, Self::OutputSpaceDimension > OutputPointType
InputPointType BackTransformPoint(const OutputPointType &point) const
Control indentation during Print() invocation.
Definition itkIndent.h:50
A templated class holding a M x N size Matrix.
Definition itkMatrix.h:53
Implements transparent reference counting.
vnl_matrix_fixed< ParametersValueType, VOutputDimension, VInputDimension > JacobianPositionType
vnl_matrix_fixed< ParametersValueType, VInputDimension, VOutputDimension > InverseJacobianPositionType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
*par Constraints *The filter image with at least two dimensions and a vector *length of at least The theory supports extension to scalar but *the implementation of the itk vector classes do not **The template parameter TRealType must be floating point(float or double) or *a user-defined "real" numerical type with arithmetic operations defined *sufficient to compute derivatives. **\par Performance *This filter will automatically multithread if run with *SetUsePrincipleComponents