CMS 3D CMS Logo

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

#include <ExtVec.h>

Public Types

typedef Vec2< TVec
 

Public Member Functions

constexpr Rot2 ()
 
constexpr Rot2 (Vec2< T > ix, Vec2< T > iy)
 
constexpr Rot2 (T xx, T xy, T yx, T yy)
 
constexpr Vec2< Trotate (Vec2< T > v) const
 
Rot2 rotate (Rot2 const &r) const
 
constexpr Vec2< TrotateBack (Vec2< T > v) const
 
constexpr Rot2 rotateBack (Rot2 const &r) const
 
constexpr Rot2 transpose () const
 
constexpr Vec2< Tx () const
 
constexpr Vec2< Ty () const
 

Public Attributes

Vec2< Taxis [2]
 

Detailed Description

template<typename T>
struct Rot2< T >

Definition at line 265 of file ExtVec.h.

Member Typedef Documentation

template<typename T>
typedef Vec2<T> Rot2< T >::Vec

Definition at line 266 of file ExtVec.h.

Constructor & Destructor Documentation

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

Definition at line 269 of file ExtVec.h.

269  :
270  axis{{(Vec){T(1),0}},
271  {(Vec){0,T(1)}}
272  }{}
Vec2< T > Vec
Definition: ExtVec.h:266
Vec2< T > axis[2]
Definition: ExtVec.h:267
long double T
template<typename T>
constexpr Rot2< T >::Rot2 ( Vec2< T ix,
Vec2< T iy 
)
inline

Definition at line 274 of file ExtVec.h.

274  :
275  axis{ix, iy}{}
Vec2< T > axis[2]
Definition: ExtVec.h:267
template<typename T>
constexpr Rot2< T >::Rot2 ( T  xx,
T  xy,
T  yx,
T  yy 
)
inline

Definition at line 277 of file ExtVec.h.

277  :
278  Rot2( (Vec){xx,xy},
279  (Vec){yx,yy}
280  ){}
Vec2< T > Vec
Definition: ExtVec.h:266
auto xy(V v) -> Vec2< typename std::remove_reference< decltype(v[0])>::type >
Definition: ExtVec.h:79
constexpr Rot2()
Definition: ExtVec.h:269

Member Function Documentation

template<typename T>
constexpr Vec2<T> Rot2< T >::rotate ( Vec2< T v) const
inline

Definition at line 292 of file ExtVec.h.

292  {
293  return transpose().rotateBack(v);
294  }
constexpr Rot2 transpose() const
Definition: ExtVec.h:282
constexpr Vec2< T > rotateBack(Vec2< T > v) const
Definition: ExtVec.h:298
template<typename T>
Rot2 Rot2< T >::rotate ( Rot2< T > const &  r) const
inline

Definition at line 302 of file ExtVec.h.

302  {
303  Rot2 tr = transpose();
304  return Rot2(tr.rotateBack(r.axis[0]),tr.rotateBack(r.axis[1]));
305  }
constexpr Rot2()
Definition: ExtVec.h:269
constexpr Rot2 transpose() const
Definition: ExtVec.h:282
constexpr Vec2< T > rotateBack(Vec2< T > v) const
Definition: ExtVec.h:298
Definition: ExtVec.h:265
template<typename T>
constexpr Vec2<T> Rot2< T >::rotateBack ( Vec2< T v) const
inline

Definition at line 298 of file ExtVec.h.

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

298  {
299  return v[0]*axis[0] + v[1]*axis[1];
300  }
Vec2< T > axis[2]
Definition: ExtVec.h:267
template<typename T>
constexpr Rot2 Rot2< T >::rotateBack ( Rot2< T > const &  r) const
inline

Definition at line 307 of file ExtVec.h.

307  {
308  return Rot2(rotateBack(r.axis[0]),rotateBack(r.axis[1]));
309  }
constexpr Rot2()
Definition: ExtVec.h:269
constexpr Vec2< T > rotateBack(Vec2< T > v) const
Definition: ExtVec.h:298
template<typename T>
constexpr Rot2 Rot2< T >::transpose ( ) const
inline

Definition at line 282 of file ExtVec.h.

282  {
283  return Rot2( axis[0][0], axis[1][0],
284  axis[0][1], axis[1][1]
285  );
286  }
constexpr Rot2()
Definition: ExtVec.h:269
Vec2< T > axis[2]
Definition: ExtVec.h:267
template<typename T>
constexpr Vec2<T> Rot2< T >::x ( ) const
inline
template<typename T>
constexpr Vec2<T> Rot2< T >::y ( ) const
inline

Member Data Documentation

template<typename T>
Vec2<T> Rot2< T >::axis[2]