ITK  4.8.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 {
79 template<typename TParametersValueType=double,
80  unsigned int NDimensions = 3>
82  public AffineTransform<TParametersValueType, NDimensions>
83 {
84 public:
90 
92  itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
93  itkStaticConstMacro( ParametersDimension, unsigned int,
94  NDimensions * ( NDimensions + 1 ) );
96 
99 
101  itkNewMacro(Self);
102 
106 
109 
112 
116 
118  typedef Matrix< TParametersValueType, itkGetStaticConstMacro(SpaceDimension),
119  itkGetStaticConstMacro(SpaceDimension) > MatrixType;
120 
123  const double sampleSize,
124  const double blanking,
125  const long maxAzimuth,
126  const long maxElevation,
127  const double azimuthAngleSeparation,
128  const double elevationAngleSeparation);
129 
130  void SetAzimuthElevationToCartesianParameters(const double sampleSize,
131  const double blanking,
132  const long maxAzimuth,
133  const long maxElevation);
134 
136  OutputPointType TransformPoint(const InputPointType & point) const ITK_OVERRIDE;
137 
139  inline InputPointType BackTransform(const OutputPointType & point) const
140  {
141  InputPointType result;
142 
144  {
145  result = static_cast< InputPointType >( TransformCartesianToAzEl(point) );
146  }
147  else
148  {
149  result = static_cast< InputPointType >( TransformAzElToCartesian(point) );
150  }
151  return result;
152  }
153 
155  {
156  return BackTransform(point);
157  }
158 
162 
166 
170 
174 
179  itkSetMacro(MaxAzimuth, long);
180  itkGetConstMacro(MaxAzimuth, long);
182 
187  itkSetMacro(MaxElevation, long);
188  itkGetConstMacro(MaxElevation, long);
190 
192  itkSetMacro(RadiusSampleSize, double);
193  itkGetConstMacro(RadiusSampleSize, double);
195 
197  itkSetMacro(AzimuthAngularSeparation, double);
198  itkGetConstMacro(AzimuthAngularSeparation, double);
200 
202  itkSetMacro(ElevationAngularSeparation, double);
203  itkGetConstMacro(ElevationAngularSeparation, double);
205 
207  itkSetMacro(FirstSampleDistance, double);
208  itkGetConstMacro(FirstSampleDistance, double);
210 
211 protected:
214 
217 
219  void PrintSelf(std::ostream & s, Indent indent) const ITK_OVERRIDE;
220 
221 private:
222  AzimuthElevationToCartesianTransform(const Self &); // purposely not
223  // implemented
224  void operator=(const Self &); //purposely not
225 
226  // implemented
227 
235 }; //class AzimuthElevationToCartesianTransform
236 } // namespace itk
237 
238 #ifndef ITK_MANUAL_INSTANTIATION
239 #include "itkAzimuthElevationToCartesianTransform.hxx"
240 #endif
241 
242 #endif /* itkAzimuthElevationToCartesianTransform_h */
AffineTransform< TParametersValueType, NDimensions > Superclass
A templated class holding a M x N size Matrix.
Definition: itkMatrix.h:46
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