High Performance Plasticity  0.5.0
rotation.h File Reference

Header file for rotation classes and functions. More...

#include "mpi.h"
#include <hpp/config.h>
#include <hpp/tensor.h>
#include <hpp/mpiUtils.h>
#include <hpp/external/ISOI/grid_generation.h>
Include dependency graph for rotation.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  hpp::EulerAngles< T >
 
class  hpp::SO3Discrete< T >
 

Namespaces

 hpp
 

Enumerations

enum  hpp::SymmetryType { hpp::SYMMETRY_TYPE_NONE, hpp::SYMMETRY_TYPE_C4 }
 

Functions

template<typename T >
MPI_Datatype hpp::getEulerAnglesTypeMPI ()
 
template<typename T >
EulerAngles< T > hpp::polarToEuler (T theta, T phi)
 Convert polar angles to Euler angles. More...
 
template<typename T >
std::ostream & hpp::operator<< (std::ostream &out, const EulerAngles< T > &angles)
 
template<typename T >
bool hpp::operator== (const EulerAngles< T > &l, const EulerAngles< T > &r)
 
template<typename T >
bool hpp::operator!= (const EulerAngles< T > &l, const EulerAngles< T > &r)
 
template<typename T >
Tensor2< T > hpp::EulerZXZRotationMatrix (T alpha, T beta, T gamma)
 
template<typename T >
Tensor2< T > hpp::EulerZXZRotationMatrix (EulerAngles< T > angle)
 
template<typename T >
EulerAngles< T > hpp::getEulerZXZAngles (Tensor2< T > R)
 Get Euler angles from rotation matrix. More...
 
std::mt19937 hpp::makeMt19937 (bool defaultSeed)
 
template<typename T >
void hpp::rotationTensorFrom3UniformRandomsArvo1992 (Tensor2< T > &A, T x1, T x2, T x3)
 
template<typename T >
void hpp::randomRotationTensorArvo1992 (std::mt19937 &gen, Tensor2< T > &A)
 
template<typename T >
void hpp::randomRotationTensorArvo1992 (Tensor2< T > &A, bool defaultSeed=false)
 
template<typename T >
void hpp::rotationTensorFrom3UniformRandoms (Tensor2< T > &A, T x1, T x2, T x3)
 
template<typename T >
Tensor2< T > hpp::randomRotationTensorStewart1980 (unsigned int dim, bool defaultSeed=false)
 Generate a random rotation tensor. More...
 
template<typename T >
void hpp::randomRotationTensorInPlace (unsigned int dim, Tensor2< T > &A, bool defaultSeed=false)
 Generate a random rotation tensor. More...
 
template<typename T >
Tensor2< T > hpp::randomRotationTensor (unsigned int dim, bool defaultSeed=false)
 
template<typename T >
EulerAngles< T > hpp::quaternionToEulerAngles (isoi::Quaternion &q)
 

Detailed Description

Header file for rotation classes and functions.

A discrete and uniform sampling of SO(3) Using the methods and implementations from the following work: Generating Uniform Incremental Grids on SO(3) Using the Hopf Fibration. Anna Yershova, Swati Jain, Steven M. LaValle, and Julie C. Mitchell, International Journal of Robotics Research, IJRR 2009.

Euler Angles.

Author
Michael Malahe

Defined according to the following conventions:

  • Right-handed
  • Counter-clockwise
  • Active
  • Extrinsic
  • Z-X-Z sequence
  • \(\alpha\): The second applied Z rotation angle, \([0,2\pi) \)
  • \(\beta\): The X rotation angle, \([0,\pi) \)
  • \(\gamma\): The first applied Z rotation angle, \([0,2\pi) \)
  • The resulting rotation matrix is the product \( R = Z(\alpha) X(\beta) Z(\gamma) \), Where Z is the elemental rotation matrix about z, and X is the elemental rotation matrix about X.