CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Public Attributes
Rot3< T > Struct Template Reference

#include <ExtVec.h>

Public Types

typedef Vec4< TVec
 

Public Member Functions

constexpr Rot3 ()
 
constexpr Rot3 (Vec4< T > ix, Vec4< T > iy, Vec4< T > iz)
 
constexpr Rot3 (T xx, T xy, T xz, T yx, T yy, T yz, T zx, T zy, T zz)
 
constexpr Vec4< Trotate (Vec4< T > v) const
 
Rot3 rotate (Rot3 const &r) const
 
constexpr Vec4< TrotateBack (Vec4< T > v) const
 
constexpr Rot3 rotateBack (Rot3 const &r) const
 
constexpr Rot3 transpose () const
 
constexpr Vec4< Tx () const
 
constexpr Vec4< Ty () const
 
constexpr Vec4< Tz () const
 

Public Attributes

Vec axis [3]
 

Detailed Description

template<typename T>
struct Rot3< T >

Definition at line 189 of file ExtVec.h.

Member Typedef Documentation

template<typename T>
typedef Vec4<T> Rot3< T >::Vec

Definition at line 190 of file ExtVec.h.

Constructor & Destructor Documentation

template<typename T>
constexpr Rot3< T >::Rot3 ( )
inline

Definition at line 193 of file ExtVec.h.

193  :
194  axis{{(Vec){T(1),0,0,0}},
195  {(Vec){0,T(1),0,0}},
196  {(Vec){0,0,T(1),0}}
197  }{}
Vec4< T > Vec
Definition: ExtVec.h:190
long double T
Vec axis[3]
Definition: ExtVec.h:191
template<typename T>
constexpr Rot3< T >::Rot3 ( Vec4< T ix,
Vec4< T iy,
Vec4< T iz 
)
inline

Definition at line 199 of file ExtVec.h.

199  :
200  axis{ix,iy,iz}{}
Vec axis[3]
Definition: ExtVec.h:191
template<typename T>
constexpr Rot3< T >::Rot3 ( T  xx,
T  xy,
T  xz,
T  yx,
T  yy,
T  yz,
T  zx,
T  zy,
T  zz 
)
inline

Definition at line 202 of file ExtVec.h.

202  :
203  axis{ {(Vec){xx,xy,xz,0}},
204  {(Vec){yx,yy,yz,0}},
205  {(Vec){zx,zy,zz,0}}
206  }{}
Vec4< T > Vec
Definition: ExtVec.h:190
auto xy(V v) -> Vec2< typename std::remove_reference< decltype(v[0])>::type >
Definition: ExtVec.h:67
Vec axis[3]
Definition: ExtVec.h:191

Member Function Documentation

template<typename T>
constexpr Vec4<T> Rot3< T >::rotate ( Vec4< T v) const
inline

Definition at line 220 of file ExtVec.h.

220  {
221  return transpose().rotateBack(v);
222  }
constexpr Rot3 transpose() const
Definition: ExtVec.h:208
constexpr Vec4< T > rotateBack(Vec4< T > v) const
Definition: ExtVec.h:226
template<typename T>
Rot3 Rot3< T >::rotate ( Rot3< T > const &  r) const
inline

Definition at line 230 of file ExtVec.h.

230  {
231  Rot3 tr = transpose();
232  return Rot3(tr.rotateBack(r.axis[0]),tr.rotateBack(r.axis[1]),tr.rotateBack(r.axis[2]));
233  }
constexpr Rot3 transpose() const
Definition: ExtVec.h:208
constexpr Vec4< T > rotateBack(Vec4< T > v) const
Definition: ExtVec.h:226
Definition: ExtVec.h:189
constexpr Rot3()
Definition: ExtVec.h:193
template<typename T>
constexpr Vec4<T> Rot3< T >::rotateBack ( Vec4< T v) const
inline

Definition at line 226 of file ExtVec.h.

Referenced by operator*(), mathSSE::Rot3< align::Scalar >::rotate(), and Rot3< align::Scalar >::rotate().

226  {
227  return v[0]*axis[0] + v[1]*axis[1] + v[2]*axis[2];
228  }
Vec axis[3]
Definition: ExtVec.h:191
template<typename T>
constexpr Rot3 Rot3< T >::rotateBack ( Rot3< T > const &  r) const
inline

Definition at line 235 of file ExtVec.h.

235  {
236  return Rot3(rotateBack(r.axis[0]),rotateBack(r.axis[1]),rotateBack(r.axis[2]));
237  }
constexpr Vec4< T > rotateBack(Vec4< T > v) const
Definition: ExtVec.h:226
constexpr Rot3()
Definition: ExtVec.h:193
template<typename T>
constexpr Rot3 Rot3< T >::transpose ( ) const
inline

Definition at line 208 of file ExtVec.h.

208  {
209  return Rot3( axis[0][0], axis[1][0], axis[2][0],
210  axis[0][1], axis[1][1], axis[2][1],
211  axis[0][2], axis[1][2], axis[2][2]
212  );
213  }
Vec axis[3]
Definition: ExtVec.h:191
constexpr Rot3()
Definition: ExtVec.h:193
template<typename T>
constexpr Vec4<T> Rot3< T >::x ( ) const
inline
template<typename T>
constexpr Vec4<T> Rot3< T >::y ( ) const
inline
template<typename T>
constexpr Vec4<T> Rot3< T >::z ( ) const
inline

Definition at line 217 of file ExtVec.h.

Referenced by geometryXMLparser.Alignable::pos(), and ntupleDataFormat._HitObject::r3D().

217 { return axis[2];}
Vec axis[3]
Definition: ExtVec.h:191

Member Data Documentation

template<typename T>
Vec Rot3< T >::axis[3]