gtsam  4.1.0
gtsam
Line3.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
3  * Atlanta, Georgia 30332-0415
4  * All Rights Reserved
5  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
6  * See LICENSE for the license information
7  * -------------------------------------------------------------------------- */
8 
15 // \callgraph
16 
17 #pragma once
18 
19 #include <gtsam/geometry/Rot3.h>
20 #include <gtsam/geometry/Pose3.h>
21 
22 namespace gtsam {
23 
29 class Line3 {
30  private:
31  Rot3 R_; // Rotation of line about x and y in world frame
32  double a_, b_; // Intersection of line with the world x-y plane rotated by R_
33  // Also the closest point on line to origin
34  public:
35  enum { dimension = 4 };
36 
38  Line3() :
39  a_(0), b_(0) {}
40 
42  Line3(const Rot3 &R, const double a, const double b) :
43  R_(R), a_(a), b_(b) {}
44 
56  Line3 retract(const Vector4 &v,
57  OptionalJacobian<4, 4> Dp = boost::none,
58  OptionalJacobian<4, 4> Dv = boost::none) const;
59 
69  Vector4 localCoordinates(const Line3 &q,
70  OptionalJacobian<4, 4> Dp = boost::none,
71  OptionalJacobian<4, 4> Dq = boost::none) const;
72 
77  void print(const std::string &s = "") const;
78 
85  bool equals(const Line3 &l2, double tol = 10e-9) const;
86 
93  Unit3 project(OptionalJacobian<2, 4> Dline = boost::none) const;
94 
103  Point3 point(double distance = 0) const;
104 
113  friend Line3 transformTo(const Pose3 &wTc, const Line3 &wL,
115  OptionalJacobian<4, 4> Dline);
116 };
117 
126 Line3 transformTo(const Pose3 &wTc, const Line3 &wL,
127  OptionalJacobian<4, 6> Dpose = boost::none,
128  OptionalJacobian<4, 4> Dline = boost::none);
129 
130 template<>
131 struct traits<Line3> : public internal::Manifold<Line3> {};
132 
133 template<>
134 struct traits<const Line3> : public internal::Manifold<Line3> {};
135 }
gtsam::Line3::transformTo
friend Line3 transformTo(const Pose3 &wTc, const Line3 &wL, OptionalJacobian< 4, 6 > Dpose, OptionalJacobian< 4, 4 > Dline)
Transform a line from world to camera frame.
Definition: Line3.cpp:94
gtsam::OptionalJacobian
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition: OptionalJacobian.h:39
gtsam::traits
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
gtsam::Line3::project
Unit3 project(OptionalJacobian< 2, 4 > Dline=boost::none) const
Projecting a line to the image plane.
Definition: Line3.cpp:61
gtsam::Line3::print
void print(const std::string &s="") const
Print R, a, b.
Definition: Line3.cpp:49
Pose3.h
3D Pose
gtsam
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
gtsam::Line3::localCoordinates
Vector4 localCoordinates(const Line3 &q, OptionalJacobian< 4, 4 > Dp=boost::none, OptionalJacobian< 4, 4 > Dq=boost::none) const
The localCoordinates method is the inverse of retract and finds the difference between two lines in t...
Definition: Line3.cpp:27
gtsam::Rot3
Definition: Rot3.h:59
gtsam::Line3
Definition: Line3.h:29
gtsam::internal::Manifold
Both ManifoldTraits and Testable.
Definition: Manifold.h:120
gtsam::Unit3
Represents a 3D point on a unit sphere.
Definition: Unit3.h:42
gtsam::Pose3
Definition: Pose3.h:37
gtsam::transformTo
Line3 transformTo(const Pose3 &wTc, const Line3 &wL, OptionalJacobian< 4, 6 > Dpose, OptionalJacobian< 4, 4 > Dline)
Transform a line from world to camera frame.
Definition: Line3.cpp:94
gtsam::Point3
Vector3 Point3
As of GTSAM 4, in order to make GTSAM more lean, it is now possible to just typedef Point3 to Vector3...
Definition: Point3.h:35
gtsam::Line3::equals
bool equals(const Line3 &l2, double tol=10e-9) const
Check if two lines are equal.
Definition: Line3.cpp:55
gtsam::Line3::retract
Line3 retract(const Vector4 &v, OptionalJacobian< 4, 4 > Dp=boost::none, OptionalJacobian< 4, 4 > Dv=boost::none) const
The retract method maps from the tangent space back to the manifold.
Definition: Line3.cpp:5
gtsam::Line3::Line3
Line3()
Default constructor is the Z axis.
Definition: Line3.h:38
gtsam::Line3::Line3
Line3(const Rot3 &R, const double a, const double b)
Constructor for general line from (R, a, b)
Definition: Line3.h:42
Rot3.h
3D rotation represented as a rotation matrix or quaternion
gtsam::Line3::point
Point3 point(double distance=0) const
Returns point on the line that is at a certain distance starting from the point where the rotated XY ...
Definition: Line3.cpp:86