7#include <Eigen/Geometry>
9#include <isce3/except/Error.h>
11#include "DenseMatrix.h"
12#include "EulerAngles.h"
15namespace isce3 {
namespace core {
28 using super_t = Eigen::Quaterniond;
29 using AngleAxis_t = Eigen::AngleAxisd;
46 Quaternion(
double w,
double x,
double y,
double z) : super_t(w, x, y, z)
57 :
Quaternion(qvec(0), qvec(1), qvec(2), qvec(3))
77 Quaternion(
const Eigen::Matrix3d& rotmat) : super_t(rotmat)
79 if (!rotmat.isUnitary(1e-6))
80 throw isce3::except::InvalidArgument(
81 ISCE_SRCINFO(),
"Requires unitary/rotation Matrix!");
89 : super_t(AngleAxis_t(aa.angle(), aa.axis().normalized()))
108 : super_t((AngleAxis_t(yaw, Vec3::UnitZ()) *
109 AngleAxis_t(pitch, Vec3::UnitY()) *
110 AngleAxis_t(roll, Vec3::UnitX()))
124 Quaternion(
const Eigen::Quaternion<double>& other) : super_t(other)
134 Eigen::Vector3d
rotate(
const Eigen::Vector3d& vec)
const
140 return this->_transformVector(vec);
163 double angh {std::acos(this->w())};
164 return AngleAxis_t(2.0 * angh, (1.0 / std::sin(angh)) * (this->vec()));
Representation of 3-2-1 Euler angle sequence of rotations.
Definition EulerAngles.h:13
Quaternion(const Eigen::Vector4d &qvec)
Constructor from Eigen 4-element unit quaternion vector.
Definition Quaternion.h:56
Quaternion(const Eigen::AngleAxisd &aa)
Constructor from an Eigen AngleAxis object.
Definition Quaternion.h:88
Quaternion(double yaw, double pitch, double roll)
Constructor from Euler Angles yaw, pitch, roll.
Definition Quaternion.h:107
Eigen::Vector3d rotate(const Eigen::Vector3d &vec) const
Rotate a 3-D vector by self quaternion object.
Definition Quaternion.h:134
Quaternion(const Eigen::Vector3d &vec)
Constructor from Eigen 3D unit vector.
Definition Quaternion.h:65
Vec3 toYPR() const
Convert quaternion to an Eigen vector of Euler angles (yaw, pitch, roll) , all in radians.
Definition Quaternion.cpp:9
Quaternion(double w, double x, double y, double z)
Constructor from qw, qx, qy, qz.
Definition Quaternion.h:46
Eigen::AngleAxisd toAngleAxis() const
Convert from Eigen Quaternion to Eigen AngleAxis object.
Definition Quaternion.h:161
Quaternion(double angle, const Eigen::Vector3d &axis)
Constructor from an angle and 3-D vector axis.
Definition Quaternion.h:97
Quaternion()
Default constructor (qw,qx,qy,qz) = (1,0,0,0) , no rotation, equivalent to 3x3 identity rotation matr...
Definition Quaternion.h:37
EulerAngles toEulerAngles() const
Build isce3 EulerAngles Object from Quaternion object.
Definition Quaternion.cpp:21
Quaternion(const Eigen::Quaternion< double > &other)
Copy constructor from other Quaternion obj.
Definition Quaternion.h:124
Quaternion(const Eigen::Matrix3d &rotmat)
Constructor from an Eigen 3D Rotation matrix Throw exception for non-uniary matrix within 1e-6 precis...
Definition Quaternion.h:77
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5