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 238 of file ExtVec.h.

Member Typedef Documentation

◆ Vec

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

Definition at line 239 of file ExtVec.h.

Constructor & Destructor Documentation

◆ Rot2() [1/3]

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

Definition at line 242 of file ExtVec.h.

Referenced by Rot2< Scalar >::rotate(), Rot2< Scalar >::rotateBack(), and Rot2< Scalar >::transpose().

242 : axis{{(Vec){T(1), 0}}, {(Vec){0, T(1)}}} {}
Vec2< T > Vec
Definition: ExtVec.h:239
Vec2< T > axis[2]
Definition: ExtVec.h:240
long double T

◆ Rot2() [2/3]

template<typename T>
constexpr Rot2< T >::Rot2 ( Vec2< T ix,
Vec2< T iy 
)
inline

Definition at line 244 of file ExtVec.h.

244 : axis{ix, iy} {}
Vec2< T > axis[2]
Definition: ExtVec.h:240
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ix(uint32_t id)
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t iy(uint32_t id)

◆ Rot2() [3/3]

template<typename T>
constexpr Rot2< T >::Rot2 ( T  xx,
T  xy,
T  yx,
T  yy 
)
inline

Definition at line 246 of file ExtVec.h.

246 : Rot2((Vec){xx, xy}, (Vec){yx, yy}) {}
Vec2< T > Vec
Definition: ExtVec.h:239
auto xy(V v) -> Vec2< typename std::remove_reference< decltype(v[0])>::type >
Definition: ExtVec.h:78
constexpr Rot2()
Definition: ExtVec.h:242

Member Function Documentation

◆ rotate() [1/2]

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

Definition at line 254 of file ExtVec.h.

254 { return transpose().rotateBack(v); }
constexpr Rot2 transpose() const
Definition: ExtVec.h:248
constexpr Vec2< T > rotateBack(Vec2< T > v) const
Definition: ExtVec.h:257

◆ rotate() [2/2]

template<typename T>
Rot2 Rot2< T >::rotate ( Rot2< T > const &  r) const
inline

Definition at line 259 of file ExtVec.h.

259  {
260  Rot2 tr = transpose();
261  return Rot2(tr.rotateBack(r.axis[0]), tr.rotateBack(r.axis[1]));
262  }
constexpr Rot2()
Definition: ExtVec.h:242
constexpr Rot2 transpose() const
Definition: ExtVec.h:248
Definition: ExtVec.h:238
constexpr Vec2< T > rotateBack(Vec2< T > v) const
Definition: ExtVec.h:257

◆ rotateBack() [1/2]

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

Definition at line 257 of file ExtVec.h.

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

257 { return v[0] * axis[0] + v[1] * axis[1]; }
Vec2< T > axis[2]
Definition: ExtVec.h:240

◆ rotateBack() [2/2]

template<typename T>
constexpr Rot2 Rot2< T >::rotateBack ( Rot2< T > const &  r) const
inline

Definition at line 264 of file ExtVec.h.

Referenced by Rot2< Scalar >::rotateBack().

264 { return Rot2(rotateBack(r.axis[0]), rotateBack(r.axis[1])); }
constexpr Rot2()
Definition: ExtVec.h:242
constexpr Vec2< T > rotateBack(Vec2< T > v) const
Definition: ExtVec.h:257

◆ transpose()

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

Definition at line 248 of file ExtVec.h.

Referenced by Rot2< Scalar >::rotate().

248 { return Rot2(axis[0][0], axis[1][0], axis[0][1], axis[1][1]); }
constexpr Rot2()
Definition: ExtVec.h:242
Vec2< T > axis[2]
Definition: ExtVec.h:240

◆ x()

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

◆ y()

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

Member Data Documentation

◆ axis

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