farm-ng-core
scaling_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 // origin, coordinate axis directions, and shape preserving mapping
31 template <class TScalar, int kDim>
33  : public lie::Group<
34  lie::ScalingTranslationWithDim<kDim>::template Group,
35  TScalar,
36  lie::WithDimAndSubgroup<
37  kDim,
38  lie::ScalingWithDim<kDim>::template Impl>::
39  template SemiDirectProduct> {
40  public:
41  using Scalar = TScalar;
42  using Base = lie::Group<
44  TScalar,
46  template SemiDirectProduct>;
47 
48  using Tangent = typename Base::Tangent;
49  using Params = typename Base::Params;
50  using Point = typename Base::Point;
51 
52  ScalingTranslation() = default;
53 
54  explicit ScalingTranslation(UninitTag /*unused*/) {}
55 
56  template <class TOtherScalar>
57  auto cast() const -> ScalingTranslation<TOtherScalar, kDim> {
59  this->params_.template cast<TOtherScalar>());
60  }
61 
62  auto translation() -> Eigen::VectorBlock<Params, kDim> {
63  return this->params_.template tail<kDim>();
64  }
65 
66  [[nodiscard]] auto translation() const
67  -> Eigen::VectorBlock<Params const, kDim> {
68  return this->params_.template tail<kDim>();
69  }
70 
71  [[nodiscard]] auto scaleFactors() const -> Eigen::Vector<Scalar, kDim> {
72  return this->params_.template head<kDim>();
73  }
74 
75  auto setScaleFactors(Eigen::Vector<Scalar, kDim> const& scale_factors)
76  -> void {
77  this->params_.template head<kDim>() = scale_factors;
78  }
79 };
80 
81 template <class TScalar>
83 template <class TScalar>
85 
87 
89 
90 } // namespace sophus
sophus::ScalingTranslation::Scalar
TScalar Scalar
Definition: scaling_translation.h:41
sophus::lie::Group::Params
Eigen::Vector< Scalar, kNumParams > Params
Definition: lie_group.h:69
Eigen
Definition: params.h:72
sophus::lie::Group::Tangent
Eigen::Vector< Scalar, kDof > Tangent
Definition: lie_group.h:68
sophus::ScalingTranslation::translation
auto translation() -> Eigen::VectorBlock< Params, kDim >
Definition: scaling_translation.h:62
sophus::lie::Group
Definition: lie_group.h:24
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::ScalingTranslation::Point
typename Base::Point Point
Definition: scaling_translation.h:50
sophus::lie::WithDimAndSubgroup
Definition: translation_factor_group_product.h:380
sophus::ScalingTranslation::cast
auto cast() const -> ScalingTranslation< TOtherScalar, kDim >
Definition: scaling_translation.h:57
sophus::ScalingTranslation::translation
auto translation() const -> Eigen::VectorBlock< Params const, kDim >
Definition: scaling_translation.h:66
sophus::ScalingTranslation::scaleFactors
auto scaleFactors() const -> Eigen::Vector< Scalar, kDim >
Definition: scaling_translation.h:71
scaling.h
sophus::ScalingTranslation::Params
typename Base::Params Params
Definition: scaling_translation.h:49
lie_group.h
sophus::ScalingTranslation::ScalingTranslation
ScalingTranslation()=default
group_accessors.h
translation_factor_group_product.h
sophus::lie::ScalingTranslationWithDim
Definition: scaling_translation.h:23
sophus::ScalingTranslation
Definition: scaling_translation.h:19
sophus::ScalingTranslation::setScaleFactors
auto setScaleFactors(Eigen::Vector< Scalar, kDim > const &scale_factors) -> void
Definition: scaling_translation.h:75
sophus::ScalingTranslation::ScalingTranslation
ScalingTranslation(UninitTag)
Definition: scaling_translation.h:54
sophus::UninitTag
Definition: common.h:70
sophus::ScalingTranslation::Tangent
typename Base::Tangent Tangent
Definition: scaling_translation.h:48