rxso2.hpp
Go to the documentation of this file.
1 
4 #ifndef SOPHUS_RXSO2_HPP
5 #define SOPHUS_RXSO2_HPP
6 
7 #include "so2.hpp"
8 
9 namespace Sophus {
10 template <class Scalar_, int Options = 0>
11 class RxSO2;
14 } // namespace Sophus
15 
16 namespace Eigen {
17 namespace internal {
18 
19 template <class Scalar_, int Options>
20 struct traits<Sophus::RxSO2<Scalar_, Options>> {
21  using Scalar = Scalar_;
23 };
24 
25 template <class Scalar_, int Options>
26 struct traits<Map<Sophus::RxSO2<Scalar_>, Options>>
27  : traits<Sophus::RxSO2<Scalar_, Options>> {
28  using Scalar = Scalar_;
29  using ComplexType = Map<Sophus::Vector2<Scalar>, Options>;
30 };
31 
32 template <class Scalar_, int Options>
33 struct traits<Map<Sophus::RxSO2<Scalar_> const, Options>>
34  : traits<Sophus::RxSO2<Scalar_, Options> const> {
35  using Scalar = Scalar_;
36  using ComplexType = Map<Sophus::Vector2<Scalar> const, Options>;
37 };
38 } // namespace internal
39 } // namespace Eigen
40 
41 namespace Sophus {
42 
75 template <class Derived>
76 class RxSO2Base {
77  public:
78  using Scalar = typename Eigen::internal::traits<Derived>::Scalar;
79  using ComplexType = typename Eigen::internal::traits<Derived>::ComplexType;
80 
83  static int constexpr DoF = 2;
85  static int constexpr num_parameters = 2;
87  static int constexpr N = 2;
94 
99  template <typename OtherDerived>
100  using ReturnScalar = typename Eigen::ScalarBinaryOpTraits<
101  Scalar, typename OtherDerived::Scalar>::ReturnType;
102 
103  template <typename OtherDerived>
105 
106  template <typename PointDerived>
108 
109  template <typename HPointDerived>
111 
120  SOPHUS_FUNC Adjoint Adj() const { return Adjoint::Identity(); }
121 
124  SOPHUS_FUNC Scalar angle() const { return SO2<Scalar>(complex()).log(); }
125 
128  template <class NewScalarType>
130  return RxSO2<NewScalarType>(complex().template cast<NewScalarType>());
131  }
132 
141  SOPHUS_FUNC Scalar* data() { return complex_nonconst().data(); }
142 
145  SOPHUS_FUNC Scalar const* data() const { return complex().data(); }
146 
150  Scalar squared_scale = complex().squaredNorm();
151  return RxSO2<Scalar>(complex().x() / squared_scale,
152  -complex().y() / squared_scale);
153  }
154 
166  using std::log;
167  Tangent theta_sigma;
168  theta_sigma[1] = log(scale());
169  theta_sigma[0] = SO2<Scalar>(complex()).log();
170  return theta_sigma;
171  }
172 
180  Transformation sR;
181  // clang-format off
182  sR << complex()[0], -complex()[1],
183  complex()[1], complex()[0];
184  // clang-format on
185  return sR;
186  }
187 
190  SOPHUS_FUNC RxSO2Base& operator=(RxSO2Base const& other) = default;
191 
194  template <class OtherDerived>
196  RxSO2Base<OtherDerived> const& other) {
197  complex_nonconst() = other.complex();
198  return *this;
199  }
200 
207  template <typename OtherDerived>
209  RxSO2Base<OtherDerived> const& other) const {
210  using ResultT = ReturnScalar<OtherDerived>;
211 
212  Scalar lhs_real = complex().x();
213  Scalar lhs_imag = complex().y();
214  typename OtherDerived::Scalar const& rhs_real = other.complex().x();
215  typename OtherDerived::Scalar const& rhs_imag = other.complex().y();
217  typename RxSO2Product<OtherDerived>::ComplexType result_complex(
218  lhs_real * rhs_real - lhs_imag * rhs_imag,
219  lhs_real * rhs_imag + lhs_imag * rhs_real);
220 
221  const ResultT squared_scale = result_complex.squaredNorm();
222 
223  if (squared_scale <
226  result_complex.normalize();
227  result_complex *= Constants<ResultT>::epsilon();
228  }
229  return RxSO2Product<OtherDerived>(result_complex);
230  }
231 
239  template <typename PointDerived,
240  typename = typename std::enable_if<
243  Eigen::MatrixBase<PointDerived> const& p) const {
244  return matrix() * p;
245  }
246 
249  template <typename HPointDerived,
250  typename = typename std::enable_if<
253  Eigen::MatrixBase<HPointDerived> const& p) const {
254  const auto rsp = *this * p.template head<2>();
255  return HomogeneousPointProduct<HPointDerived>(rsp(0), rsp(1), p(2));
256  }
257 
266  SOPHUS_FUNC Line operator*(Line const& l) const {
267  return Line((*this) * l.origin(), (*this) * l.direction() / scale());
268  }
269 
276  template <typename OtherDerived,
277  typename = typename std::enable_if<
278  std::is_same<Scalar, ReturnScalar<OtherDerived>>::value>::type>
280  RxSO2Base<OtherDerived> const& other) {
281  *static_cast<Derived*>(this) = *this * other;
282  return *this;
283  }
284 
290  return complex();
291  }
292 
297  SOPHUS_ENSURE(z.squaredNorm() > Constants<Scalar>::epsilon() *
299  "Scale factor must be greater-equal epsilon.");
300  static_cast<Derived*>(this)->complex_nonconst() = z;
301  }
302 
305  SOPHUS_FUNC ComplexType const& complex() const {
306  return static_cast<Derived const*>(this)->complex();
307  }
308 
312  ComplexType norm_quad = complex();
313  norm_quad.normalize();
314  return SO2<Scalar>(norm_quad).matrix();
315  }
316 
320  Scalar scale() const { return complex().norm(); }
321 
324  SOPHUS_FUNC void setAngle(Scalar const& theta) { setSO2(SO2<Scalar>(theta)); }
325 
331  setSO2(SO2<Scalar>(R));
332  }
333 
337  using std::sqrt;
338  complex_nonconst().normalize();
339  complex_nonconst() *= scale;
340  }
341 
349  "sR must be scaled orthogonal:\n %", sR);
350  complex_nonconst() = sR.col(0);
351  }
352 
356  using std::sqrt;
357  Scalar saved_scale = scale();
358  complex_nonconst() = so2.unit_complex();
359  complex_nonconst() *= saved_scale;
360  }
361 
363 
364  protected:
368  return static_cast<Derived*>(this)->complex_nonconst();
369  }
370 };
371 
373 template <class Scalar_, int Options>
374 class RxSO2 : public RxSO2Base<RxSO2<Scalar_, Options>> {
375  public:
377  using Scalar = Scalar_;
379  using Point = typename Base::Point;
381  using Tangent = typename Base::Tangent;
382  using Adjoint = typename Base::Adjoint;
383  using ComplexMember = Eigen::Matrix<Scalar, 2, 1, Options>;
384 
386  friend class RxSO2Base<RxSO2<Scalar_, Options>>;
387 
388  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
389 
394 
397  SOPHUS_FUNC RxSO2(RxSO2 const& other) = default;
398 
401  template <class OtherDerived>
403  : complex_(other.complex()) {}
404 
410  SOPHUS_FUNC explicit RxSO2(Transformation const& sR) {
411  this->setScaledRotationMatrix(sR);
412  }
413 
419  SOPHUS_FUNC RxSO2(Scalar const& scale, Transformation const& R)
420  : RxSO2((scale * SO2<Scalar>(R).unit_complex()).eval()) {}
421 
426  SOPHUS_FUNC RxSO2(Scalar const& scale, SO2<Scalar> const& so2)
427  : RxSO2((scale * so2.unit_complex()).eval()) {}
428 
433  SOPHUS_FUNC explicit RxSO2(Vector2<Scalar> const& z) : complex_(z) {
436  "Scale factor must be greater-equal epsilon: % vs %",
437  complex_.squaredNorm(),
439  }
440 
445  SOPHUS_FUNC explicit RxSO2(Scalar const& real, Scalar const& imag)
446  : RxSO2(Vector2<Scalar>(real, imag)) {}
447 
450  SOPHUS_FUNC ComplexMember const& complex() const { return complex_; }
451 
455  return generator(i);
456  }
468  using std::exp;
469 
470  Scalar const theta = a[0];
471  Scalar const sigma = a[1];
472  Scalar s = exp(sigma);
473  Vector2<Scalar> z = SO2<Scalar>::exp(theta).unit_complex();
474  z *= s;
475  return RxSO2<Scalar>(z);
476  }
477 
493  SOPHUS_ENSURE(i >= 0 && i <= 1, "i should be 0 or 1.");
494  Tangent e;
495  e.setZero();
496  e[i] = Scalar(1);
497  return hat(e);
498  }
499 
515  Transformation A;
516  // clang-format off
517  A << a(1), -a(0),
518  a(0), a(1);
519  // clang-format on
520  return A;
521  }
522 
532  SOPHUS_FUNC static Tangent lieBracket(Tangent const&, Tangent const&) {
533  Vector2<Scalar> res;
534  res.setZero();
535  return res;
536  }
537 
543  template <class UniformRandomBitGenerator>
544  static RxSO2 sampleUniform(UniformRandomBitGenerator& generator) {
545  std::uniform_real_distribution<Scalar> uniform(Scalar(-1), Scalar(1));
546  using std::exp2;
547  return RxSO2(exp2(uniform(generator)),
549  }
550 
563  SOPHUS_FUNC static Tangent vee(Transformation const& Omega) {
564  using std::abs;
565  return Tangent(Omega(1, 0), Omega(0, 0));
566  }
567 
568  protected:
570 
572 };
573 
574 } // namespace Sophus
575 
576 namespace Eigen {
577 
582 template <class Scalar_, int Options>
583 class Map<Sophus::RxSO2<Scalar_>, Options>
584  : public Sophus::RxSO2Base<Map<Sophus::RxSO2<Scalar_>, Options>> {
586 
587  public:
588  using Scalar = Scalar_;
590  using Point = typename Base::Point;
592  using Tangent = typename Base::Tangent;
593  using Adjoint = typename Base::Adjoint;
594 
596  friend class Sophus::RxSO2Base<Map<Sophus::RxSO2<Scalar_>, Options>>;
597 
598  // LCOV_EXCL_START
599  EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Map);
600  // LCOV_EXCL_STOP
601  using Base::operator*=;
602  using Base::operator*;
603 
604  SOPHUS_FUNC Map(Scalar* coeffs) : complex_(coeffs) {}
605 
609  Map<Sophus::Vector2<Scalar>, Options> const& complex() const {
610  return complex_;
611  }
612 
613  protected:
614  SOPHUS_FUNC Map<Sophus::Vector2<Scalar>, Options>& complex_nonconst() {
615  return complex_;
616  }
617 
618  Map<Sophus::Vector2<Scalar>, Options> complex_;
619 };
620 
625 template <class Scalar_, int Options>
626 class Map<Sophus::RxSO2<Scalar_> const, Options>
627  : public Sophus::RxSO2Base<Map<Sophus::RxSO2<Scalar_> const, Options>> {
628  public:
630  using Scalar = Scalar_;
632  using Point = typename Base::Point;
634  using Tangent = typename Base::Tangent;
635  using Adjoint = typename Base::Adjoint;
636 
637  using Base::operator*=;
638  using Base::operator*;
639 
641  Map(Scalar const* coeffs) : complex_(coeffs) {}
642 
646  Map<Sophus::Vector2<Scalar> const, Options> const& complex() const {
647  return complex_;
648  }
649 
650  protected:
651  Map<Sophus::Vector2<Scalar> const, Options> const complex_;
652 };
653 } // namespace Eigen
654 
655 #endif
Sophus::RxSO2Base::operator*
SOPHUS_FUNC RxSO2Product< OtherDerived > operator*(RxSO2Base< OtherDerived > const &other) const
Definition: rxso2.hpp:208
Sophus::RxSO2::RxSO2
EIGEN_MAKE_ALIGNED_OPERATOR_NEW SOPHUS_FUNC RxSO2()
Definition: rxso2.hpp:393
Sophus::RxSO2< Scalar, Options >::ComplexMember
Eigen::Matrix< Scalar, 2, 1, Options > ComplexMember
Definition: rxso2.hpp:383
Sophus::RxSO2Base::data
SOPHUS_FUNC Scalar const * data() const
Definition: rxso2.hpp:145
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::HomogeneousPoint
Vector3< Scalar > HomogeneousPoint
Definition: rxso2.hpp:90
Sophus::SO2
SO2 using default storage; derived from SO2Base.
Definition: so2.hpp:19
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::PointProduct
Vector2< ReturnScalar< PointDerived > > PointProduct
Definition: rxso2.hpp:107
Sophus::RxSO2Base
Definition: rxso2.hpp:76
Eigen
Definition: rxso2.hpp:16
Eigen::internal::traits< Sophus::RxSO2< Scalar_, Options > >::ComplexType
Sophus::Vector2< Scalar, Options > ComplexType
Definition: rxso2.hpp:22
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Scalar
typename Eigen::internal::traits< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Scalar Scalar
Definition: rxso2.hpp:78
Sophus::RxSO2Base::N
static constexpr int N
Group transformations are 2x2 matrices.
Definition: rxso2.hpp:87
Sophus::RxSO2Base::data
SOPHUS_FUNC Scalar * data()
Definition: rxso2.hpp:141
Sophus::RxSO2Base::cast
SOPHUS_FUNC RxSO2< NewScalarType > cast() const
Definition: rxso2.hpp:129
Sophus::RxSO2Base::operator=
SOPHUS_FUNC RxSO2Base & operator=(RxSO2Base const &other)=default
Sophus::RxSO2Base::operator*=
SOPHUS_FUNC RxSO2Base< Derived > & operator*=(RxSO2Base< OtherDerived > const &other)
Definition: rxso2.hpp:279
Sophus::RxSO2Base::matrix
SOPHUS_FUNC Transformation matrix() const
Definition: rxso2.hpp:179
Sophus::RxSO2Base::setScale
SOPHUS_FUNC void setScale(Scalar const &scale)
Definition: rxso2.hpp:336
Sophus::Vector3
Vector< Scalar, 3, Options > Vector3
Definition: types.hpp:21
Sophus::RxSO2< Scalar, Options >::HomogeneousPoint
typename Base::HomogeneousPoint HomogeneousPoint
Definition: rxso2.hpp:380
Sophus::SO2::exp
static SOPHUS_FUNC SO2< Scalar > exp(Tangent const &theta)
Definition: so2.hpp:421
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::ComplexType
typename Eigen::internal::traits< Map< Sophus::RxSO2< Scalar_ > const, Options > >::ComplexType ComplexType
Definition: rxso2.hpp:79
Sophus::RxSO2Base::setComplex
SOPHUS_FUNC void setComplex(Vector2< Scalar > const &z)
Definition: rxso2.hpp:296
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::Transformation
typename Base::Transformation Transformation
Definition: rxso2.hpp:631
SOPHUS_ENSURE
#define SOPHUS_ENSURE(expr,...)
Definition: common.hpp:137
Sophus::RxSO2::RxSO2
SOPHUS_FUNC RxSO2(Transformation const &sR)
Definition: rxso2.hpp:410
Sophus::RxSO2Base::complex
SOPHUS_FUNC ComplexType const & complex() const
Definition: rxso2.hpp:305
Sophus::RxSO2::sampleUniform
static RxSO2 sampleUniform(UniformRandomBitGenerator &generator)
Definition: rxso2.hpp:544
Sophus::RxSO2Base::Adj
SOPHUS_FUNC Adjoint Adj() const
Definition: rxso2.hpp:120
Sophus::Vector2
Vector< Scalar, 2, Options > Vector2
Definition: types.hpp:16
Sophus::RxSO2< Scalar, Options >::Point
typename Base::Point Point
Definition: rxso2.hpp:379
Sophus::RxSO2::RxSO2
SOPHUS_FUNC RxSO2(Scalar const &scale, Transformation const &R)
Definition: rxso2.hpp:419
Sophus::RxSO2< Scalar, Options >::Tangent
typename Base::Tangent Tangent
Definition: rxso2.hpp:381
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Line
ParametrizedLine2< Scalar > Line
Definition: rxso2.hpp:91
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::Tangent
typename Base::Tangent Tangent
Definition: rxso2.hpp:634
Sophus::RxSO2::RxSO2
SOPHUS_FUNC RxSO2(Scalar const &real, Scalar const &imag)
Definition: rxso2.hpp:445
Sophus::RxSO2::RxSO2
SOPHUS_FUNC RxSO2(Scalar const &scale, SO2< Scalar > const &so2)
Definition: rxso2.hpp:426
Sophus::RxSO2::exp
static SOPHUS_FUNC RxSO2< Scalar > exp(Tangent const &a)
Definition: rxso2.hpp:467
Sophus::RxSO2Base::scale
SOPHUS_FUNC Scalar scale() const
Definition: rxso2.hpp:320
Eigen::internal::traits< Map< Sophus::RxSO2< Scalar_ > const, Options > >::ComplexType
Map< Sophus::Vector2< Scalar > const, Options > ComplexType
Definition: rxso2.hpp:36
Sophus::RxSO2::lieBracket
static SOPHUS_FUNC Tangent lieBracket(Tangent const &, Tangent const &)
Definition: rxso2.hpp:532
Sophus::Constants::epsilon
static SOPHUS_FUNC Scalar epsilon()
Definition: common.hpp:147
Sophus::Matrix
Eigen::Matrix< Scalar, M, N > Matrix
Definition: types.hpp:41
Sophus::RxSO2Base::inverse
SOPHUS_FUNC RxSO2< Scalar > inverse() const
Definition: rxso2.hpp:149
Sophus
Definition: average.hpp:17
SOPHUS_FUNC
#define SOPHUS_FUNC
Definition: common.hpp:37
Sophus::RxSO2Base::DoF
static constexpr int DoF
Definition: rxso2.hpp:83
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::HomogeneousPointProduct
Vector3< ReturnScalar< HPointDerived > > HomogeneousPointProduct
Definition: rxso2.hpp:110
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::HomogeneousPoint
typename Base::HomogeneousPoint HomogeneousPoint
Definition: rxso2.hpp:633
Sophus::RxSO2Base::num_parameters
static constexpr int num_parameters
Number of internal parameters used (complex number is a tuple).
Definition: rxso2.hpp:85
Sophus::RxSO2::vee
static SOPHUS_FUNC Tangent vee(Transformation const &Omega)
Definition: rxso2.hpp:563
Eigen::Map< Sophus::RxSO2< Scalar_ >, Options >::complex
SOPHUS_FUNC Map< Sophus::Vector2< Scalar >, Options > const & complex() const
Definition: rxso2.hpp:609
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::complex
SOPHUS_FUNC Map< Sophus::Vector2< Scalar > const, Options > const & complex() const
Definition: rxso2.hpp:646
Sophus::RxSO2::RxSO2
SOPHUS_FUNC RxSO2(RxSO2Base< OtherDerived > const &other)
Definition: rxso2.hpp:402
Sophus::RxSO2Base::angle
SOPHUS_FUNC Scalar angle() const
Definition: rxso2.hpp:124
Sophus::RxSO2Base::setScaledRotationMatrix
SOPHUS_FUNC void setScaledRotationMatrix(Transformation const &sR)
Definition: rxso2.hpp:347
Sophus::RxSO2Base::so2
SOPHUS_FUNC SO2< Scalar > so2() const
Definition: rxso2.hpp:362
Sophus::RxSO2::complex
SOPHUS_FUNC ComplexMember const & complex() const
Definition: rxso2.hpp:450
Sophus::RxSO2::complex_
ComplexMember complex_
Definition: rxso2.hpp:571
Eigen::Map< Sophus::RxSO2< Scalar_ >, Options >::complex_nonconst
SOPHUS_FUNC Map< Sophus::Vector2< Scalar >, Options > & complex_nonconst()
Definition: rxso2.hpp:614
Eigen::internal::traits< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Scalar
Scalar_ Scalar
Definition: rxso2.hpp:35
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Tangent
Vector< Scalar, DoF > Tangent
Definition: rxso2.hpp:92
Sophus::RxSO2::generator
static SOPHUS_FUNC Transformation generator(int i)
Definition: rxso2.hpp:492
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Point
Vector2< Scalar > Point
Definition: rxso2.hpp:89
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::ReturnScalar
typename Eigen::ScalarBinaryOpTraits< Scalar, typename OtherDerived::Scalar >::ReturnType ReturnScalar
Definition: rxso2.hpp:101
Sophus::RxSO2Base::params
SOPHUS_FUNC Sophus::Vector< Scalar, num_parameters > params() const
Definition: rxso2.hpp:289
Sophus::RxSO2::RxSO2
SOPHUS_FUNC RxSO2(Vector2< Scalar > const &z)
Definition: rxso2.hpp:433
Sophus::IsFixedSizeVector
Definition: types.hpp:225
Sophus::RxSO2
RxSO2 using storage; derived from RxSO2Base.
Definition: rxso2.hpp:11
Sophus::Constants
Definition: common.hpp:146
Sophus::RxSO2Base::operator*
SOPHUS_FUNC Line operator*(Line const &l) const
Definition: rxso2.hpp:266
Sophus::RxSO2Base::operator*
SOPHUS_FUNC PointProduct< PointDerived > operator*(Eigen::MatrixBase< PointDerived > const &p) const
Definition: rxso2.hpp:242
Eigen::Map< Sophus::RxSO2< Scalar_ >, Options >::complex_
Map< Sophus::Vector2< Scalar >, Options > complex_
Definition: rxso2.hpp:618
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Transformation
Matrix< Scalar, N, N > Transformation
Definition: rxso2.hpp:88
Sophus::RxSO2Base::setRotationMatrix
SOPHUS_FUNC void setRotationMatrix(Transformation const &R)
Definition: rxso2.hpp:330
Sophus::RxSO2Base::rotationMatrix
SOPHUS_FUNC Transformation rotationMatrix() const
Definition: rxso2.hpp:311
Eigen::internal::traits< Sophus::RxSO2< Scalar_, Options > >::Scalar
Scalar_ Scalar
Definition: rxso2.hpp:21
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::Adjoint
typename Base::Adjoint Adjoint
Definition: rxso2.hpp:635
Sophus::RxSO2< Scalar, Options >::Scalar
Scalar Scalar
Definition: rxso2.hpp:377
Sophus::Vector
Eigen::Matrix< Scalar, M, 1, Options > Vector
Definition: types.hpp:13
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::complex_
const Map< Sophus::Vector2< Scalar > const, Options > complex_
Definition: rxso2.hpp:651
Sophus::RxSO2Base::operator=
SOPHUS_FUNC RxSO2Base< Derived > & operator=(RxSO2Base< OtherDerived > const &other)
Definition: rxso2.hpp:195
Sophus::RxSO2::complex_nonconst
SOPHUS_FUNC ComplexMember & complex_nonconst()
Definition: rxso2.hpp:569
Sophus::RxSO2< Scalar, Options >::Adjoint
typename Base::Adjoint Adjoint
Definition: rxso2.hpp:382
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::Scalar
Scalar_ Scalar
Definition: rxso2.hpp:630
Sophus::RxSO2Base::log
SOPHUS_FUNC Tangent log() const
Definition: rxso2.hpp:165
Sophus::RxSO2::hat
static SOPHUS_FUNC Transformation hat(Tangent const &a)
Definition: rxso2.hpp:514
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::Point
typename Base::Point Point
Definition: rxso2.hpp:632
Sophus::ParametrizedLine2
ParametrizedLine< Scalar, 2, Options > ParametrizedLine2
Definition: types.hpp:77
Sophus::RxSO2Base::complex_nonconst
SOPHUS_FUNC ComplexType & complex_nonconst()
Definition: rxso2.hpp:367
Sophus::RxSO2Base::operator*
SOPHUS_FUNC HomogeneousPointProduct< HPointDerived > operator*(Eigen::MatrixBase< HPointDerived > const &p) const
Definition: rxso2.hpp:252
Sophus::RxSO2< Scalar, Options >::Transformation
typename Base::Transformation Transformation
Definition: rxso2.hpp:378
Eigen::Map< Sophus::RxSO2< Scalar_ >, Options >::Scalar
Scalar_ Scalar
Definition: rxso2.hpp:588
so2.hpp
Sophus::isScaledOrthogonalAndPositive
SOPHUS_FUNC bool isScaledOrthogonalAndPositive(Eigen::MatrixBase< D > const &sR)
Definition: rotation_matrix.hpp:33
Sophus::RxSO2::Dxi_exp_x_matrix_at_0
static SOPHUS_FUNC Transformation Dxi_exp_x_matrix_at_0(int i)
Definition: rxso2.hpp:454
Sophus::RxSO2Base::setAngle
SOPHUS_FUNC void setAngle(Scalar const &theta)
Definition: rxso2.hpp:324
Sophus::RxSO2Base< Map< Sophus::RxSO2< Scalar_ > const, Options > >::Adjoint
Matrix< Scalar, DoF, DoF > Adjoint
Definition: rxso2.hpp:93
Eigen::Map< Sophus::RxSO2< Scalar_ > const, Options >::Map
SOPHUS_FUNC Map(Scalar const *coeffs)
Definition: rxso2.hpp:641
Sophus::RxSO2Base::setSO2
SOPHUS_FUNC void setSO2(SO2< Scalar > const &so2)
Definition: rxso2.hpp:355


sophus
Author(s): Hauke Strasdat
autogenerated on Wed Mar 2 2022 01:01:47