Go to the documentation of this file.
16 template <
class TScalar>
23 using Params = Eigen::Vector<Scalar, kNumParams>;
25 template <
class TCompatibleScalar>
27 typename Eigen::ScalarBinaryOpTraits<Scalar, TCompatibleScalar>::
32 static auto zero() -> Eigen::Vector<Scalar, 2> {
33 return Eigen::Vector<Scalar, 2>::Zero();
36 static auto one() -> Eigen::Vector<Scalar, 2> {
37 return Eigen::Vector<Scalar, 2>(1.0, 0.0);
41 -> sophus::Expected<Success> {
42 return sophus::Expected<Success>{};
46 return pointExamples<Scalar, 2>();
50 return std::vector<Params>({});
55 template <
class TCompatibleScalar>
57 Eigen::Vector<Scalar, 2>
const& lhs_real_imag,
58 Eigen::Vector<TCompatibleScalar, 2>
const& rhs_real_imag)
60 return lhs_real_imag + rhs_real_imag;
63 template <
class TCompatibleScalar>
65 Eigen::Vector<Scalar, 2>
const& lhs_real_imag,
66 Eigen::Vector<TCompatibleScalar, 2>
const& rhs_real_imag)
70 lhs_real_imag.x() * rhs_real_imag.x() -
71 lhs_real_imag.y() * rhs_real_imag.y(),
72 lhs_real_imag.x() * rhs_real_imag.y() +
73 lhs_real_imag.y() * rhs_real_imag.x());
76 static auto conjugate(Eigen::Vector<Scalar, 2>
const& a)
77 -> Eigen::Vector<Scalar, 2> {
78 return Eigen::Vector<Scalar, 2>(a.x(), -a.y());
81 static auto inverse(Eigen::Vector<Scalar, 2>
const& real_imag)
82 -> Eigen::Vector<Scalar, 2> {
86 static auto norm(Eigen::Vector<Scalar, 2>
const& real_imag) ->
Scalar {
88 return hypot(real_imag.x(), real_imag.y());
92 return real_imag.squaredNorm();
96 template <
class TScalar>
104 using Params = Eigen::Vector<Scalar, kNumParams>;
106 template <
class TCompatibleScalar>
133 [[nodiscard]]
auto real() const ->
Scalar const& {
return params_[0]; }
136 [[nodiscard]]
auto imag() const ->
Scalar const& {
return params_[1]; }
138 template <
class TCompatibleScalar>
144 template <
class TCompatibleScalar>
169 Eigen::Vector2<Scalar> params_;
auto params() const -> Params const &
Definition: complex.h:128
static auto addition(Eigen::Vector< Scalar, 2 > const &lhs_real_imag, Eigen::Vector< TCompatibleScalar, 2 > const &rhs_real_imag) -> ParamsReturn< TCompatibleScalar >
Definition: complex.h:56
TScalar Scalar
Definition: complex.h:19
auto norm() const -> Scalar
Definition: complex.h:159
Eigen::Vector< typename Eigen::ScalarBinaryOpTraits< Scalar, TCompatibleScalar >::ReturnType, 2 > ParamsReturn
Definition: complex.h:29
static auto norm(Eigen::Vector< Scalar, 2 > const &real_imag) -> Scalar
Definition: complex.h:86
static auto squaredNorm(Eigen::Vector< Scalar, 2 > const &real_imag) -> Scalar
Definition: complex.h:91
Image MutImage, owning images types.
Definition: num_diff.h:20
auto imag() const -> Scalar const &
Definition: complex.h:136
TScalar Scalar
Definition: complex.h:99
void setParams(Params const ¶ms)
Definition: complex.h:130
auto squaredNorm() const -> Scalar
Definition: complex.h:163
static constexpr bool kIsCommutative
Definition: complex.h:21
static auto zero() -> Complex
Definition: complex.h:118
static auto invalidParamsExamples() -> std::vector< Params >
Definition: complex.h:49
Complex()
Definition: complex.h:113
static constexpr int kNumParams
Definition: complex.h:20
static constexpr int kNumParams
Definition: complex.h:102
auto real() const -> Scalar const &
Definition: complex.h:133
static auto zero() -> Eigen::Vector< Scalar, 2 >
Definition: complex.h:32
auto inverse() const -> Complex
Definition: complex.h:155
Eigen::Vector< Scalar, kNumParams > Params
Definition: complex.h:23
static auto fromParams(Params const ¶ms) -> Complex
Definition: complex.h:122
auto operator+(Complex< TCompatibleScalar > const &other) const -> ComplexReturn< TCompatibleScalar >
Definition: complex.h:139
Eigen::Vector< Scalar, kNumParams > Params
Definition: complex.h:104
auto real() -> Scalar &
Definition: complex.h:132
static auto one() -> Complex
Definition: complex.h:120
static auto inverse(Eigen::Vector< Scalar, 2 > const &real_imag) -> Eigen::Vector< Scalar, 2 >
Definition: complex.h:81
auto imag() -> Scalar &
Definition: complex.h:135
auto conjugate() const -> Complex
Definition: complex.h:151
auto operator=(Complex const &) -> Complex &=default
static auto multiplication(Eigen::Vector< Scalar, 2 > const &lhs_real_imag, Eigen::Vector< TCompatibleScalar, 2 > const &rhs_real_imag) -> ParamsReturn< TCompatibleScalar >
Definition: complex.h:64
static auto one() -> Eigen::Vector< Scalar, 2 >
Definition: complex.h:36
auto operator*(Complex< TCompatibleScalar > const &other) const -> ComplexReturn< TCompatibleScalar >
Definition: complex.h:145
static auto paramsExamples() -> std::vector< Params >
Definition: complex.h:45
Scalar Imag
Definition: complex.h:100
Definition: group_accessors.h:15
static auto areParamsValid(Params const &) -> sophus::Expected< Success >
Definition: complex.h:40
static auto conjugate(Eigen::Vector< Scalar, 2 > const &a) -> Eigen::Vector< Scalar, 2 >
Definition: complex.h:76