ITK  6.0.0
Insight Toolkit
itkSpatialOrientationAdapter.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/*=========================================================================
19 *
20 * Portions of this file are subject to the VTK Toolkit Version 3 copyright.
21 *
22 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
23 *
24 * For complete copyright, license and disclaimer of warranty information
25 * please refer to the NOTICE file at the top of the ITK source tree.
26 *
27 *=========================================================================*/
28#ifndef itkSpatialOrientationAdapter_h
29#define itkSpatialOrientationAdapter_h
30#include "itkImageBase.h"
32#include "itkConceptChecking.h"
33
34namespace itk
35{
36//
37// Helper functions, better than Macros
38//
39namespace Function
40{
41inline unsigned
42Max3(double x, double y, double z)
43{
44 constexpr double obliquityThresholdCosineValue = 0.001;
45
46 double absX = itk::Math::abs(x);
47 double absY = itk::Math::abs(y);
48 double absZ = itk::Math::abs(z);
49
50 if ((absX > obliquityThresholdCosineValue) && (absX > absY) && (absX > absZ))
51 {
52 return 0;
53 }
54 else if ((absY > obliquityThresholdCosineValue) && (absY > absX) && (absY > absZ))
55 {
56 return 1;
57 }
58 else if ((absZ > obliquityThresholdCosineValue) && (absZ > absX) && (absZ > absY))
59 {
60 return 2;
61 }
62 // they must all be equal, so just say x
63 return 0;
64}
65
66inline int
67Sign(double x)
68{
69 if (x < 0)
70 {
71 return -1;
72 }
73 return 1;
74}
75} // namespace Function
76
81class ITKCommon_EXPORT SpatialOrientationAdapter
82{
83public:
85
87
89
92
95
99
103};
104} // namespace itk
105
106#endif // itkSpatialOrientationAdapter_h
Converts SpatialOrientationEnums to/from direction cosines.
typename ImageType::DirectionType DirectionType
DirectionType ToDirectionCosines(const OrientationType &Or)
OrientationType FromDirectionCosines(const DirectionType &Dir)
unsigned Max3(double x, double y, double z)
bool abs(bool x)
Definition: itkMath.h:840
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....