Defines the macro ASSERT.
Declares class RotMatrix.
IRotation * createProduct(const IRotation &left, const IRotation &right)
Returns concatenated rotation (first right, then left).
Defines IRotation classes.
Base class for tree-like structures containing parameterized objects.
void checkNodeArgs() const
Raises exception if a parameter value is invalid.
Abstract base class for rotations.
IRotation(const std::vector< double > &PValues)
virtual RotMatrix rotMatrix() const =0
Returns transformation.
R3 transformed(const R3 &v) const
virtual bool isIdentity() const
Returns true if rotation matrix is identity matrix (no rotations)
static IRotation * createRotation(const RotMatrix &transform)
The identity rotation, which leaves everything in place.
RotMatrix rotMatrix() const override
Returns transformation.
Rotation matrix in three dimensions. Represents group SO(3). Internal parameterization based on quate...
static RotMatrix EulerZXZ(double alpha, double beta, double gamma)
Creates rotation defined by Euler angles.
static RotMatrix AroundZ(double phi)
Creates rotation around z-axis.
static RotMatrix AroundY(double phi)
Creates rotation around y-axis.
static RotMatrix AroundX(double phi)
Creates rotation around x-axis.
bool isIdentity() const
Determine if the transformation is trivial (identity)
std::optional< double > angleAroundCoordAxis(int iAxis) const
std::array< double, 3 > zxzEulerAngles() const
Calculates the Euler angles corresponding to the rotation.
T transformed(const T &v) const
Return transformed vector v.
A sequence of rotations about the z-x'-z'' axes.
RotationEuler(std::vector< double > P)
IRotation * createInverse() const override
Returns a new IRotation object that is the current object's inverse.
RotMatrix rotMatrix() const override
Returns transformation.
A rotation about the x axis.
RotationX(std::vector< double > P)
Constructor of rotation around x-axis.
RotMatrix rotMatrix() const override
Returns transformation.
A rotation about the y axis.
RotationY(std::vector< double > P)
Constructor of rotation around y-axis.
RotMatrix rotMatrix() const override
Returns transformation.
A rotation about the z axis.
RotationZ(std::vector< double > P)
Constructor of rotation around z-axis.
RotMatrix rotMatrix() const override
Returns transformation.
double beta(double z, double w)
ABObj< sym, MatrixInverse< sym, ABObj< sym, LASymMatrix, double >, double >, double > Inverse(const ABObj< sym, LASymMatrix, double > &obj)
LAPACK Algebra functions specialize the Invert function for LASymMatrix.