gtsam 4.1.1
gtsam
StereoPoint2.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
19#pragma once
20
22#include <gtsam/base/VectorSpace.h>
23#include <boost/serialization/nvp.hpp>
24
25namespace gtsam {
26
32class GTSAM_EXPORT StereoPoint2 {
33private:
34
35 double uL_, uR_, v_;
36
37public:
38 enum { dimension = 3 };
41
44 uL_(0), uR_(0), v_(0) {
45 }
46
48 StereoPoint2(double uL, double uR, double v) :
49 uL_(uL), uR_(uR), v_(v) {
50 }
51
53 explicit StereoPoint2(const Vector3& v) :
54 uL_(v(0)), uR_(v(1)), v_(v(2)) {}
55
59
61 void print(const std::string& s = "") const;
62
64 bool equals(const StereoPoint2& q, double tol = 1e-9) const {
65 return (std::abs(uL_ - q.uL_) < tol && std::abs(uR_ - q.uR_) < tol
66 && std::abs(v_ - q.v_) < tol);
67 }
68
72
74 inline static StereoPoint2 identity() {
75 return StereoPoint2();
76 }
77
80 return StereoPoint2(-uL_, -uR_, -v_);
81 }
82
84 inline StereoPoint2 operator +(const Vector3& v) const {
85 return StereoPoint2(uL_ + v[0], uR_ + v[1], v_ + v[2]);
86 }
87
89 inline StereoPoint2 operator +(const StereoPoint2& b) const {
90 return StereoPoint2(uL_ + b.uL_, uR_ + b.uR_, v_ + b.v_);
91 }
92
94 inline StereoPoint2 operator -(const StereoPoint2& b) const {
95 return StereoPoint2(uL_ - b.uL_, uR_ - b.uR_, v_ - b.v_);
96 }
97
101
103 inline bool operator ==(const StereoPoint2& q) const {return uL_== q.uL_ && uR_==q.uR_ && v_ == q.v_;}
104
106 inline double uL() const {return uL_;}
107
109 inline double uR() const {return uR_;}
110
112 inline double v() const {return v_;}
113
115 Vector3 vector() const {
116 return Vector3(uL_, uR_, v_);
117 }
118
120 Point2 point2() const {
121 return Point2(uL_, v_);
122 }
123
125 Point2 right() const {
126 return Point2(uR_, v_);
127 }
128
131 inline StereoPoint2 inverse() const { return StereoPoint2()- (*this);}
132 inline StereoPoint2 compose(const StereoPoint2& p1) const { return *this + p1;}
133 inline StereoPoint2 between(const StereoPoint2& p2) const { return p2 - *this; }
134 inline Vector localCoordinates(const StereoPoint2& t2) const { return Logmap(between(t2)); }
135 inline StereoPoint2 retract(const Vector& v) const { return compose(Expmap(v)); }
136 static inline Vector Logmap(const StereoPoint2& p) { return p.vector(); }
137 static inline StereoPoint2 Expmap(const Vector& d) { return StereoPoint2(d(0), d(1), d(2)); }
139
141 GTSAM_EXPORT friend std::ostream &operator<<(std::ostream &os, const StereoPoint2& p);
142
143private:
144
148
150 friend class boost::serialization::access;
151 template<class ARCHIVE>
152 void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
153 ar & BOOST_SERIALIZATION_NVP(uL_);
154 ar & BOOST_SERIALIZATION_NVP(uR_);
155 ar & BOOST_SERIALIZATION_NVP(v_);
156 }
157
159
160};
161
162typedef std::vector<StereoPoint2> StereoPoint2Vector;
163
164template<>
165struct traits<StereoPoint2> : public internal::VectorSpace<StereoPoint2> {};
166
167template<>
168struct traits<const StereoPoint2> : public internal::VectorSpace<StereoPoint2> {};
169}
T between(const T &t1, const T &t2)
binary functions
Definition: lieProxies.h:36
2D Point
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:112
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
BinarySumExpression< T > operator+(const Expression< T > &e1, const Expression< T > &e2)
Construct an expression that sums two input expressions of the same type T The type T must be a vecto...
Definition: Expression.h:272
Vector2 Point2
As of GTSAM 4, in order to make GTSAM more lean, it is now possible to just typedef Point2 to Vector2...
Definition: Point2.h:27
BinarySumExpression< T > operator-(const Expression< T > &e1, const Expression< T > &e2)
Construct an expression that subtracts one expression from another.
Definition: Expression.h:278
bool operator==(const Matrix &A, const Matrix &B)
equality is just equal_with_abs_tol 1e-9
Definition: Matrix.h:103
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
VectorSpace provides both Testable and VectorSpaceTraits.
Definition: VectorSpace.h:207
Definition: StereoPoint2.h:32
static StereoPoint2 identity()
identity
Definition: StereoPoint2.h:74
double uR() const
get uR
Definition: StereoPoint2.h:109
StereoPoint2(const Vector3 &v)
construct from 3D vector
Definition: StereoPoint2.h:53
Point2 right() const
convenient function to get a Point2 from the right image
Definition: StereoPoint2.h:125
Vector3 vector() const
convert to vector
Definition: StereoPoint2.h:115
double uL() const
get uL
Definition: StereoPoint2.h:106
StereoPoint2(double uL, double uR, double v)
constructor
Definition: StereoPoint2.h:48
bool equals(const StereoPoint2 &q, double tol=1e-9) const
equals
Definition: StereoPoint2.h:64
StereoPoint2 operator-() const
inverse
Definition: StereoPoint2.h:79
double v() const
get v
Definition: StereoPoint2.h:112
Point2 point2() const
convenient function to get a Point2 from the left image
Definition: StereoPoint2.h:120
StereoPoint2()
default constructor
Definition: StereoPoint2.h:43