```// @(#)root/mathcore:\$Id\$
// Authors: W. Brown, M. Fischler, L. Moneta    2005

/**********************************************************************
*                                                                    *
* Copyright (c) 2005 , LCG ROOT MathLib Team and                     *
*                      FNAL LCG ROOT MathLib Team                    *
*                                                                    *
*                                                                    *
**********************************************************************/

// Header source file for class DisplacementVector2D
//
// Created by: Lorenzo Moneta  at Mon Apr 16 2007
//

#ifndef ROOT_Math_GenVector_DisplacementVector2D
#define ROOT_Math_GenVector_DisplacementVector2D  1

#ifndef ROOT_Math_GenVector_Cartesian2D
#include "Math/GenVector/Cartesian2D.h"
#endif

#ifndef ROOT_Math_GenVector_PositionVector2Dfwd
#include "Math/GenVector/PositionVector2Dfwd.h"
#endif

#ifndef ROOT_Math_GenVector_GenVectorIO
#include "Math/GenVector/GenVectorIO.h"
#endif

#ifndef ROOT_Math_GenVector_BitReproducible
#include "Math/GenVector/BitReproducible.h"
#endif

#ifndef ROOT_Math_GenVector_CoordinateSystemTags
#include "Math/GenVector/CoordinateSystemTags.h"
#endif

//#include "Math/GenVector/Expression2D.h"

namespace ROOT {

namespace Math {

//__________________________________________________________________________________________
/**
Class describing a generic displacement vector in 2 dimensions.
This class is templated on the type of Coordinate system.
One example is the XYVector which is a vector based on
double precision x,y  data members by using the
ROOT::Math::Cartesian2D<double> Coordinate system.
The class is having also an extra template parameter, the coordinate system tag,
to be able to identify (tag) vector described in different reference coordinate system,
like global or local coordinate systems.

@ingroup GenVector
*/

template <class CoordSystem, class Tag = DefaultCoordinateSystemTag >
class DisplacementVector2D {

public:

typedef typename CoordSystem::Scalar Scalar;
typedef CoordSystem CoordinateType;
typedef Tag  CoordinateSystemTag;

// ------ ctors ------

/**
Default constructor. Construct an empty object with zero values
*/
DisplacementVector2D ( ) :   fCoordinates()  { }

/**
Construct from three values of type <em>Scalar</em>.
In the case of a XYVector the values are x,y
In the case of  a polar vector they are r, phi
*/
DisplacementVector2D(Scalar a, Scalar b) :
fCoordinates ( a , b )  { }

/**
Construct from a displacement vector expressed in different
coordinates, or using a different Scalar type, but with same coordinate system tag
*/
template <class OtherCoords>
explicit DisplacementVector2D( const DisplacementVector2D<OtherCoords, Tag> & v) :
fCoordinates ( v.Coordinates() ) { }

/**
Construct from a position vector expressed in different coordinates
but with the same coordinate system tag
*/
template <class OtherCoords>
explicit DisplacementVector2D( const PositionVector2D<OtherCoords,Tag> & p) :
fCoordinates ( p.Coordinates() ) { }

/**
Construct from a foreign 2D vector type, for example, Hep2Vector
Precondition: v must implement methods x() and  y()
*/
template <class ForeignVector>
explicit DisplacementVector2D( const ForeignVector & v) :
fCoordinates ( Cartesian2D<Scalar>( v.x(), v.y() ) ) { }

// compiler-generated copy ctor and dtor are fine.

// ------ assignment ------

/**
Assignment operator from a displacement vector of arbitrary type
*/
template <class OtherCoords>
DisplacementVector2D & operator=
( const DisplacementVector2D<OtherCoords, Tag> & v) {
fCoordinates = v.Coordinates();
return *this;
}

/**
Assignment operator from a position vector
(not necessarily efficient unless one or the other is Cartesian)
*/
template <class OtherCoords>
DisplacementVector2D & operator=
( const PositionVector2D<OtherCoords,Tag> & rhs) {
SetXY(rhs.x(), rhs.y() );
return *this;
}

/**
Assignment from a foreign 2D vector type, for example, Hep2Vector
Precondition: v must implement methods x() and  y()
*/
template <class ForeignVector>
DisplacementVector2D & operator= ( const ForeignVector & v) {
SetXY( v.x(),  v.y()  );
return *this;
}

// ------ Set, Get, and access coordinate data ------

/**
Retrieve a copy of the coordinates object
*/
CoordSystem Coordinates() const {
return fCoordinates;
}

/**
Set internal data based on 2 Scalar numbers.
These are for example (x,y) for a cartesian vector or (r,phi) for a polar vector
*/
DisplacementVector2D<CoordSystem, Tag>& SetCoordinates( Scalar a, Scalar b) {
fCoordinates.SetCoordinates(a, b);
return *this;
}

/**
get internal data into 2 Scalar numbers.
These are for example (x,y) for a cartesian vector or (r,phi) for a polar vector
*/
void GetCoordinates( Scalar& a, Scalar& b) const
{ fCoordinates.GetCoordinates(a, b);  }

/**
set the values of the vector from the cartesian components (x,y)
(if the vector is held in polar coordinates,
then (x, y) are converted to that form)
*/
DisplacementVector2D<CoordSystem, Tag>& SetXY (Scalar a, Scalar b) {
fCoordinates.SetXY(a,b);
return *this;
}

// ------------------- Equality -----------------

/**
Exact equality
*/
bool operator==(const DisplacementVector2D & rhs) const {
return fCoordinates==rhs.fCoordinates;
}
bool operator!= (const DisplacementVector2D & rhs) const {
return !(operator==(rhs));
}

// ------ Individual element access, in various coordinate systems ------

/**
Cartesian X, converting if necessary from internal coordinate system.
*/
Scalar X() const { return fCoordinates.X(); }

/**
Cartesian Y, converting if necessary from internal coordinate system.
*/
Scalar Y() const { return fCoordinates.Y(); }

/**
Polar R, converting if necessary from internal coordinate system.
*/
Scalar R() const { return fCoordinates.R(); }

/**
Polar phi, converting if necessary from internal coordinate system.
*/
Scalar Phi() const { return fCoordinates.Phi(); }

// ----- Other fundamental properties -----

/**
Magnitute squared ( r^2 in spherical coordinate)
*/
Scalar Mag2() const { return fCoordinates.Mag2();}

/**
return unit vector parallel to this
*/
DisplacementVector2D  Unit() const {
Scalar tot = R();
}

// ------ Setting individual elements present in coordinate system ------

/**
Change X - Cartesian2D coordinates only
*/
DisplacementVector2D<CoordSystem, Tag>& SetX (Scalar a) {
fCoordinates.SetX(a);
return *this;
}

/**
Change Y - Cartesian2D coordinates only
*/
DisplacementVector2D<CoordSystem, Tag>& SetY (Scalar a) {
fCoordinates.SetY(a);
return *this;
}

/**
Change R - Polar2D coordinates only
*/
DisplacementVector2D<CoordSystem, Tag>& SetR (Scalar a) {
fCoordinates.SetR(a);
return *this;
}

/**
Change Phi - Polar2D  coordinates
*/
DisplacementVector2D<CoordSystem, Tag>& SetPhi (Scalar ang) {
fCoordinates.SetPhi(ang);
return *this;
}

// ------ Operations combining two vectors ------
// -- need to have the specialized version in order to avoid

/**
Return the scalar (dot) product of two displacement vectors.
It is possible to perform the product for any type of vector coordinates,
but they must have the same coordinate system tag
*/
template< class OtherCoords >
Scalar Dot( const  DisplacementVector2D<OtherCoords,Tag>  & v) const {
return X()*v.X() + Y()*v.Y();
}
/**
Return the scalar (dot) product of two vectors.
It is possible to perform the product for any classes
implementing x() and  y()  member functions
*/
template< class OtherVector >
Scalar Dot( const  OtherVector & v) const {
return X()*v.x() + Y()*v.y();
}

/**
Self Addition with a displacement vector.
*/
template <class OtherCoords>
DisplacementVector2D & operator+=
(const  DisplacementVector2D<OtherCoords,Tag> & v) {
SetXY(  X() + v.X(), Y() + v.Y() );
return *this;
}

/**
Self Difference with a displacement vector.
*/
template <class OtherCoords>
DisplacementVector2D & operator-=
(const  DisplacementVector2D<OtherCoords,Tag> & v) {
SetXY(  x() - v.x(), y() - v.y() );
return *this;
}

/**
multiply this vector by a scalar quantity
*/
DisplacementVector2D & operator*= (Scalar a) {
fCoordinates.Scale(a);
return *this;
}

/**
divide this vector by a scalar quantity
*/
DisplacementVector2D & operator/= (Scalar a) {
fCoordinates.Scale(1/a);
return *this;
}

// -- The following methods (v*a and v/a) could instead be free functions.
// -- They were moved into the class to solve a problem on AIX.

/**
Multiply a vector by a real number
*/
DisplacementVector2D operator * ( Scalar a ) const {
DisplacementVector2D tmp(*this);
tmp *= a;
return tmp;
}

/**
Negative of the vector
*/
DisplacementVector2D operator - ( ) const {
return operator*( Scalar(-1) );
}

/**
Positive of the vector, return itself
*/
DisplacementVector2D operator + ( ) const {return *this;}

/**
Division of a vector with a real number
*/
DisplacementVector2D operator/ (Scalar a) const {
DisplacementVector2D tmp(*this);
tmp /= a;
return tmp;
}

/**
Rotate by an angle
*/
void Rotate( Scalar angle) {
return fCoordinates.Rotate(angle);
}

// Methods providing  Limited backward name compatibility with CLHEP

Scalar x()     const { return fCoordinates.X();     }
Scalar y()     const { return fCoordinates.Y();     }
Scalar r()     const { return fCoordinates.R();     }
Scalar phi()   const { return fCoordinates.Phi();   }
Scalar mag2()  const { return fCoordinates.Mag2();  }
DisplacementVector2D unit() const {return Unit();}

private:

CoordSystem fCoordinates;    // internal coordinate system

// the following methods should not compile

// this should not compile (if from a vector or points with different tag
template <class OtherCoords, class OtherTag>
explicit DisplacementVector2D( const DisplacementVector2D<OtherCoords, OtherTag> & ) {}

template <class OtherCoords, class OtherTag>
explicit DisplacementVector2D( const PositionVector2D<OtherCoords, OtherTag> & ) {}

template <class OtherCoords, class OtherTag>
DisplacementVector2D & operator=( const DisplacementVector2D<OtherCoords, OtherTag> & );

template <class OtherCoords, class OtherTag>
DisplacementVector2D & operator=( const PositionVector2D<OtherCoords, OtherTag> & );

template <class OtherCoords, class OtherTag>
DisplacementVector2D & operator+=(const  DisplacementVector2D<OtherCoords, OtherTag> & );

template <class OtherCoords, class OtherTag>
DisplacementVector2D & operator-=(const  DisplacementVector2D<OtherCoords, OtherTag> & );

template<class OtherCoords, class OtherTag >
Scalar Dot( const  DisplacementVector2D<OtherCoords, OtherTag> &  ) const;

template<class OtherCoords, class OtherTag >
DisplacementVector2D Cross( const  DisplacementVector2D<OtherCoords, OtherTag> &  ) const;

};

// ---------- DisplacementVector2D class template ends here ------------
// ---------------------------------------------------------------------

/**
The (coordinate system) type of the returned vector is defined to
be identical to that of the first vector, which is passed by value
*/
template <class CoordSystem1, class CoordSystem2, class U>
inline
DisplacementVector2D<CoordSystem1,U>
operator+(       DisplacementVector2D<CoordSystem1,U> v1,
const DisplacementVector2D<CoordSystem2,U>  & v2) {
return v1 += v2;
}

/**
Difference between two DisplacementVector2D vectors.
The (coordinate system) type of the returned vector is defined to
be identical to that of the first vector.
*/
template <class CoordSystem1, class CoordSystem2, class U>
inline
DisplacementVector2D<CoordSystem1,U>
operator-( DisplacementVector2D<CoordSystem1,U> v1,
DisplacementVector2D<CoordSystem2,U> const & v2) {
return v1 -= v2;
}

/**
Multiplication of a displacement vector by real number  a*v
*/
template <class CoordSystem, class U>
inline
DisplacementVector2D<CoordSystem,U>
operator * ( typename DisplacementVector2D<CoordSystem,U>::Scalar a,
DisplacementVector2D<CoordSystem,U> v) {
return v *= a;
// Note - passing v by value and using operator *= may save one
// copy relative to passing v by const ref and creating a temporary.
}

// v1*v2 notation for Cross product of two vectors is omitted,
// since it is always confusing as to whether dot product is meant.

// ------------- I/O to/from streams -------------

template< class char_t, class traits_t, class T, class U >
inline
std::basic_ostream<char_t,traits_t> &
operator << ( std::basic_ostream<char_t,traits_t> & os
, DisplacementVector2D<T,U> const & v
)
{
if( !os )  return os;

typename T::Scalar a, b;
v.GetCoordinates(a, b);

if( detail::get_manip( os, detail::bitforbit ) )  {
detail::set_manip( os, detail::bitforbit, '\00' );
typedef GenVector_detail::BitReproducible BR;
BR::Output(os, a);
BR::Output(os, b);
}
else  {
os << detail::get_manip( os, detail::open  ) << a
<< detail::get_manip( os, detail::sep   ) << b
<< detail::get_manip( os, detail::close );
}

return os;

}  // op<< <>()

template< class char_t, class traits_t, class T, class U >
inline
std::basic_istream<char_t,traits_t> &
operator >> ( std::basic_istream<char_t,traits_t> & is
, DisplacementVector2D<T,U> & v
)
{
if( !is )  return is;

typename T::Scalar a, b;

if( detail::get_manip( is, detail::bitforbit ) )  {
detail::set_manip( is, detail::bitforbit, '\00' );
typedef GenVector_detail::BitReproducible BR;
BR::Input(is, a);
BR::Input(is, b);
}
else  {
detail::require_delim( is, detail::open  );  is >> a;
detail::require_delim( is, detail::sep   );  is >> b;
detail::require_delim( is, detail::close );
}

if( is )
v.SetCoordinates(a, b);
return is;

}  // op>> <>()

}  // namespace Math

}  // namespace ROOT

#endif /* ROOT_Math_GenVector_DisplacementVector2D  */

```
DisplacementVector2D.h:1
DisplacementVector2D.h:2
DisplacementVector2D.h:3
DisplacementVector2D.h:4
DisplacementVector2D.h:5
DisplacementVector2D.h:6
DisplacementVector2D.h:7
DisplacementVector2D.h:8
DisplacementVector2D.h:9
DisplacementVector2D.h:10
DisplacementVector2D.h:11
DisplacementVector2D.h:12
DisplacementVector2D.h:13
DisplacementVector2D.h:14
DisplacementVector2D.h:15
DisplacementVector2D.h:16
DisplacementVector2D.h:17
DisplacementVector2D.h:18
DisplacementVector2D.h:19
DisplacementVector2D.h:20
DisplacementVector2D.h:21
DisplacementVector2D.h:22
DisplacementVector2D.h:23
DisplacementVector2D.h:24
DisplacementVector2D.h:25
DisplacementVector2D.h:26
DisplacementVector2D.h:27
DisplacementVector2D.h:28
DisplacementVector2D.h:29
DisplacementVector2D.h:30
DisplacementVector2D.h:31
DisplacementVector2D.h:32
DisplacementVector2D.h:33
DisplacementVector2D.h:34
DisplacementVector2D.h:35
DisplacementVector2D.h:36
DisplacementVector2D.h:37
DisplacementVector2D.h:38
DisplacementVector2D.h:39
DisplacementVector2D.h:40
DisplacementVector2D.h:41
DisplacementVector2D.h:42
DisplacementVector2D.h:43
DisplacementVector2D.h:44
DisplacementVector2D.h:45
DisplacementVector2D.h:46
DisplacementVector2D.h:47
DisplacementVector2D.h:48
DisplacementVector2D.h:49
DisplacementVector2D.h:50
DisplacementVector2D.h:51
DisplacementVector2D.h:52
DisplacementVector2D.h:53
DisplacementVector2D.h:54
DisplacementVector2D.h:55
DisplacementVector2D.h:56
DisplacementVector2D.h:57
DisplacementVector2D.h:58
DisplacementVector2D.h:59
DisplacementVector2D.h:60
DisplacementVector2D.h:61
DisplacementVector2D.h:62
DisplacementVector2D.h:63
DisplacementVector2D.h:64
DisplacementVector2D.h:65
DisplacementVector2D.h:66
DisplacementVector2D.h:67
DisplacementVector2D.h:68
DisplacementVector2D.h:69
DisplacementVector2D.h:70
DisplacementVector2D.h:71
DisplacementVector2D.h:72
DisplacementVector2D.h:73
DisplacementVector2D.h:74
DisplacementVector2D.h:75
DisplacementVector2D.h:76
DisplacementVector2D.h:77
DisplacementVector2D.h:78
DisplacementVector2D.h:79
DisplacementVector2D.h:80
DisplacementVector2D.h:81
DisplacementVector2D.h:82
DisplacementVector2D.h:83
DisplacementVector2D.h:84
DisplacementVector2D.h:85
DisplacementVector2D.h:86
DisplacementVector2D.h:87
DisplacementVector2D.h:88
DisplacementVector2D.h:89
DisplacementVector2D.h:90
DisplacementVector2D.h:91
DisplacementVector2D.h:92
DisplacementVector2D.h:93
DisplacementVector2D.h:94
DisplacementVector2D.h:95
DisplacementVector2D.h:96
DisplacementVector2D.h:97
DisplacementVector2D.h:98
DisplacementVector2D.h:99
DisplacementVector2D.h:100
DisplacementVector2D.h:101
DisplacementVector2D.h:102
DisplacementVector2D.h:103
DisplacementVector2D.h:104
DisplacementVector2D.h:105
DisplacementVector2D.h:106
DisplacementVector2D.h:107
DisplacementVector2D.h:108
DisplacementVector2D.h:109
DisplacementVector2D.h:110
DisplacementVector2D.h:111
DisplacementVector2D.h:112
DisplacementVector2D.h:113
DisplacementVector2D.h:114
DisplacementVector2D.h:115
DisplacementVector2D.h:116
DisplacementVector2D.h:117
DisplacementVector2D.h:118
DisplacementVector2D.h:119
DisplacementVector2D.h:120
DisplacementVector2D.h:121
DisplacementVector2D.h:122
DisplacementVector2D.h:123
DisplacementVector2D.h:124
DisplacementVector2D.h:125
DisplacementVector2D.h:126
DisplacementVector2D.h:127
DisplacementVector2D.h:128
DisplacementVector2D.h:129
DisplacementVector2D.h:130
DisplacementVector2D.h:131
DisplacementVector2D.h:132
DisplacementVector2D.h:133
DisplacementVector2D.h:134
DisplacementVector2D.h:135
DisplacementVector2D.h:136
DisplacementVector2D.h:137
DisplacementVector2D.h:138
DisplacementVector2D.h:139
DisplacementVector2D.h:140
DisplacementVector2D.h:141
DisplacementVector2D.h:142
DisplacementVector2D.h:143
DisplacementVector2D.h:144
DisplacementVector2D.h:145
DisplacementVector2D.h:146
DisplacementVector2D.h:147
DisplacementVector2D.h:148
DisplacementVector2D.h:149
DisplacementVector2D.h:150
DisplacementVector2D.h:151
DisplacementVector2D.h:152
DisplacementVector2D.h:153
DisplacementVector2D.h:154
DisplacementVector2D.h:155
DisplacementVector2D.h:156
DisplacementVector2D.h:157
DisplacementVector2D.h:158
DisplacementVector2D.h:159
DisplacementVector2D.h:160
DisplacementVector2D.h:161
DisplacementVector2D.h:162
DisplacementVector2D.h:163
DisplacementVector2D.h:164
DisplacementVector2D.h:165
DisplacementVector2D.h:166
DisplacementVector2D.h:167
DisplacementVector2D.h:168
DisplacementVector2D.h:169
DisplacementVector2D.h:170
DisplacementVector2D.h:171
DisplacementVector2D.h:172
DisplacementVector2D.h:173
DisplacementVector2D.h:174
DisplacementVector2D.h:175
DisplacementVector2D.h:176
DisplacementVector2D.h:177
DisplacementVector2D.h:178
DisplacementVector2D.h:179
DisplacementVector2D.h:180
DisplacementVector2D.h:181
DisplacementVector2D.h:182
DisplacementVector2D.h:183
DisplacementVector2D.h:184
DisplacementVector2D.h:185
DisplacementVector2D.h:186
DisplacementVector2D.h:187
DisplacementVector2D.h:188
DisplacementVector2D.h:189
DisplacementVector2D.h:190
DisplacementVector2D.h:191
DisplacementVector2D.h:192
DisplacementVector2D.h:193
DisplacementVector2D.h:194
DisplacementVector2D.h:195
DisplacementVector2D.h:196
DisplacementVector2D.h:197
DisplacementVector2D.h:198
DisplacementVector2D.h:199
DisplacementVector2D.h:200
DisplacementVector2D.h:201
DisplacementVector2D.h:202
DisplacementVector2D.h:203
DisplacementVector2D.h:204
DisplacementVector2D.h:205
DisplacementVector2D.h:206
DisplacementVector2D.h:207
DisplacementVector2D.h:208
DisplacementVector2D.h:209
DisplacementVector2D.h:210
DisplacementVector2D.h:211
DisplacementVector2D.h:212
DisplacementVector2D.h:213
DisplacementVector2D.h:214
DisplacementVector2D.h:215
DisplacementVector2D.h:216
DisplacementVector2D.h:217
DisplacementVector2D.h:218
DisplacementVector2D.h:219
DisplacementVector2D.h:220
DisplacementVector2D.h:221
DisplacementVector2D.h:222
DisplacementVector2D.h:223
DisplacementVector2D.h:224
DisplacementVector2D.h:225
DisplacementVector2D.h:226
DisplacementVector2D.h:227
DisplacementVector2D.h:228
DisplacementVector2D.h:229
DisplacementVector2D.h:230
DisplacementVector2D.h:231
DisplacementVector2D.h:232
DisplacementVector2D.h:233
DisplacementVector2D.h:234
DisplacementVector2D.h:235
DisplacementVector2D.h:236
DisplacementVector2D.h:237
DisplacementVector2D.h:238
DisplacementVector2D.h:239
DisplacementVector2D.h:240
DisplacementVector2D.h:241
DisplacementVector2D.h:242
DisplacementVector2D.h:243
DisplacementVector2D.h:244
DisplacementVector2D.h:245
DisplacementVector2D.h:246
DisplacementVector2D.h:247
DisplacementVector2D.h:248
DisplacementVector2D.h:249
DisplacementVector2D.h:250
DisplacementVector2D.h:251
DisplacementVector2D.h:252
DisplacementVector2D.h:253
DisplacementVector2D.h:254
DisplacementVector2D.h:255
DisplacementVector2D.h:256
DisplacementVector2D.h:257
DisplacementVector2D.h:258
DisplacementVector2D.h:259
DisplacementVector2D.h:260
DisplacementVector2D.h:261
DisplacementVector2D.h:262
DisplacementVector2D.h:263
DisplacementVector2D.h:264
DisplacementVector2D.h:265
DisplacementVector2D.h:266
DisplacementVector2D.h:267
DisplacementVector2D.h:268
DisplacementVector2D.h:269
DisplacementVector2D.h:270
DisplacementVector2D.h:271
DisplacementVector2D.h:272
DisplacementVector2D.h:273
DisplacementVector2D.h:274
DisplacementVector2D.h:275
DisplacementVector2D.h:276
DisplacementVector2D.h:277
DisplacementVector2D.h:278
DisplacementVector2D.h:279
DisplacementVector2D.h:280
DisplacementVector2D.h:281
DisplacementVector2D.h:282
DisplacementVector2D.h:283
DisplacementVector2D.h:284
DisplacementVector2D.h:285
DisplacementVector2D.h:286
DisplacementVector2D.h:287
DisplacementVector2D.h:288
DisplacementVector2D.h:289
DisplacementVector2D.h:290
DisplacementVector2D.h:291
DisplacementVector2D.h:292
DisplacementVector2D.h:293
DisplacementVector2D.h:294
DisplacementVector2D.h:295
DisplacementVector2D.h:296
DisplacementVector2D.h:297
DisplacementVector2D.h:298
DisplacementVector2D.h:299
DisplacementVector2D.h:300
DisplacementVector2D.h:301
DisplacementVector2D.h:302
DisplacementVector2D.h:303
DisplacementVector2D.h:304
DisplacementVector2D.h:305
DisplacementVector2D.h:306
DisplacementVector2D.h:307
DisplacementVector2D.h:308
DisplacementVector2D.h:309
DisplacementVector2D.h:310
DisplacementVector2D.h:311
DisplacementVector2D.h:312
DisplacementVector2D.h:313
DisplacementVector2D.h:314
DisplacementVector2D.h:315
DisplacementVector2D.h:316
DisplacementVector2D.h:317
DisplacementVector2D.h:318
DisplacementVector2D.h:319
DisplacementVector2D.h:320
DisplacementVector2D.h:321
DisplacementVector2D.h:322
DisplacementVector2D.h:323
DisplacementVector2D.h:324
DisplacementVector2D.h:325
DisplacementVector2D.h:326
DisplacementVector2D.h:327
DisplacementVector2D.h:328
DisplacementVector2D.h:329
DisplacementVector2D.h:330
DisplacementVector2D.h:331
DisplacementVector2D.h:332
DisplacementVector2D.h:333
DisplacementVector2D.h:334
DisplacementVector2D.h:335
DisplacementVector2D.h:336
DisplacementVector2D.h:337
DisplacementVector2D.h:338
DisplacementVector2D.h:339
DisplacementVector2D.h:340
DisplacementVector2D.h:341
DisplacementVector2D.h:342
DisplacementVector2D.h:343
DisplacementVector2D.h:344
DisplacementVector2D.h:345
DisplacementVector2D.h:346
DisplacementVector2D.h:347
DisplacementVector2D.h:348
DisplacementVector2D.h:349
DisplacementVector2D.h:350
DisplacementVector2D.h:351
DisplacementVector2D.h:352
DisplacementVector2D.h:353
DisplacementVector2D.h:354
DisplacementVector2D.h:355
DisplacementVector2D.h:356
DisplacementVector2D.h:357
DisplacementVector2D.h:358
DisplacementVector2D.h:359
DisplacementVector2D.h:360
DisplacementVector2D.h:361
DisplacementVector2D.h:362
DisplacementVector2D.h:363
DisplacementVector2D.h:364
DisplacementVector2D.h:365
DisplacementVector2D.h:366
DisplacementVector2D.h:367
DisplacementVector2D.h:368
DisplacementVector2D.h:369
DisplacementVector2D.h:370
DisplacementVector2D.h:371
DisplacementVector2D.h:372
DisplacementVector2D.h:373
DisplacementVector2D.h:374
DisplacementVector2D.h:375
DisplacementVector2D.h:376
DisplacementVector2D.h:377
DisplacementVector2D.h:378
DisplacementVector2D.h:379
DisplacementVector2D.h:380
DisplacementVector2D.h:381
DisplacementVector2D.h:382
DisplacementVector2D.h:383
DisplacementVector2D.h:384
DisplacementVector2D.h:385
DisplacementVector2D.h:386
DisplacementVector2D.h:387
DisplacementVector2D.h:388
DisplacementVector2D.h:389
DisplacementVector2D.h:390
DisplacementVector2D.h:391
DisplacementVector2D.h:392
DisplacementVector2D.h:393
DisplacementVector2D.h:394
DisplacementVector2D.h:395
DisplacementVector2D.h:396
DisplacementVector2D.h:397
DisplacementVector2D.h:398
DisplacementVector2D.h:399
DisplacementVector2D.h:400
DisplacementVector2D.h:401
DisplacementVector2D.h:402
DisplacementVector2D.h:403
DisplacementVector2D.h:404
DisplacementVector2D.h:405
DisplacementVector2D.h:406
DisplacementVector2D.h:407
DisplacementVector2D.h:408
DisplacementVector2D.h:409
DisplacementVector2D.h:410
DisplacementVector2D.h:411
DisplacementVector2D.h:412
DisplacementVector2D.h:413
DisplacementVector2D.h:414
DisplacementVector2D.h:415
DisplacementVector2D.h:416
DisplacementVector2D.h:417
DisplacementVector2D.h:418
DisplacementVector2D.h:419
DisplacementVector2D.h:420
DisplacementVector2D.h:421
DisplacementVector2D.h:422
DisplacementVector2D.h:423
DisplacementVector2D.h:424
DisplacementVector2D.h:425
DisplacementVector2D.h:426
DisplacementVector2D.h:427
DisplacementVector2D.h:428
DisplacementVector2D.h:429
DisplacementVector2D.h:430
DisplacementVector2D.h:431
DisplacementVector2D.h:432
DisplacementVector2D.h:433
DisplacementVector2D.h:434
DisplacementVector2D.h:435
DisplacementVector2D.h:436
DisplacementVector2D.h:437
DisplacementVector2D.h:438
DisplacementVector2D.h:439
DisplacementVector2D.h:440
DisplacementVector2D.h:441
DisplacementVector2D.h:442
DisplacementVector2D.h:443
DisplacementVector2D.h:444
DisplacementVector2D.h:445
DisplacementVector2D.h:446
DisplacementVector2D.h:447
DisplacementVector2D.h:448
DisplacementVector2D.h:449
DisplacementVector2D.h:450
DisplacementVector2D.h:451
DisplacementVector2D.h:452
DisplacementVector2D.h:453
DisplacementVector2D.h:454
DisplacementVector2D.h:455
DisplacementVector2D.h:456
DisplacementVector2D.h:457
DisplacementVector2D.h:458
DisplacementVector2D.h:459
DisplacementVector2D.h:460
DisplacementVector2D.h:461
DisplacementVector2D.h:462
DisplacementVector2D.h:463
DisplacementVector2D.h:464
DisplacementVector2D.h:465
DisplacementVector2D.h:466
DisplacementVector2D.h:467
DisplacementVector2D.h:468
DisplacementVector2D.h:469
DisplacementVector2D.h:470
DisplacementVector2D.h:471
DisplacementVector2D.h:472
DisplacementVector2D.h:473
DisplacementVector2D.h:474
DisplacementVector2D.h:475
DisplacementVector2D.h:476
DisplacementVector2D.h:477
DisplacementVector2D.h:478
DisplacementVector2D.h:479
DisplacementVector2D.h:480
DisplacementVector2D.h:481
DisplacementVector2D.h:482
DisplacementVector2D.h:483
DisplacementVector2D.h:484
DisplacementVector2D.h:485
DisplacementVector2D.h:486
DisplacementVector2D.h:487
DisplacementVector2D.h:488
DisplacementVector2D.h:489
DisplacementVector2D.h:490
DisplacementVector2D.h:491
DisplacementVector2D.h:492
DisplacementVector2D.h:493
DisplacementVector2D.h:494
DisplacementVector2D.h:495
DisplacementVector2D.h:496
DisplacementVector2D.h:497
DisplacementVector2D.h:498
DisplacementVector2D.h:499
DisplacementVector2D.h:500
DisplacementVector2D.h:501
DisplacementVector2D.h:502
DisplacementVector2D.h:503
DisplacementVector2D.h:504
DisplacementVector2D.h:505
DisplacementVector2D.h:506
DisplacementVector2D.h:507
DisplacementVector2D.h:508
DisplacementVector2D.h:509
DisplacementVector2D.h:510
DisplacementVector2D.h:511
DisplacementVector2D.h:512
DisplacementVector2D.h:513
DisplacementVector2D.h:514
DisplacementVector2D.h:515
DisplacementVector2D.h:516
DisplacementVector2D.h:517
DisplacementVector2D.h:518
DisplacementVector2D.h:519
DisplacementVector2D.h:520
DisplacementVector2D.h:521
DisplacementVector2D.h:522
DisplacementVector2D.h:523
DisplacementVector2D.h:524
DisplacementVector2D.h:525
DisplacementVector2D.h:526
DisplacementVector2D.h:527
DisplacementVector2D.h:528
DisplacementVector2D.h:529
DisplacementVector2D.h:530
DisplacementVector2D.h:531
DisplacementVector2D.h:532
DisplacementVector2D.h:533
DisplacementVector2D.h:534
DisplacementVector2D.h:535
DisplacementVector2D.h:536
DisplacementVector2D.h:537
DisplacementVector2D.h:538
DisplacementVector2D.h:539
DisplacementVector2D.h:540
DisplacementVector2D.h:541
DisplacementVector2D.h:542
DisplacementVector2D.h:543
DisplacementVector2D.h:544
DisplacementVector2D.h:545
DisplacementVector2D.h:546
DisplacementVector2D.h:547
DisplacementVector2D.h:548
DisplacementVector2D.h:549
DisplacementVector2D.h:550
DisplacementVector2D.h:551
DisplacementVector2D.h:552