gtsam 4.2.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>
21
22namespace gtsam {
23
24class Line3;
25
34GTSAM_EXPORT Line3 transformTo(const Pose3 &wTc, const Line3 &wL,
35 OptionalJacobian<4, 6> Dpose = boost::none,
36 OptionalJacobian<4, 4> Dline = boost::none);
37
38
44class GTSAM_EXPORT Line3 {
45 private:
46 Rot3 R_; // Rotation of line about x and y in world frame
47 double a_, b_; // Intersection of line with the world x-y plane rotated by R_
48 // Also the closest point on line to origin
49 public:
50 enum { dimension = 4 };
51
54 a_(0), b_(0) {}
55
57 Line3(const Rot3 &R, const double a, const double b) :
58 R_(R), a_(a), b_(b) {}
59
71 Line3 retract(const Vector4 &v,
72 OptionalJacobian<4, 4> Dp = boost::none,
73 OptionalJacobian<4, 4> Dv = boost::none) const;
74
84 Vector4 localCoordinates(const Line3 &q,
85 OptionalJacobian<4, 4> Dp = boost::none,
86 OptionalJacobian<4, 4> Dq = boost::none) const;
87
92 void print(const std::string &s = "") const;
93
100 bool equals(const Line3 &l2, double tol = 10e-9) const;
101
108 Unit3 project(OptionalJacobian<2, 4> Dline = boost::none) const;
109
118 Point3 point(double distance = 0) const;
119
123 inline Rot3 R() const {
124 return R_;
125 }
126
130 inline double a() const {
131 return a_;
132 }
133
137 inline double b() const {
138 return b_;
139 }
140
149 friend Line3 transformTo(const Pose3 &wTc, const Line3 &wL,
152};
153
154template<>
155struct traits<Line3> : public internal::Manifold<Line3> {};
156
157template<>
158struct traits<const Line3> : public internal::Manifold<Line3> {};
159}
3D rotation represented as a rotation matrix or quaternion
3D Pose
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:156
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:36
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
Point2_ project(const Point3_ &p_cam)
Expression version of PinholeBase::Project.
Definition: expressions.h:131
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Both ManifoldTraits and Testable.
Definition: Manifold.h:120
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition: OptionalJacobian.h:41
Template to create a binary predicate.
Definition: Testable.h:111
A 3D line (R,a,b) : (Rot3,Scalar,Scalar)
Definition: Line3.h:44
Rot3 R() const
Return the rotation of the line.
Definition: Line3.h:123
Line3()
Default constructor is the Z axis.
Definition: Line3.h:53
Line3(const Rot3 &R, const double a, const double b)
Constructor for general line from (R, a, b)
Definition: Line3.h:57
double b() const
Return the y-coordinate of the intersection of the line with the xy plane.
Definition: Line3.h:137
double a() const
Return the x-coordinate of the intersection of the line with the xy plane.
Definition: Line3.h:130
A 3D pose (R,t) : (Rot3,Point3)
Definition: Pose3.h:37
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
Definition: Rot3.h:58
Represents a 3D point on a unit sphere.
Definition: Unit3.h:43