15 #ifndef BORNAGAIN_BASE_VECTOR_ROTMATRIX_H
16 #define BORNAGAIN_BASE_VECTOR_ROTMATRIX_H
19 #include <heinz/Vectors3D.h>
75 RotMatrix(
double x_,
double y_,
double z_,
double s_);
Rotation matrix in three dimensions. Represents group SO(3). Internal parameterization based on quate...
T counterTransformed(const T &v) const
Return transformed vector v.
RotMatrix()
Constructs unit transformation.
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.
RotMatrix operator*(const RotMatrix &) const
Composes two transformations.
static RotMatrix AroundX(double phi)
Creates rotation around x-axis.
bool isIdentity() const
Determine if the transformation is trivial (identity)
~RotMatrix()=default
Destructor.
RotMatrix Inverse() const
Returns the inverse transformation.
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.
bool operator==(const RotMatrix &) const
Provides equality operator.
double beta(double z, double w)