ITK
4.2.0
Insight Segmentation and Registration Toolkit
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
ITK
Modules
Core
Common
include
itkVersor.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 __itkVersor_h
19
#define __itkVersor_h
20
21
#include "
itkMatrix.h
"
22
#include "vnl/vnl_quaternion.h"
23
#include "vnl/vnl_vector_fixed.h"
24
25
namespace
itk
26
{
49
template
<
class
T >
50
class
Versor
51
{
52
public
:
54
typedef
Versor
Self
;
55
58
typedef
T
ValueType
;
59
61
typedef
typename
NumericTraits< ValueType >::RealType
RealType
;
62
64
typedef
Vector< T, 3 >
VectorType
;
65
67
typedef
Point< T, 3 >
PointType
;
68
70
typedef
CovariantVector< T, 3 >
CovariantVectorType
;
71
73
typedef
vnl_vector_fixed< T, 3 >
VnlVectorType
;
74
76
typedef
vnl_quaternion< T >
VnlQuaternionType
;
77
79
typedef
Matrix< T, 3, 3 >
MatrixType
;
80
82
vnl_quaternion< T >
GetVnlQuaternion
(
void
)
const
;
83
87
void
Set
(
const
VnlQuaternionType
&);
88
106
void
Set
(T x, T y, T z, T w);
108
111
Versor
();
112
114
Versor
(
const
Self
& v);
115
117
const
Self
&
operator=
(
const
Self
& v);
118
122
const
Self
&
operator*=
(
const
Self
& v);
123
128
const
Self
&
operator/=
(
const
Self
& v);
129
133
ValueType
GetTensor
(
void
)
const
;
134
139
void
Normalize
(
void
);
140
143
Self
GetConjugate
(
void
)
const
;
144
148
Self
GetReciprocal
(
void
)
const
;
149
152
Self
operator *
(
const
Self
& vec)
const
;
153
155
Self
operator/
(
const
Self
& vec)
const
;
156
159
bool
operator==
(
const
Self
& vec)
const
;
160
163
bool
operator!=
(
const
Self
& vec)
const
;
164
166
ValueType
GetScalar
(
void
)
const
;
167
169
ValueType
GetX
(
void
)
const
{
return
m_X
; }
170
172
ValueType
GetY
(
void
)
const
{
return
m_Y
; }
173
175
ValueType
GetZ
(
void
)
const
{
return
m_Z
; }
176
178
ValueType
GetW
(
void
)
const
{
return
m_W
; }
179
181
ValueType
GetAngle
(
void
)
const
;
182
185
VectorType
GetAxis
(
void
)
const
;
186
191
VectorType
GetRight
(
void
)
const
;
192
196
void
Set
(
const
VectorType
& axis,
ValueType
angle);
197
203
void
Set
(
const
MatrixType
& m);
204
210
void
Set
(
const
VectorType
& axis);
211
218
void
SetRotationAroundX
(
ValueType
angle);
219
226
void
SetRotationAroundY
(
ValueType
angle);
227
234
void
SetRotationAroundZ
(
ValueType
angle);
235
238
void
SetIdentity
();
239
241
VectorType
Transform
(
const
VectorType
& v)
const
;
242
244
CovariantVectorType
Transform
(
const
CovariantVectorType
& v)
const
;
245
247
PointType
Transform
(
const
PointType
& v)
const
;
248
250
VnlVectorType
Transform
(
const
VnlVectorType
& v)
const
;
251
253
MatrixType
GetMatrix
(
void
)
const
;
254
256
Self
SquareRoot
(
void
)
const
;
257
261
Self
Exponential
(
ValueType
exponent)
const
;
262
263
private
:
265
ValueType
m_X
;
266
268
ValueType
m_Y
;
269
271
ValueType
m_Z
;
272
274
ValueType
m_W
;
275
};
276
277
template
<
class
T >
278
ITK_EXPORT std::ostream &
operator<<
(std::ostream & os,
279
const
Versor< T >
& v)
280
{
281
os <<
"[ "
;
282
os << v.
GetX
() <<
", "
<< v.
GetY
() <<
", "
;
283
os << v.
GetZ
() <<
", "
<< v.
GetW
() <<
" ]"
;
284
return
os;
285
}
286
287
template
<
class
T >
288
ITK_EXPORT std::istream &
operator>>
(std::istream & is,
289
Versor< T > & v);
290
}
// end namespace itk
291
292
// Define instantiation macro for this template.
293
#define ITK_TEMPLATE_Versor(_, EXPORT, TypeX, TypeY) \
294
namespace itk \
295
{ \
296
_( 1 ( class EXPORT Versor< ITK_TEMPLATE_1 TypeX > ) ) \
297
namespace Templates \
298
{ \
299
typedef Versor< ITK_TEMPLATE_1 TypeX > Versor##TypeY; \
300
} \
301
}
302
303
#if ITK_TEMPLATE_EXPLICIT
304
#include "Templates/itkVersor+-.h"
305
#endif
306
307
#if ITK_TEMPLATE_TXX
308
#include "itkVersor.hxx"
309
#endif
310
311
#endif
312
Generated on Tue Jul 10 2012 23:48:06 for ITK by
1.8.1