Class sym::Rot3#

template<typename ScalarType>
class Rot3#

Autogenerated C++ implementation of symforce.geo.rot3.Rot3.

Group of three-dimensional orthogonal matrices with determinant +1, representing rotations in 3D space. Backed by a quaternion with (x, y, z, w) storage.

Public Types

using Scalar = ScalarType#
using Self = Rot3<Scalar>#
using DataVec = Eigen::Matrix<Scalar, 4, 1>#
using TangentVec = Eigen::Matrix<Scalar, 3, 1>#
using SelfJacobian = Eigen::Matrix<Scalar, 3, 3>#
using Vector3 = Eigen::Matrix<Scalar, 3, 1>#

Public Functions

inline explicit Rot3(const DataVec &data)#
inline Rot3()#
inline const DataVec &Data() const#
inline Eigen::Quaternion<Scalar> Quaternion() const#
inline explicit Rot3(const Eigen::Quaternion<Scalar> &q)#
inline Eigen::AngleAxis<Scalar> AngleAxis() const#
inline explicit Rot3(const Eigen::AngleAxis<Scalar> &aa)#
inline Rot3 ToPositiveReal() const#
const Vector3 ComposeWithPoint(const Vector3 &right) const#
const Eigen::Matrix<Scalar, 3, 3> ToRotationMatrix() const#
const Vector3 ToYawPitchRoll() const#
inline void ToStorage(Scalar *const vec) const#
inline Self Inverse() const#
inline Self Compose(const Self &b) const#
inline Vector3 Compose(const Vector3 &point) const#
inline Self Between(const Self &b) const#
inline Self InverseWithJacobian(SelfJacobian *const res_D_a = nullptr) const#
inline Self ComposeWithJacobians(const Self &b, SelfJacobian *const res_D_a = nullptr, SelfJacobian *const res_D_b = nullptr) const#
inline Self BetweenWithJacobians(const Self &b, SelfJacobian *const res_D_a = nullptr, SelfJacobian *const res_D_b = nullptr) const#
template<typename Other>
inline auto operator*(const Other &b) const -> decltype(Compose(b))#
inline TangentVec ToTangent(const Scalar epsilon = kDefaultEpsilon<Scalar>) const#
inline Self Retract(const TangentVec &vec, const Scalar epsilon = kDefaultEpsilon<Scalar>) const#
inline TangentVec LocalCoordinates(const Self &b, const Scalar epsilon = kDefaultEpsilon<Scalar>) const#
inline Self Interpolate(const Self b, const Scalar alpha, const Scalar epsilon = kDefaultEpsilon<Scalar>) const#
inline bool IsApprox(const Self &b, const Scalar tol) const#
template<typename ToScalar>
inline Rot3<ToScalar> Cast() const#
inline bool operator==(const Rot3 &rhs) const#

Public Static Functions

static inline Rot3 FromQuaternion(const Eigen::Quaternion<Scalar> &q)#
static inline Rot3 FromAngleAxis(const Eigen::AngleAxis<Scalar> &aa)#
static inline Rot3 FromAngleAxis(const Scalar angle, const Vector3 &axis)#
static inline Rot3 FromRotationMatrix(const Eigen::Matrix<Scalar, 3, 3> &mat)#
template<typename Generator>
static inline Rot3 Random(Generator &gen)#
static const sym::Rot3<Scalar> RandomFromUniformSamples(const Scalar u1, const Scalar u2, const Scalar u3)#
static const sym::Rot3<Scalar> FromYawPitchRoll(const Scalar yaw, const Scalar pitch, const Scalar roll)#
static const sym::Rot3<Scalar> FromYawPitchRoll(const Vector3 &ypr)#
static const sym::Rot3<Scalar> FromTwoUnitVectors(const Vector3 &a, const Vector3 &b, const Scalar epsilon)#
static inline constexpr int32_t StorageDim()#
static inline Rot3 FromStorage(const Scalar *const vec)#
static inline Self Identity()#
static inline constexpr int32_t TangentDim()#
static inline Self FromTangent(const TangentVec &vec, const Scalar epsilon = kDefaultEpsilon<Scalar>)#