basic function of angular dynamics of particle More...
Classes | |
struct | EulerAngleToee |
Enumerations | |
enum class | EulerAngleType { kXYZ = 0 , kXZY , kXYX , kXZX , kYXZ , kYZX , kYXY , kYZY , kZXY , kZYX , kZXZ , kZYZ } |
Functions | |
template<typename T_real = double> | |
void | eeToRleft (const T_real e[], T_real R[]) |
transfer Euler quaterions to left rotate matrix More... | |
template<typename T_real = double> | |
void | eeToRright (const T_real e[], T_real R[]) |
transfer Euler quaterions to right rotate matrix More... | |
template<typename T_real = double> | |
void | eeToRboth (const T_real e[], T_real Rleft[], T_real Rright[]) |
transfer Euler quaterions to both left and right rotate matrix More... | |
template<typename T_real = double> | |
void | eeNormalized (T_real e[]) |
to keep norm of Euler quaterions equal to one More... | |
template<typename T_real = double> | |
void | eeFromRotateAxisAndAngle (const T_real dir[], const T_real theta, T_real e[]) |
get Euler quaterins from a rotate axis and a rotate angle More... | |
template<typename T_real = double> | |
void | Rtranspose3DimSelf (T_real R[]) |
transpose of Roation matrix (3x3) itself More... | |
template<typename T_real = double> | |
void | Rtranspose3Dim (const T_real Rin[], T_real Rout[]) |
transpose of rotate matrix (3x3) More... | |
template<typename T_real = double> | |
void | RleftToee (const T_real Rleft[], T_real e[]) |
transfer left rotate to Euler Quaterions More... | |
template<typename T_real = double> | |
void | RrightToee (const T_real Rleft[], T_real e[]) |
transfer right rotate to Euler Quaterions More... | |
template<typename T_real = double> | |
void | Mat3xMat3 (const T_real matleft[], const T_real matright[], T_real matout[]) |
dot between two 3x3 matrices More... | |
template<typename T_real = double> | |
void | Mat2xMat2 (const T_real matleft[], const T_real matright[], T_real matout[]) |
dot between two 2x2 matrices More... | |
template<typename T_real = double> | |
void | Mat3xVec3 (const T_real mat[], const T_real vec[], T_real vecout[]) |
dot between 3x3 matrix and 3x1 vector More... | |
template<typename T_real = double> | |
void | Mat2xVec2 (const T_real mat[], const T_real vec[], T_real vecout[]) |
dot between 2x2 matrix and 2x1 vector More... | |
template<typename T_real = double> | |
void | DotVec3 (const T_real vec0[], const T_real vec1[], T_real &out) |
dot between two vectors More... | |
template<typename T_real = double> | |
void | DotVec2 (const T_real vec0[], const T_real vec1[], T_real &out) |
dot between two vectors More... | |
template<typename T_real = double> | |
void | CrossVec3 (const T_real vec0[], const T_real vec1[], T_real out[]) |
cross between tow vector More... | |
template<typename T_real = double> | |
void | MatFromPFToIF3Dim (const T_real matin[], const T_real Rleft[], const T_real Rright[], T_real matout[]) |
transfer 3x3 matrix from particle frame to inertial frame More... | |
template<typename T_real = double> | |
void | MatFromPFToIF3DimByee (const T_real matin[], const T_real ee[], T_real matout[]) |
transfer 3x3 matrix from particle frame to inertial frame, by ee More... | |
template<typename T_real = double> | |
void | VecFromPFToIF3Dim (const T_real vecin[], const T_real Rleft[], const T_real Rright[], T_real vecout[]) |
transfer 3x1 vec from particle frame to inertial frame More... | |
template<typename T_real = double> | |
void | VecFromPFToIF3DimByee (const T_real vecin[], const T_real ee[], T_real vecout[]) |
transfer 3x1 vec from particle frame to inertial frame by ee More... | |
template<typename T_real = double> | |
void | MatFromIFToPF3Dim (const T_real matin[], const T_real Rleft[], const T_real Rright[], T_real matout[]) |
transfer 3x3 matrix from inertial frame to particle frame More... | |
template<typename T_real = double> | |
void | MatFromIFToPF3DimByee (const T_real matin[], const T_real ee[], T_real matout[]) |
transfer 3x3 matrix from inertial frame to particle frame by ee More... | |
template<typename T_real = double> | |
void | VecFromIFToPF3Dim (const T_real vecin[], const T_real Rleft[], const T_real Rright[], T_real vecout[]) |
transfer 3x1 vec from particle frame to inertial frame More... | |
template<typename T_real = double> | |
void | VecFromIFToPF3DimByee (const T_real vecin[], const T_real ee[], T_real vecout[]) |
template<typename T_real = double> | |
void | DirToee (const T_real dir[], const T_real base[], T_real e[]) |
get euler quaterions from a director More... | |
template<typename T_real = double> | |
void | eeToDir (const T_real ee[], const T_real base[], T_real dir[]) |
get director from euler quaterions More... | |
template<typename T_real = double> | |
void | RandomR (T_real R[]) |
generate a random rotate matrix More... | |
template<typename T_real = double> | |
void | RandomDir (T_real vec[]) |
generate a random direction More... | |
template<typename T_real = double> | |
void | MatFromIFToPF2Dim (const T_real matin[], const T_real Rleft[], const T_real Rright[], T_real matout[]) |
transfer 2x2 matrix from inertial frame to particle frame More... | |
template<typename T_real = double> | |
void | MatFromIFToPF2DimByee (const T_real matin[], const T_real ee[], T_real matout[]) |
transfer 2x2 matrix from inertial frame to particle frame by ee More... | |
template<typename T_real = double> | |
void | AngvelTodee (const T_real angvel[], const T_real ee[], T_real dee[]) |
obtain the difference in ee from angular velocity More... | |
template<typename T_real > | |
T_real | DotVec3 (const Vec3< T_real > vec0, const Vec3< T_real > vec1) |
template<typename T_real > | |
T_real | DotVec2 (const Vec2< T_real > &vec0, const Vec2< T_real > &vec1) |
template<typename T_real > | |
void | MatFromIFToPF2DimByee (const T_real matin[], const T_real ee, T_real matout[]) |
template<typename T_real = double> | |
void | eeToRleft (Vec4< T_real > &e, Mat3< T_real > &R) |
template<typename T_real = double> | |
Mat3< T_real > | eeToRleft (Vec4< T_real > &e) |
template<typename T_real = double> | |
void | eeToRright (Vec4< T_real > &e, Mat3< T_real > &R) |
template<typename T_real = double> | |
Mat3< T_real > | eeToRright (Vec4< T_real > &e) |
template<typename T_real = double> | |
void | Mat3xMat3 (Mat3< T_real > &matleft, Mat3< T_real > &matright, Mat3< T_real > &matout) |
template<typename T_real = double> | |
Mat3< T_real > | Mat3xMat3 (Mat3< T_real > &matleft, Mat3< T_real > &matright) |
template<typename T_real = double> | |
void | Mat2xMat2 (Mat2< T_real > &matleft, Mat2< T_real > &matright, Mat2< T_real > &matout) |
template<typename T_real = double> | |
Mat2< T_real > | Mat2xMat2 (Mat2< T_real > &matleft, Mat2< T_real > &matright) |
template<typename T_real = double> | |
void | Mat3xVec3 (Mat3< T_real > &matleft, Vec3< T_real > &matright, Vec3< T_real > &matout) |
template<typename T_real = double> | |
Vec3< T_real > | Mat3xVec3 (Mat3< T_real > &matleft, Vec3< T_real > &matright) |
template<typename T_real = double> | |
void | Mat2xVec2 (Mat2< T_real > &matleft, Vec2< T_real > &matright, Vec2< T_real > &matout) |
template<typename T_real = double> | |
Vec2< T_real > | Mat2xVec2 (Mat2< T_real > &matleft, Vec2< T_real > &matright) |
template<typename T_real > | |
void | CrossVec3 (Vec3< T_real > &vec0, Vec3< T_real > &vec1, Vec3< T_real > &out) |
template<typename T_real > | |
Vec3< T_real > | CrossVec3 (Vec3< T_real > &vec0, Vec3< T_real > &vec1) |
template<typename T_real > | |
void | VecFromPFToIF3Dim (Vec3< T_real > &vecin, Mat3< T_real > &Rleft, Mat3< T_real > &Rright, Vec3< T_real > &vecout) |
template<typename T_real > | |
Vec3< T_real > | VecFromPFToIF3Dim (Vec3< T_real > &vecin, Mat3< T_real > &Rleft, Mat3< T_real > &Rright) |
template<typename T_real > | |
void | VecFromPFToIF3DimByee (Vec3< T_real > &vecin, Vec4< T_real > &ee, Vec3< T_real > &vecout) |
template<typename T_real > | |
Vec3< T_real > | VecFromPFToIF3DimByee (Vec3< T_real > &vecin, Vec4< T_real > &ee) |
template<typename T_real > | |
void | VecFromIFToPF3DimByee (Vec3< T_real > &vecin, Vec4< T_real > &ee, Vec3< T_real > &vecout) |
template<typename T_real > | |
Vec3< T_real > | VecFromIFToPF3DimByee (Vec3< T_real > &vecin, Vec4< T_real > &ee) |
template<typename T_real = double> | |
void | EulerAngleToee_XYZ (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_XZY (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_XYX (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_XZX (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_YXZ (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_YZX (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_YXY (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_YZY (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_ZXY (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_ZYX (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_ZXZ (const T_real theta[], T_real e[]) |
template<typename T_real = double> | |
void | EulerAngleToee_ZYZ (const T_real theta[], T_real e[]) |
basic function of angular dynamics of particle
transformation between different Euler angles and Euler quaterions
|
strong |
void dmdyn::angular::AngvelTodee | ( | const T_real | angvel[], |
const T_real | ee[], | ||
T_real | dee[] | ||
) |
obtain the difference in ee from angular velocity
T_real |
angvel | 3x1 vector, angular velocity |
ee | 4x1 vector, current ee |
dee | 4x1 vector, difference in ee |
void dmdyn::angular::CrossVec3 | ( | const T_real | vec0[], |
const T_real | vec1[], | ||
T_real | out[] | ||
) |
cross between tow vector
T_real |
[in] | vec0 | 3x1 vector |
[in] | vec1 | 3x1 vector |
[out] | out | 3x1 vector |
void dmdyn::angular::DirToee | ( | const T_real | dir[], |
const T_real | base[], | ||
T_real | e[] | ||
) |
get euler quaterions from a director
T_real |
[in] | dir | director,3x1 |
[in] | base | base vector,3x1
|
[out] | e | Euler quaterions, 4x1 |
void dmdyn::angular::DotVec2 | ( | const T_real | vec0[], |
const T_real | vec1[], | ||
T_real & | out | ||
) |
dot between two vectors
T_real |
[in] | vec0 | 2x1 vector |
[in] | vec1 | 2x1 vector |
[out] | out | 1 scalar |
T_real dmdyn::angular::DotVec2 | ( | const Vec2< T_real > & | vec0, |
const Vec2< T_real > & | vec1 | ||
) |
void dmdyn::angular::DotVec3 | ( | const T_real | vec0[], |
const T_real | vec1[], | ||
T_real & | out | ||
) |
dot between two vectors
T_real |
[in] | vec0 | 3x1 vector |
[in] | vec1 | 3x1 vector |
[out] | out | 1 scalar |
T_real dmdyn::angular::DotVec3 | ( | const Vec3< T_real > | vec0, |
const Vec3< T_real > | vec1 | ||
) |
void dmdyn::angular::eeFromRotateAxisAndAngle | ( | const T_real | dir[], |
const T_real | theta, | ||
T_real | e[] | ||
) |
get Euler quaterins from a rotate axis and a rotate angle
T_real |
[in] | dir | direction of rotate axis |
[in] | theta | rotate angle about roatation axis |
[out] | e | Euler quaterions, 4-length array |
void dmdyn::angular::eeNormalized | ( | T_real | e[] | ) |
to keep norm of Euler quaterions equal to one
T_real |
e | Euler quaterions, 4-length array |
void dmdyn::angular::eeToDir | ( | const T_real | ee[], |
const T_real | base[], | ||
T_real | dir[] | ||
) |
get director from euler quaterions
T_real |
[in] | ee | Euler quaterions, 4x1 |
[in] | base | base vector,3x1
|
[out] | dir | director, 3x1 |
void dmdyn::angular::eeToRboth | ( | const T_real | e[], |
T_real | Rleft[], | ||
T_real | Rright[] | ||
) |
transfer Euler quaterions to both left and right rotate matrix
T_real | default: double |
[in] | e | Euler quaterions, 4-length array |
[out] | Rleft | left rotate matrix, 3x3 matrix |
[out] | Rright | right rotate matrix, 3x3 matrix |
void dmdyn::angular::eeToRleft | ( | const T_real | e[], |
T_real | R[] | ||
) |
transfer Euler quaterions to left rotate matrix
calculate left rotation matrix from euler quaternion
T_real | default: double |
[in] | e | Euler quaterions, 4-length array |
[out] | R | left rotate matrix, 3x3 matrix |
T_real |
e | euler quaternion |
R | left rotation matrix, R11 = R[0], R12 = R[1], ... R33 = R[8] |
void dmdyn::angular::eeToRright | ( | const T_real | e[], |
T_real | R[] | ||
) |
transfer Euler quaterions to right rotate matrix
T_real | default: double |
[in] | e | Euler quaterions, 4-length array |
[out] | R | right rotate matrix, 3x3 matrix |
void dmdyn::angular::EulerAngleToee_XYX | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_XYZ | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_XZX | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_XZY | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_YXY | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_YXZ | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_YZX | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_YZY | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_ZXY | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_ZXZ | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_ZYX | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::EulerAngleToee_ZYZ | ( | const T_real | theta[], |
T_real | e[] | ||
) |
void dmdyn::angular::Mat2xMat2 | ( | const T_real | matleft[], |
const T_real | matright[], | ||
T_real | matout[] | ||
) |
dot between two 2x2 matrices
T_real |
[in] | matleft | |
[in] | matright | |
[out] | matout |
void dmdyn::angular::Mat2xVec2 | ( | const T_real | mat[], |
const T_real | vec[], | ||
T_real | vecout[] | ||
) |
dot between 2x2 matrix and 2x1 vector
T_real |
[in] | mat | 2x2 matrix |
[in] | vec | 2x1 vector |
[out] | vecout | 2x1 vector |
void dmdyn::angular::Mat3xMat3 | ( | const T_real | matleft[], |
const T_real | matright[], | ||
T_real | matout[] | ||
) |
dot between two 3x3 matrices
T_real |
[in] | matleft | |
[in] | matright | |
[out] | matout |
void dmdyn::angular::Mat3xVec3 | ( | const T_real | mat[], |
const T_real | vec[], | ||
T_real | vecout[] | ||
) |
dot between 3x3 matrix and 3x1 vector
T_real |
[in] | mat | 3x3 matrix |
[in] | vec | 3x1 vector |
[out] | vecout | 3x1 vector |
void dmdyn::angular::MatFromIFToPF2Dim | ( | const T_real | matin[], |
const T_real | Rleft[], | ||
const T_real | Rright[], | ||
T_real | matout[] | ||
) |
transfer 2x2 matrix from inertial frame to particle frame
T_real |
[in] | matin | 2x2, matrix in inertial frame |
[in] | Rleft | 2x2, left rotate matrix |
[in] | Rright | 2x2, right rotate matrix |
[out] | matout | 2x2, matrix in particle frame |
void dmdyn::angular::MatFromIFToPF2DimByee | ( | const T_real | matin[], |
const T_real | ee, | ||
T_real | matout[] | ||
) |
void dmdyn::angular::MatFromIFToPF2DimByee | ( | const T_real | matin[], |
const T_real | ee[], | ||
T_real | matout[] | ||
) |
transfer 2x2 matrix from inertial frame to particle frame by ee
T_real |
[in] | matin | 2x2, matrix in inertial frame |
[in] | ee | 4, Euler quaterions |
[out] | matout | 2x2, matrix in particle frame |
void dmdyn::angular::MatFromIFToPF3Dim | ( | const T_real | matin[], |
const T_real | Rleft[], | ||
const T_real | Rright[], | ||
T_real | matout[] | ||
) |
transfer 3x3 matrix from inertial frame to particle frame
T_real |
[in] | matin | 3x3, matrix in inertial frame |
[in] | Rleft | 3x3, left rotate matrix |
[in] | Rright | 3x3, right rotate matrix |
[out] | matout | 3x3, matrix in particle frame |
void dmdyn::angular::MatFromIFToPF3DimByee | ( | const T_real | matin[], |
const T_real | ee[], | ||
T_real | matout[] | ||
) |
transfer 3x3 matrix from inertial frame to particle frame by ee
T_real |
[in] | matin | 3x3, matrix in inertial frame |
[in] | ee | 4, Euler quaterions |
[out] | matout | 3x3, matrix in particle frame |
void dmdyn::angular::MatFromPFToIF3Dim | ( | const T_real | matin[], |
const T_real | Rleft[], | ||
const T_real | Rright[], | ||
T_real | matout[] | ||
) |
transfer 3x3 matrix from particle frame to inertial frame
T_real |
[in] | matin | 3x3, matrix in particle frame |
[in] | Rleft | 3x3, left rotate matrix |
[in] | Rright | 3x3, right rotate matrix |
[out] | matout | 3x3, matrix in inertial frame |
void dmdyn::angular::MatFromPFToIF3DimByee | ( | const T_real | matin[], |
const T_real | ee[], | ||
T_real | matout[] | ||
) |
transfer 3x3 matrix from particle frame to inertial frame, by ee
T_real |
[in] | matin | 3x3, matrix in particle frame |
[in] | ee | 4, Euler quaterions |
[out] | matout | 3x3, matrix in inertial frame |
void dmdyn::angular::RandomDir | ( | T_real | vec[] | ) |
generate a random direction
T_real |
vec | 3x1 vector |
References mathconst::PI, and RandomNumber< T_real >::randr().
void dmdyn::angular::RandomR | ( | T_real | R[] | ) |
generate a random rotate matrix
T_real |
R | rotate matrix,3x3 |
References mathconst::PI, and RandomNumber< T_real >::randr().
void dmdyn::angular::RleftToee | ( | const T_real | Rleft[], |
T_real | e[] | ||
) |
transfer left rotate to Euler Quaterions
T_real |
[in] | Rleft | left rotate matrix, 3x3 array |
[out] | e | Euler quaterions, 4-length array |
References quadpack::max().
void dmdyn::angular::RrightToee | ( | const T_real | Rleft[], |
T_real | e[] | ||
) |
transfer right rotate to Euler Quaterions
T_real |
[in] | Rright | right rotate matrix, 3x3 array |
[out] | e | Euler quaterions, 4-length array |
References quadpack::max().
void dmdyn::angular::Rtranspose3Dim | ( | const T_real | Rin[], |
T_real | Rout[] | ||
) |
transpose of rotate matrix (3x3)
T_real |
[in] | Rin | in, rotate materix,3x3 array |
[out] | Rout | out, rotate materix,3x3 array |
void dmdyn::angular::Rtranspose3DimSelf | ( | T_real | R[] | ) |
transpose of Roation matrix (3x3) itself
T_real |
R | rotate materix,3x3 array |
void dmdyn::angular::VecFromIFToPF3Dim | ( | const T_real | vecin[], |
const T_real | Rleft[], | ||
const T_real | Rright[], | ||
T_real | vecout[] | ||
) |
transfer 3x1 vec from particle frame to inertial frame
T_real |
[in] | vecin | 3x1, matrix in inertial frame |
[in] | Rleft | 3x3, left rotate matrix |
[in] | Rright | 3x3, right rotate matrix |
[out] | vecout | 3x1, matrix in particle frame |
void dmdyn::angular::VecFromIFToPF3DimByee | ( | const T_real | vecin[], |
const T_real | ee[], | ||
T_real | vecout[] | ||
) |
T_real |
[in] | vecin | 3x3, matrix in inertial frame |
[in] | ee | 4, Euler quaterions |
[out] | vecout | 3x3, matrix in particle frame |
References eeToRright().
void dmdyn::angular::VecFromPFToIF3Dim | ( | const T_real | vecin[], |
const T_real | Rleft[], | ||
const T_real | Rright[], | ||
T_real | vecout[] | ||
) |
transfer 3x1 vec from particle frame to inertial frame
T_real |
[in] | vecin | 3x1, matrix in particle frame |
[in] | Rleft | 3x3, left rotate matrix |
[in] | Rright | 3x3, right rotate matrix |
[out] | vecout | 3x1, matrix in inertial frame |
Vec3<T_real> dmdyn::angular::VecFromPFToIF3Dim | ( | Vec3< T_real > & | vecin, |
Mat3< T_real > & | Rleft, | ||
Mat3< T_real > & | Rright | ||
) |
void dmdyn::angular::VecFromPFToIF3Dim | ( | Vec3< T_real > & | vecin, |
Mat3< T_real > & | Rleft, | ||
Mat3< T_real > & | Rright, | ||
Vec3< T_real > & | vecout | ||
) |
void dmdyn::angular::VecFromPFToIF3DimByee | ( | const T_real | vecin[], |
const T_real | ee[], | ||
T_real | vecout[] | ||
) |
transfer 3x1 vec from particle frame to inertial frame by ee
T_real |
[in] | vecin | 3x1, matrix in particle frame |
[in] | ee | 4, Euler quaterions |
[out] | vecout | 3x1, matrix in inertial frame |
References eeToRleft().