Go to the documentation of this file.
19 template <
class TScalar>
33 template <
class TOtherScalar>
36 this->
params_.template cast<TOtherScalar>());
42 return Rotation3::exp(Eigen::Vector3<TScalar>(x, TScalar(0), TScalar(0)));
48 return Rotation3::exp(Eigen::Vector3<TScalar>(TScalar(0), y, TScalar(0)));
54 return Rotation3::exp(Eigen::Vector3<TScalar>(TScalar(0), TScalar(0), z));
69 "R is not orthogonal:\n {}",
70 mat_r * mat_r.transpose());
72 mat_r.determinant() > TScalar(0),
73 "det(R) is not positive: {}",
101 template <
class TScalar>
107 Eigen::Vector<TScalar, 3> from_cross_to = from.vector().cross(to.vector());
108 TScalar n = from_cross_to.norm();
109 if (abs(n) < sophus::kEpsilon<TScalar>) {
113 TScalar angle = atan2(n, from.vector().dot(to.vector()));
126 template <
class TScalar>
128 Eigen::Vector<TScalar, 3>
const& from, Eigen::Vector<TScalar, 3>
const& to)
132 Eigen::Vector<TScalar, 3> from_cross_to = from.cross(to);
133 TScalar n = from_cross_to.norm();
134 if (abs(n) < sophus::kEpsilon<TScalar>) {
138 TScalar angle = atan2(n, from.dot(to));
145 static_assert(concepts::Rotation3<Rotation3F64>);
153 return v.template cast<typename TTo::Scalar>();
157 return v.template cast<TTo>();
162 template <
class TScalar>
auto rotThroughPoints(UnitVector3< TScalar > const &from, UnitVector3< TScalar > const &to) -> Rotation3< TScalar >
Construct rotation which would take unit direction vector from into to such that to = rotThroughPoint...
Definition: rotation3.h:102
typename Base::Params Params
Definition: rotation3.h:26
static auto fitFromQuaternion(Quaternion< TScalar > const &q) -> Rotation3
Definition: rotation3.h:61
static auto fitFromMatrix(Eigen::Matrix3< TScalar > const &mat_r) -> Rotation3
Definition: rotation3.h:78
Eigen::Vector< Scalar, kNumParams > Params
Definition: lie_group.h:69
static auto fromUnitQuaternion(Quaternion< TScalar > const &q) -> Rotation3
Definition: rotation3.h:57
Rotation3(UninitTag)
Definition: rotation3.h:31
#define SOPHUS_ASSERT(...)
Definition: common.h:40
Eigen::Vector< Scalar, kDof > Tangent
Definition: lie_group.h:68
Definition: lie_group.h:24
Definition: rotation3.h:20
Definition: lie_group.h:14
auto cast() const -> Rotation3< TOtherScalar >
Definition: rotation3.h:34
Image MutImage, owning images types.
Definition: num_diff.h:20
Eigen::Vector< Scalar, kPointDim > Point
Definition: lie_group.h:70
static auto fromParams(Params const ¶ms) -> Quaternion
Definition: quaternion.h:118
static auto fromParams(Params const ¶ms) -> Derived
Definition: lie_group.h:79
typename Base::Tangent Tangent
Definition: rotation3.h:25
auto unitQuaternion() const -> Quaternion< TScalar >
Definition: rotation3.h:86
TScalar Scalar
Definition: rotation3.h:22
Params params_
Definition: lie_group.h:265
auto makeRotationMatrix(Eigen::MatrixBase< TD > const &r) -> std::enable_if_t< std::is_floating_point< typename TD::Scalar >::value, Eigen::Matrix< typename TD::Scalar, TD::RowsAtCompileTime, TD::RowsAtCompileTime >>
Takes in arbitrary square matrix (2x2 or larger) and returns closest orthogonal matrix with positive ...
Definition: orthogonal.h:67
static auto fromRotationMatrix(Eigen::Matrix3< TScalar > const &mat_r) -> Rotation3
Definition: rotation3.h:65
void setParams(Params const ¶ms)
Definition: lie_group.h:241
auto setUnitQuaternion(Quaternion< TScalar > const &z) const -> void
Definition: rotation3.h:90
auto rotationMatrix() const -> Eigen::Matrix3< TScalar >
Definition: rotation3.h:82
static auto fromRy(TScalar const &y) -> Rotation3
Construct y-axis rotation.
Definition: rotation3.h:47
static auto fromRx(TScalar const &x) -> Rotation3
Construct x-axis rotation.
Definition: rotation3.h:41
typename Base::Point Point
Definition: rotation3.h:27
auto matrix() const -> Eigen::Matrix< Scalar, kAmbientDim, kAmbientDim >
Definition: lie_group.h:176
auto isOrthogonal(Eigen::MatrixBase< TD > const &r) -> bool
Takes in arbitrary square matrix and returns true if it is orthogonal.
Definition: orthogonal.h:24
static auto exp(Tangent const &tangent) -> Derived
Definition: lie_group.h:93
static auto fromRz(TScalar const &z) -> Rotation3
Construct z-axis rotation.
Definition: rotation3.h:53
Definition: group_accessors.h:18