smooth
A C++ library for Lie theory
Loading...
Searching...
No Matches
LieGroup Concept Reference

Class-external Lie group interface defined through the traits::lie trait class. More...

#include <lie_group.hpp>

Concept definition

template<typename G>
concept LieGroup =
requires (Eigen::Index dof) {
{traits::lie<G>::Dof}->std::convertible_to<int>;
{traits::lie<G>::IsCommutative}->std::convertible_to<bool>;
{traits::lie<G>::Identity(dof)}->std::convertible_to<typename traits::lie<G>::PlainObject>;
{traits::lie<G>::Random(dof)}->std::convertible_to<typename traits::lie<G>::PlainObject>;
} &&
requires(const G & g1, const G & g2, typename traits::lie<G>::Scalar eps) {
{traits::lie<G>::Ad(g1)}->std::convertible_to<Eigen::Matrix<typename traits::lie<G>::Scalar, traits::lie<G>::Dof, traits::lie<G>::Dof>>;
{traits::lie<G>::composition(g1, g2)}->std::convertible_to<typename traits::lie<G>::PlainObject>;
{traits::lie<G>::dof(g1)}->std::convertible_to<Eigen::Index>;
{traits::lie<G>::inverse(g1)}->std::convertible_to<typename traits::lie<G>::PlainObject>;
{traits::lie<G>::isApprox(g1, g2, eps)}->std::convertible_to<bool>;
{traits::lie<G>::log(g1)}->std::convertible_to<Eigen::Vector<typename traits::lie<G>::Scalar, traits::lie<G>::Dof>>;
} &&
requires(const Eigen::Vector<typename traits::lie<G>::Scalar, traits::lie<G>::Dof> & a) {
{traits::lie<G>::ad(a)}->std::convertible_to<Eigen::Matrix<typename traits::lie<G>::Scalar, traits::lie<G>::Dof, traits::lie<G>::Dof>>;
{traits::lie<G>::exp(a)}->std::convertible_to<typename traits::lie<G>::PlainObject>;
{traits::lie<G>::dr_exp(a)}->std::convertible_to<Eigen::Matrix<typename traits::lie<G>::Scalar, traits::lie<G>::Dof, traits::lie<G>::Dof>>;
{traits::lie<G>::dr_expinv(a)}->std::convertible_to<Eigen::Matrix<typename traits::lie<G>::Scalar, traits::lie<G>::Dof, traits::lie<G>::Dof>>;
{traits::lie<G>::d2r_exp(a)}->std::convertible_to<Eigen::Matrix<typename traits::lie<G>::Scalar, traits::lie<G>::Dof, (traits::lie<G>::Dof > 0 ? traits::lie<G>::Dof * traits::lie<G>::Dof : -1)>>;
{traits::lie<G>::d2r_expinv(a)}->std::convertible_to<Eigen::Matrix<typename traits::lie<G>::Scalar, traits::lie<G>::Dof, (traits::lie<G>::Dof > 0 ? traits::lie<G>::Dof * traits::lie<G>::Dof : -1)>>;
} && (
!std::is_convertible_v<typename traits::lie<G>::Scalar, double> ||
requires (const G & g) {
{traits::lie<G>::template cast<double>(g)};
}
) && (
!std::is_convertible_v<typename traits::lie<G>::Scalar, float> ||
requires (const G & g) {
{traits::lie<G>::template cast<double>(g)};
}
) &&
std::is_default_constructible_v<typename traits::lie<G>::PlainObject> &&
std::is_copy_constructible_v<typename traits::lie<G>::PlainObject> &&
std::is_assignable_v<typename traits::lie<G>::PlainObject &, G>
Class-external Lie group interface defined through the traits::lie trait class.
Definition lie_group.hpp:33
Eigen::Index dof(const M &m)
Manifold degrees of freedom (tangent space dimension)
Definition manifold.hpp:145
Trait class for making a class a LieGroup instance via specialization.
Definition lie_group.hpp:23

Detailed Description

Class-external Lie group interface defined through the traits::lie trait class.

Definition at line 33 of file lie_group.hpp.