16 #include <Eigen/Dense> 34 Eigen::Vector3d u, v, w;
46 double D = a * c - b * b;
47 double sc, sN, sD = D;
48 double tc, tN, tD = D;
96 else if ((-d + b) > a)
105 sc = (fabs(sN) < 0.00000001 ? 0.0 : sN / sD);
106 tc = (fabs(tN) < 0.00000001 ? 0.0 : tN / tD);
109 const auto dP = (w + (sc * u) - (tc * v)).eval();
bool contains(const TPoint3D &point) const
Check whether a point is inside the segment.
void asVector(VECTORLIKE &v) const
Transformation into vector.
mrpt::serialization::CArchive & operator>>(mrpt::serialization::CArchive &in, CMatrixD::Ptr &pObj)
TPoint3D point1
origin point
This base provides a set of functions for maths stuff.
2D segment, consisting of two points.
3D segment, consisting of two points.
TPoint3D point2
final point
double length() const
Segment length.
bool operator<(const TSegment3D &s) const
double distance(const TPoint3D &point) const
Distance to point.
Virtual base class for "archives": classes abstracting I/O streams.
double getEpsilon()
Gets the value of the geometric epsilon (default = 1e-5)
mrpt::vision::TStereoCalibResults out
mrpt::serialization::CArchive & operator<<(mrpt::serialization::CArchive &s, const CVectorFloat &a)
double distance(const TPoint3D &point) const
Distance between the line and a point.
void generate2DObject(TSegment2D &s) const
Projection into 2D space, discarding the z.
double distance(const TPoint2D &p1, const TPoint2D &p2)
Gets the distance between two points in a 2D space.
3D line, represented by a base point and a director vector.