ITK  4.9.0
Insight Segmentation and Registration Toolkit
itkAzimuthElevationToCartesianTransform.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 itkAzimuthElevationToCartesianTransform_h
19 #define itkAzimuthElevationToCartesianTransform_h
20 
21 #include "itkAffineTransform.h"
22 #include "vnl/vnl_math.h"
23 
24 namespace itk
25 {
83 template<typename TParametersValueType=double,
84  unsigned int NDimensions = 3>
86  public AffineTransform<TParametersValueType, NDimensions>
87 {
88 public:
94 
96  itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
97  itkStaticConstMacro( ParametersDimension, unsigned int,
98  NDimensions * ( NDimensions + 1 ) );
100 
103 
105  itkNewMacro(Self);
106 
110 
113 
116 
120 
122  typedef Matrix< TParametersValueType, itkGetStaticConstMacro(SpaceDimension),
123  itkGetStaticConstMacro(SpaceDimension) > MatrixType;
124 
127  const double sampleSize,
128  const double blanking,
129  const long maxAzimuth,
130  const long maxElevation,
131  const double azimuthAngleSeparation,
132  const double elevationAngleSeparation);
133 
134  void SetAzimuthElevationToCartesianParameters(const double sampleSize,
135  const double blanking,
136  const long maxAzimuth,
137  const long maxElevation);
138 
140  OutputPointType TransformPoint(const InputPointType & point) const ITK_OVERRIDE;
141 
143  inline InputPointType BackTransform(const OutputPointType & point) const
144  {
145  InputPointType result;
146 
148  {
149  result = static_cast< InputPointType >( TransformCartesianToAzEl(point) );
150  }
151  else
152  {
153  result = static_cast< InputPointType >( TransformAzElToCartesian(point) );
154  }
155  return result;
156  }
157 
159  {
160  return BackTransform(point);
161  }
162 
166 
170 
174 
178 
183  itkSetMacro(MaxAzimuth, long);
184  itkGetConstMacro(MaxAzimuth, long);
186 
191  itkSetMacro(MaxElevation, long);
192  itkGetConstMacro(MaxElevation, long);
194 
196  itkSetMacro(RadiusSampleSize, double);
197  itkGetConstMacro(RadiusSampleSize, double);
199 
201  itkSetMacro(AzimuthAngularSeparation, double);
202  itkGetConstMacro(AzimuthAngularSeparation, double);
204 
206  itkSetMacro(ElevationAngularSeparation, double);
207  itkGetConstMacro(ElevationAngularSeparation, double);
209 
211  itkSetMacro(FirstSampleDistance, double);
212  itkGetConstMacro(FirstSampleDistance, double);
214 
215 protected:
218 
221 
223  void PrintSelf(std::ostream & s, Indent indent) const ITK_OVERRIDE;
224 
225 private:
226  AzimuthElevationToCartesianTransform(const Self &) ITK_DELETE_FUNCTION;
227  void operator=(const Self &) ITK_DELETE_FUNCTION;
228 
236 }; //class AzimuthElevationToCartesianTransform
237 } // namespace itk
238 
239 #ifndef ITK_MANUAL_INSTANTIATION
240 #include "itkAzimuthElevationToCartesianTransform.hxx"
241 #endif
242 
243 #endif /* itkAzimuthElevationToCartesianTransform_h */
AffineTransform< TParametersValueType, NDimensions > Superclass
A templated class holding a M x N size Matrix.
Definition: itkMatrix.h:47
Light weight base class for most itk classes.
InputPointType BackTransformPoint(const OutputPointType &point) const
Superclass::JacobianType JacobianType
OutputPointType TransformAzElToCartesian(const InputPointType &point) const
Superclass::ParametersType ParametersType
void SetAzimuthElevationToCartesianParameters(const double sampleSize, const double blanking, const long maxAzimuth, const long maxElevation, const double azimuthAngleSeparation, const double elevationAngleSeparation)
OutputPointType TransformCartesianToAzEl(const OutputPointType &point) const
Transforms from an azimuth, elevation, radius coordinate system to a Cartesian coordinate system...
Matrix< TParametersValueType, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SpaceDimension) > MatrixType
InputPointType BackTransform(const OutputPointType &point) const
Superclass::FixedParametersType FixedParametersType
OutputPointType TransformPoint(const InputPointType &point) const override
Superclass::OutputPointType OutputPointType
Control indentation during Print() invocation.
Definition: itkIndent.h:49
Superclass::ScalarType ScalarType
Superclass::InputPointType InputPointType
void PrintSelf(std::ostream &s, Indent indent) const override