farm-ng-core
translation.h
Go to the documentation of this file.
1 // Copyright (c) 2011, Hauke Strasdat
2 // Copyright (c) 2012, Steven Lovegrove
3 // Copyright (c) 2021, farm-ng, inc.
4 //
5 // Use of this source code is governed by an MIT-style
6 // license that can be found in the LICENSE file or at
7 // https://opensource.org/licenses/MIT.
8 
9 #pragma once
10 
14 #include "sophus/lie/lie_group.h"
15 
16 namespace sophus {
17 
18 template <class TScalar, int kDim>
20 
21 namespace lie {
22 template <int kDim>
24  template <class TScalar>
26 };
27 
28 } // namespace lie
29 
30 // scale and direction preserving mapping
31 template <class TScalar, int kDim>
32 class Translation : public lie::Group<
33  lie::TranslationWithDim<kDim>::template Group,
34  TScalar,
35  lie::WithDimAndSubgroup<
36  kDim,
37  lie::IdentityWithDim<kDim>::template Impl>::
38  template SemiDirectProduct> {
39  public:
40  using Scalar = TScalar;
41  using Base = lie::Group<
43  TScalar,
45  template SemiDirectProduct>;
46 
47  using Tangent = typename Base::Tangent;
48  using Params = typename Base::Params;
49  using Point = typename Base::Point;
50 
51  Translation() = default;
52 
53  Translation(Eigen::Vector<Scalar, kDim> const& translation) {
54  this->params_ = translation;
55  }
56 
57  explicit Translation(UninitTag /*unused*/) {}
58 
59  template <class TOtherScalar>
60  auto cast() const -> Translation<TOtherScalar, kDim> {
62  this->params_.template cast<TOtherScalar>());
63  }
64 
65  auto translation() -> Point& { return this->params_; }
66 
67  [[nodiscard]] auto translation() const -> Point const& {
68  return this->params_;
69  }
70 };
71 
72 template <class TScalar>
74 template <class TScalar>
76 
79 
82 
83 static_assert(concepts::Translation<Translation3F64>);
84 
85 } // namespace sophus
sophus::lie::Group::Params
Eigen::Vector< Scalar, kNumParams > Params
Definition: lie_group.h:69
sophus::lie::TranslationWithDim
Definition: translation.h:23
sophus::Translation
Definition: translation.h:19
sophus::lie::Group::Tangent
Eigen::Vector< Scalar, kDof > Tangent
Definition: lie_group.h:68
sophus::lie::Group
Definition: lie_group.h:24
sophus::Translation::Params
typename Base::Params Params
Definition: translation.h:48
sophus::Translation::translation
auto translation() const -> Point const &
Definition: translation.h:67
sophus
Image MutImage, owning images types.
Definition: num_diff.h:20
sophus::lie::Group::Point
Eigen::Vector< Scalar, kPointDim > Point
Definition: lie_group.h:70
sophus::Translation::Translation
Translation()=default
sophus::Translation::translation
auto translation() -> Point &
Definition: translation.h:65
sophus::Translation::cast
auto cast() const -> Translation< TOtherScalar, kDim >
Definition: translation.h:60
sophus::lie::WithDimAndSubgroup
Definition: translation_factor_group_product.h:380
sophus::Translation::Scalar
TScalar Scalar
Definition: translation.h:40
sophus::Translation::Translation
Translation(UninitTag)
Definition: translation.h:57
lie_group.h
sophus::Translation::Translation
Translation(Eigen::Vector< Scalar, kDim > const &translation)
Definition: translation.h:53
group_accessors.h
translation_factor_group_product.h
sophus::Translation::Tangent
typename Base::Tangent Tangent
Definition: translation.h:47
identity.h
sophus::Translation::Point
typename Base::Point Point
Definition: translation.h:49
sophus::UninitTag
Definition: common.h:70