24 #include <gtsam/base/DerivedValue.h>
25 #include <boost/random/mersenne_twister.hpp>
26 #include <boost/optional.hpp>
35 typedef Eigen::Matrix<double,3,2> Matrix32;
38 mutable boost::optional<Matrix32> B_;
56 Unit3(
double x,
double y,
double z) :
62 static Unit3 FromPoint3(
const Point3& point, boost::optional<Matrix&> H =
66 static Unit3 Random(boost::mt19937 & rng);
74 void print(
const std::string& s = std::string())
const;
78 return p_.equals(s.p_, tol);
90 const Matrix32&
basis()
const;
96 const Point3&
point3(boost::optional<Matrix&> H = boost::none)
const {
108 Vector error(
const Unit3& q,
109 boost::optional<Matrix&> H = boost::none)
const;
112 double distance(
const Unit3& q,
113 boost::optional<Matrix&> H = boost::none)
const;
121 inline static size_t Dim() {
126 inline size_t dim()
const {
136 Unit3 retract(
const Vector& v)
const;
139 Vector localCoordinates(
const Unit3& s)
const;
149 friend class boost::serialization::access;
150 template<
class ARCHIVE>
151 void serialize(ARCHIVE & ar,
const unsigned int version) {
152 ar & boost::serialization::make_nvp(
"Unit3",
153 boost::serialization::base_object<Value>(*
this));
154 ar & BOOST_SERIALIZATION_NVP(p_);
155 ar & BOOST_SERIALIZATION_NVP(B_);
const Point3 & point3(boost::optional< Matrix & > H=boost::none) const
Return unit-norm Point3.
Definition: Unit3.h:96
friend Point3 operator*(double s, const Unit3 &d)
Return scaled direction as Point3.
Definition: Unit3.h:103
Unit3(const Point3 &p)
Construct from point.
Definition: Unit3.h:51
Unit3(double x, double y, double z)
Construct from x,y,z.
Definition: Unit3.h:56
static size_t Dim()
Dimensionality of tangent space = 2 DOF.
Definition: Unit3.h:121
void print(const Matrix &A, const string &s, ostream &stream)
print a matrix
Definition: Matrix.cpp:183
Represents a 3D point on a unit sphere.
Definition: Unit3.h:31
size_t dim() const
Dimensionality of tangent space = 2 DOF.
Definition: Unit3.h:126
Vector basis(size_t n, size_t i)
Create basis vector of dimension n, with one in spot i.
Definition: Vector.h:68
CoordinatesMode
Definition: Unit3.h:130
bool equals(const Unit3 &s, double tol=1e-9) const
The equals function with tolerance.
Definition: Unit3.h:77
Definition: DerivedValue.h:44
Use the exponential map to retract.
Definition: Unit3.h:131
Unit3()
Default constructor.
Definition: Unit3.h:46