< Allow square() to be also available under mrpt::math, which makes sense
Classes | |
class | mrpt::math::CPolygon |
A wrapper of a TPolygon2D class, implementing CSerializable. More... | |
class | mrpt::math::TPolygonWithPlane |
Slightly heavyweight type to speed-up calculations with polygons in 3D. More... | |
struct | mrpt::math::TPoint2D |
Lightweight 2D point. More... | |
struct | mrpt::math::TPose2D |
Lightweight 2D pose. More... | |
struct | mrpt::math::TPoint3Df |
Lightweight 3D point (float version). More... | |
struct | mrpt::math::TPoint3D |
Lightweight 3D point. More... | |
struct | mrpt::math::TPointXYZIu8 |
XYZ point (double) + Intensity(u8) More... | |
struct | mrpt::math::TPointXYZRGBu8 |
XYZ point (double) + RGB(u8) More... | |
struct | mrpt::math::TPointXYZfIu8 |
XYZ point (float) + Intensity(u8) More... | |
struct | mrpt::math::TPointXYZfRGBu8 |
XYZ point (float) + RGB(u8) More... | |
struct | mrpt::math::TPose3D |
Lightweight 3D pose (three spatial coordinates, plus three angular coordinates). More... | |
struct | mrpt::math::TPose3DQuat |
Lightweight 3D pose (three spatial coordinates, plus a quaternion ). More... | |
struct | mrpt::math::TSegment2D |
2D segment, consisting of two points. More... | |
struct | mrpt::math::TSegment3D |
3D segment, consisting of two points. More... | |
struct | mrpt::math::TLine2D |
2D line without bounds, represented by its equation ![]() | |
struct | mrpt::math::TLine3D |
3D line, represented by a base point and a director vector. More... | |
struct | mrpt::math::TPlane |
3D Plane, represented by its equation ![]() | |
class | mrpt::math::TPolygon2D |
2D polygon, inheriting from std::vector<TPoint2D>. More... | |
class | mrpt::math::TPolygon3D |
3D polygon, inheriting from std::vector<TPoint3D> More... | |
struct | mrpt::math::TObject2D |
Standard type for storing any lightweight 2D type. More... | |
struct | mrpt::math::TObject3D |
Standard object for storing any 3D lightweight object. More... | |
Typedefs | |
typedef TPlane | mrpt::math::TPlane3D |
Variables | |
double BASE_IMPEXP | mrpt::math::geometryEpsilon |
Global epsilon to overcome small precision errors. More... | |
struct BASE_IMPEXP | mrpt::math::TSegment3D |
struct BASE_IMPEXP | mrpt::math::TLine3D |
class BASE_IMPEXP | mrpt::math::TPolygon3D |
struct BASE_IMPEXP | mrpt::math::TObject3D |
const unsigned char | mrpt::math::GEOMETRIC_TYPE_POINT =0 |
Object type identifier for TPoint2D or TPoint3D. More... | |
const unsigned char | mrpt::math::GEOMETRIC_TYPE_SEGMENT =1 |
Object type identifier for TSegment2D or TSegment3D. More... | |
const unsigned char | mrpt::math::GEOMETRIC_TYPE_LINE =2 |
Object type identifier for TLine2D or TLine3D. More... | |
const unsigned char | mrpt::math::GEOMETRIC_TYPE_POLYGON =3 |
Object type identifier for TPolygon2D or TPolygon3D. More... | |
const unsigned char | mrpt::math::GEOMETRIC_TYPE_PLANE =4 |
Object type identifier for TPlane. More... | |
const unsigned char | mrpt::math::GEOMETRIC_TYPE_UNDEFINED =255 |
Object type identifier for empty TObject2D or TObject3D. More... | |
Simple intersection operations, relying basically on geometrical operations. | |
bool BASE_IMPEXP | mrpt::math::intersect (const TSegment3D &s1, const TSegment3D &s2, TObject3D &obj) |
Gets the intersection between two 3D segments. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TSegment3D &s1, const TPlane &p2, TObject3D &obj) |
Gets the intersection between a 3D segment and a plane. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TSegment3D &s1, const TLine3D &r2, TObject3D &obj) |
Gets the intersection between a 3D segment and a 3D line. More... | |
bool | mrpt::math::intersect (const TPlane &p1, const TSegment3D &s2, TObject3D &obj) |
Gets the intersection between a plane and a 3D segment. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPlane &p1, const TPlane &p2, TObject3D &obj) |
Gets the intersection between two planes. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPlane &p1, const TLine3D &p2, TObject3D &obj) |
Gets the intersection between a plane and a 3D line. More... | |
bool | mrpt::math::intersect (const TLine3D &r1, const TSegment3D &s2, TObject3D &obj) |
Gets the intersection between a 3D line and a 3D segment. More... | |
bool | mrpt::math::intersect (const TLine3D &r1, const TPlane &p2, TObject3D &obj) |
Gets the intersection between a 3D line and a plane. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TLine3D &r1, const TLine3D &r2, TObject3D &obj) |
Gets the intersection between two 3D lines. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TLine2D &r1, const TLine2D &r2, TObject2D &obj) |
Gets the intersection between two 2D lines. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TLine2D &r1, const TSegment2D &s2, TObject2D &obj) |
Gets the intersection between a 2D line and a 2D segment. More... | |
bool | mrpt::math::intersect (const TSegment2D &s1, const TLine2D &r2, TObject2D &obj) |
Gets the intersection between a 2D line and a 2D segment. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TSegment2D &s1, const TSegment2D &s2, TObject2D &obj) |
Gets the intersection between two 2D segments. More... | |
Angle retrieval methods. Methods which use TSegments will automatically use TLines' implicit constructors. | |
double BASE_IMPEXP | mrpt::math::getAngle (const TPlane &p1, const TPlane &p2) |
Computes the angle between two planes. More... | |
double BASE_IMPEXP | mrpt::math::getAngle (const TPlane &p1, const TLine3D &r2) |
Computes the angle between a plane and a 3D line or segment (implicit constructor will be used if passing a segment instead of a line). More... | |
double | mrpt::math::getAngle (const TLine3D &r1, const TPlane &p2) |
Computes the angle between a 3D line or segment and a plane (implicit constructor will be used if passing a segment instead of a line). More... | |
double BASE_IMPEXP | mrpt::math::getAngle (const TLine3D &r1, const TLine3D &r2) |
Computes the angle between two 3D lines or segments (implicit constructor will be used if passing a segment instead of a line). More... | |
double BASE_IMPEXP | mrpt::math::getAngle (const TLine2D &r1, const TLine2D &r2) |
Computes the angle between two 2D lines or segments (implicit constructor will be used if passing a segment instead of a line). More... | |
Creation of lines from poses. | |
void BASE_IMPEXP | mrpt::math::createFromPoseX (const mrpt::poses::CPose3D &p, TLine3D &r) |
Gets a 3D line corresponding to the X axis in a given pose. More... | |
void BASE_IMPEXP | mrpt::math::createFromPoseY (const mrpt::poses::CPose3D &p, TLine3D &r) |
Gets a 3D line corresponding to the Y axis in a given pose. More... | |
void BASE_IMPEXP | mrpt::math::createFromPoseZ (const mrpt::poses::CPose3D &p, TLine3D &r) |
Gets a 3D line corresponding to the Z axis in a given pose. More... | |
void BASE_IMPEXP | mrpt::math::createFromPoseAndVector (const mrpt::poses::CPose3D &p, const double(&vector)[3], TLine3D &r) |
Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose. More... | |
void BASE_IMPEXP | mrpt::math::createFromPoseX (const TPose2D &p, TLine2D &r) |
Gets a 2D line corresponding to the X axis in a given pose. More... | |
void BASE_IMPEXP | mrpt::math::createFromPoseY (const TPose2D &p, TLine2D &r) |
Gets a 2D line corresponding to the Y axis in a given pose. More... | |
void BASE_IMPEXP | mrpt::math::createFromPoseAndVector (const TPose2D &p, const double(&vector)[2], TLine2D &r) |
Gets a 2D line corresponding to any arbitrary vector, in the base given the given pose. More... | |
Other line or plane related methods. | |
bool BASE_IMPEXP | mrpt::math::conformAPlane (const std::vector< TPoint3D > &points) |
Checks whether this polygon or set of points acceptably fits a plane. More... | |
bool BASE_IMPEXP | mrpt::math::conformAPlane (const std::vector< TPoint3D > &points, TPlane &p) |
Checks whether this polygon or set of points acceptably fits a plane, and if it's the case returns it in the second argument. More... | |
bool BASE_IMPEXP | mrpt::math::areAligned (const std::vector< TPoint2D > &points) |
Checks whether this set of points acceptably fits a 2D line. More... | |
bool BASE_IMPEXP | mrpt::math::areAligned (const std::vector< TPoint2D > &points, TLine2D &r) |
Checks whether this set of points acceptably fits a 2D line, and if it's the case returns it in the second argument. More... | |
bool BASE_IMPEXP | mrpt::math::areAligned (const std::vector< TPoint3D > &points) |
Checks whether this set of points acceptably fits a 3D line. More... | |
bool BASE_IMPEXP | mrpt::math::areAligned (const std::vector< TPoint3D > &points, TLine3D &r) |
Checks whether this set of points acceptably fits a 3D line, and if it's the case returns it in the second argument. More... | |
Projections | |
void | mrpt::math::project3D (const TPoint3D &point, const mrpt::poses::CPose3D &newXYpose, TPoint3D &newPoint) |
Uses the given pose 3D to project a point into a new base. More... | |
void | mrpt::math::project3D (const TSegment3D &segment, const mrpt::poses::CPose3D &newXYpose, TSegment3D &newSegment) |
Uses the given pose 3D to project a segment into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project3D (const TLine3D &line, const mrpt::poses::CPose3D &newXYpose, TLine3D &newLine) |
Uses the given pose 3D to project a line into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project3D (const TPlane &plane, const mrpt::poses::CPose3D &newXYpose, TPlane &newPlane) |
Uses the given pose 3D to project a plane into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project3D (const TPolygon3D &polygon, const mrpt::poses::CPose3D &newXYpose, TPolygon3D &newPolygon) |
Uses the given pose 3D to project a polygon into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project3D (const TObject3D &object, const mrpt::poses::CPose3D &newXYPose, TObject3D &newObject) |
Uses the given pose 3D to project any 3D object into a new base. More... | |
template<class T > | |
void | mrpt::math::project3D (const T &obj, const TPlane &newXYPlane, T &newObj) |
Projects any 3D object into the plane's base, using its inverse pose. More... | |
template<class T > | |
void | mrpt::math::project3D (const T &obj, const TPlane &newXYPlane, const TPoint3D &newOrigin, T &newObj) |
Projects any 3D object into the plane's base, using its inverse pose and forcing the position of the new coordinates origin. More... | |
template<class T > | |
void | mrpt::math::project3D (const std::vector< T > &objs, const mrpt::poses::CPose3D &newXYpose, std::vector< T > &newObjs) |
Projects a set of 3D objects into the plane's base. More... | |
void BASE_IMPEXP | mrpt::math::project2D (const TPoint2D &point, const mrpt::poses::CPose2D &newXpose, TPoint2D &newPoint) |
Uses the given pose 2D to project a point into a new base. More... | |
void | mrpt::math::project2D (const TSegment2D &segment, const mrpt::poses::CPose2D &newXpose, TSegment2D &newSegment) |
Uses the given pose 2D to project a segment into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project2D (const TLine2D &line, const mrpt::poses::CPose2D &newXpose, TLine2D &newLine) |
Uses the given pose 2D to project a line into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project2D (const TPolygon2D &polygon, const mrpt::poses::CPose2D &newXpose, TPolygon2D &newPolygon) |
Uses the given pose 2D to project a polygon into a new base. More... | |
void BASE_IMPEXP | mrpt::math::project2D (const TObject2D &object, const mrpt::poses::CPose2D &newXpose, TObject2D &newObject) |
Uses the given pose 2D to project any 2D object into a new base. More... | |
template<class T , class CPOSE2D > | |
void | mrpt::math::project2D (const T &obj, const TLine2D &newXLine, T &newObj) |
Projects any 2D object into the line's base, using its inverse pose. More... | |
template<class T , class CPOSE2D > | |
void | mrpt::math::project2D (const T &obj, const TLine2D &newXLine, const TPoint2D &newOrigin, T &newObj) |
Projects any 2D object into the line's base, using its inverse pose and forcing the position of the new coordinate origin. More... | |
template<class T > | |
void | mrpt::math::project2D (const std::vector< T > &objs, const mrpt::poses::CPose2D &newXpose, std::vector< T > &newObjs) |
Projects a set of 2D objects into the line's base. More... | |
Polygon intersections. These operations rely more on spatial reasoning than in raw numerical operations. | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon2D &p1, const TSegment2D &s2, TObject2D &obj) |
Gets the intersection between a 2D polygon and a 2D segment. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon2D &p1, const TLine2D &r2, TObject2D &obj) |
Gets the intersection between a 2D polygon and a 2D line. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon2D &p1, const TPolygon2D &p2, TObject2D &obj) |
Gets the intersection between two 2D polygons. More... | |
bool | mrpt::math::intersect (const TSegment2D &s1, const TPolygon2D &p2, TObject2D &obj) |
Gets the intersection between a 2D segment and a 2D polygon. More... | |
bool | mrpt::math::intersect (const TLine2D &r1, const TPolygon2D &p2, TObject2D &obj) |
Gets the intersection between a 2D line and a 2D polygon. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon3D &p1, const TSegment3D &s2, TObject3D &obj) |
Gets the intersection between a 3D polygon and a 3D segment. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon3D &p1, const TLine3D &r2, TObject3D &obj) |
Gets the intersection between a 3D polygon and a 3D line. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon3D &p1, const TPlane &p2, TObject3D &obj) |
Gets the intersection between a 3D polygon and a plane. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TPolygon3D &p1, const TPolygon3D &p2, TObject3D &obj) |
Gets the intersection between two 3D polygons. More... | |
bool | mrpt::math::intersect (const TSegment3D &s1, const TPolygon3D &p2, TObject3D &obj) |
Gets the intersection between a 3D segment and a 3D polygon. More... | |
bool | mrpt::math::intersect (const TLine3D &r1, const TPolygon3D &p2, TObject3D &obj) |
Gets the intersection between a 3D line and a 3D polygon. More... | |
bool | mrpt::math::intersect (const TPlane &p1, const TPolygon3D &p2, TObject3D &obj) |
Gets the intersection between a plane and a 3D polygon. More... | |
size_t BASE_IMPEXP | mrpt::math::intersect (const std::vector< TPolygon3D > &v1, const std::vector< TPolygon3D > &v2, CSparseMatrixTemplate< TObject3D > &objs) |
Gets the intersection between two sets of 3D polygons. More... | |
size_t BASE_IMPEXP | mrpt::math::intersect (const std::vector< TPolygon3D > &v1, const std::vector< TPolygon3D > &v2, std::vector< TObject3D > &objs) |
Gets the intersection between two sets of 3D polygons. More... | |
Other intersections | |
template<class T , class U , class O > | |
size_t | mrpt::math::intersect (const std::vector< T > &v1, const std::vector< U > &v2, CSparseMatrixTemplate< O > &objs) |
Gets the intersection between vectors of geometric objects and returns it in a sparse matrix of either TObject2D or TObject3D. More... | |
template<class T , class U , class O > | |
size_t | mrpt::math::intersect (const std::vector< T > &v1, const std::vector< U > &v2, std::vector< O > objs) |
Gets the intersection between vectors of geometric objects and returns it in a vector of either TObject2D or TObject3D. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TObject2D &o1, const TObject2D &o2, TObject2D &obj) |
Gets the intersection between any pair of 2D objects. More... | |
bool BASE_IMPEXP | mrpt::math::intersect (const TObject3D &o1, const TObject3D &o2, TObject3D &obj) |
Gets the intersection between any pair of 3D objects. More... | |
Distances | |
double BASE_IMPEXP | mrpt::math::distance (const TPoint2D &p1, const TPoint2D &p2) |
Gets the distance between two points in a 2D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPoint3D &p1, const TPoint3D &p2) |
Gets the distance between two points in a 3D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TLine2D &r1, const TLine2D &r2) |
Gets the distance between two lines in a 2D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TLine3D &r1, const TLine3D &r2) |
Gets the distance between two lines in a 3D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPlane &p1, const TPlane &p2) |
Gets the distance between two planes. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon2D &p1, const TPolygon2D &p2) |
Gets the distance between two polygons in a 2D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon2D &p1, const TSegment2D &s2) |
Gets the distance between a polygon and a segment in a 2D space. More... | |
double | mrpt::math::distance (const TSegment2D &s1, const TPolygon2D &p2) |
Gets the distance between a segment and a polygon in a 2D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon2D &p1, const TLine2D &l2) |
Gets the distance between a polygon and a line in a 2D space. More... | |
double | mrpt::math::distance (const TLine2D &l1, const TPolygon2D &p2) |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon3D &p1, const TPolygon3D &p2) |
Gets the distance between two polygons in a 3D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon3D &p1, const TSegment3D &s2) |
Gets the distance between a polygon and a segment in a 3D space. More... | |
double | mrpt::math::distance (const TSegment3D &s1, const TPolygon3D &p2) |
Gets the distance between a segment and a polygon in a 3D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon3D &p1, const TLine3D &l2) |
Gets the distance between a polygon and a line in a 3D space. More... | |
double | mrpt::math::distance (const TLine3D &l1, const TPolygon3D &p2) |
Gets the distance between a line and a polygon in a 3D space. More... | |
double BASE_IMPEXP | mrpt::math::distance (const TPolygon3D &po, const TPlane &pl) |
Gets the distance between a polygon and a plane. More... | |
double | mrpt::math::distance (const TPlane &pl, const TPolygon3D &po) |
Gets the distance between a plane and a polygon. More... | |
Bound checkers | |
void BASE_IMPEXP | mrpt::math::getRectangleBounds (const std::vector< TPoint2D > &poly, TPoint2D &pMin, TPoint2D &pMax) |
Gets the rectangular bounds of a 2D polygon or set of 2D points. More... | |
void BASE_IMPEXP | mrpt::math::getPrismBounds (const std::vector< TPoint3D > &poly, TPoint3D &pMin, TPoint3D &pMax) |
Gets the prism bounds of a 3D polygon or set of 3D points. More... | |
Creation of planes from poses | |
void BASE_IMPEXP | mrpt::math::createPlaneFromPoseXY (const mrpt::poses::CPose3D &pose, TPlane &plane) |
Given a pose, creates a plane orthogonal to its Z vector. More... | |
void BASE_IMPEXP | mrpt::math::createPlaneFromPoseXZ (const mrpt::poses::CPose3D &pose, TPlane &plane) |
Given a pose, creates a plane orthogonal to its Y vector. More... | |
void BASE_IMPEXP | mrpt::math::createPlaneFromPoseYZ (const mrpt::poses::CPose3D &pose, TPlane &plane) |
Given a pose, creates a plane orthogonal to its X vector. More... | |
void BASE_IMPEXP | mrpt::math::createPlaneFromPoseAndNormal (const mrpt::poses::CPose3D &pose, const double(&normal)[3], TPlane &plane) |
Given a pose and any vector, creates a plane orthogonal to that vector in the pose's coordinates. More... | |
void BASE_IMPEXP | mrpt::math::generateAxisBaseFromDirectionAndAxis (const double(&vec)[3], char coord, CMatrixDouble &matrix) |
Creates a rotation matrix so that the coordinate given (0 for x, 1 for y, 2 for z) corresponds to the vector. More... | |
Linear regression methods | |
double BASE_IMPEXP | mrpt::math::getRegressionLine (const std::vector< TPoint2D > &points, TLine2D &line) |
Using eigenvalues, gets the best fitting line for a set of 2D points. More... | |
double BASE_IMPEXP | mrpt::math::getRegressionLine (const std::vector< TPoint3D > &points, TLine3D &line) |
Using eigenvalues, gets the best fitting line for a set of 3D points. More... | |
double BASE_IMPEXP | mrpt::math::getRegressionPlane (const std::vector< TPoint3D > &points, TPlane &plane) |
Using eigenvalues, gets the best fitting plane for a set of 3D points. More... | |
Miscellaneous Geometry methods | |
void BASE_IMPEXP | mrpt::math::assemblePolygons (const std::vector< TSegment3D > &segms, std::vector< TPolygon3D > &polys) |
Tries to assemble a set of segments into a set of closed polygons. More... | |
void BASE_IMPEXP | mrpt::math::assemblePolygons (const std::vector< TSegment3D > &segms, std::vector< TPolygon3D > &polys, std::vector< TSegment3D > &remainder) |
Tries to assemble a set of segments into a set of closed polygons, returning the unused segments as another out parameter. More... | |
void BASE_IMPEXP | mrpt::math::assemblePolygons (const std::vector< TObject3D > &objs, std::vector< TPolygon3D > &polys) |
Extracts all the polygons, including those formed from segments, from the set of objects. More... | |
void BASE_IMPEXP | mrpt::math::assemblePolygons (const std::vector< TObject3D > &objs, std::vector< TPolygon3D > &polys, std::vector< TObject3D > &remainder) |
Extracts all the polygons, including those formed from segments, from the set of objects. More... | |
void BASE_IMPEXP | mrpt::math::assemblePolygons (const std::vector< TObject3D > &objs, std::vector< TPolygon3D > &polys, std::vector< TSegment3D > &remainder1, std::vector< TObject3D > &remainder2) |
Extracts all the polygons, including those formed from segments, from the set of objects. More... | |
void | mrpt::math::setEpsilon (double nE) |
Changes the value of the geometric epsilon. More... | |
double | mrpt::math::getEpsilon () |
Gets the value of the geometric epsilon. More... | |
bool BASE_IMPEXP | mrpt::math::splitInConvexComponents (const TPolygon2D &poly, vector< TPolygon2D > &components) |
Splits a 2D polygon into convex components. More... | |
bool BASE_IMPEXP | mrpt::math::splitInConvexComponents (const TPolygon3D &poly, vector< TPolygon3D > &components) |
Splits a 3D polygon into convex components. More... | |
void BASE_IMPEXP | mrpt::math::getSegmentBisector (const TSegment2D &sgm, TLine2D &bis) |
Gets the bisector of a 2D segment. More... | |
void BASE_IMPEXP | mrpt::math::getSegmentBisector (const TSegment3D &sgm, TPlane &bis) |
Gets the bisector of a 3D segment. More... | |
void BASE_IMPEXP | mrpt::math::getAngleBisector (const TLine2D &l1, const TLine2D &l2, TLine2D &bis) |
Gets the bisector of two lines or segments (implicit constructor will be used if necessary) More... | |
void BASE_IMPEXP | mrpt::math::getAngleBisector (const TLine3D &l1, const TLine3D &l2, TLine3D &bis) |
Gets the bisector of two lines or segments (implicit constructor will be used if necessary) More... | |
bool BASE_IMPEXP | mrpt::math::traceRay (const vector< TPolygonWithPlane > &vec, const mrpt::poses::CPose3D &pose, double &dist) |
Fast ray tracing method using polygons' properties. More... | |
bool | mrpt::math::traceRay (const vector< TPolygon3D > &vec, const mrpt::poses::CPose3D &pose, double &dist) |
Fast ray tracing method using polygons' properties. More... | |
template<class T , class U , class V > | |
void | mrpt::math::crossProduct3D (const T &v0, const U &v1, V &vOut) |
Computes the cross product of two 3D vectors, returning a vector normal to both. More... | |
template<class T > | |
void | mrpt::math::crossProduct3D (const std::vector< T > &v0, const std::vector< T > &v1, std::vector< T > &v_out) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<class VEC1 , class VEC2 > | |
Eigen::Matrix< double, 3, 1 > | mrpt::math::crossProduct3D (const VEC1 &v0, const VEC2 &v1) |
template<class VECTOR , class MATRIX > | |
void | mrpt::math::skew_symmetric3 (const VECTOR &v, MATRIX &M) |
Computes the 3x3 skew symmetric matrix from a 3-vector or 3-array: More... | |
template<class VECTOR > | |
mrpt::math::CMatrixDouble33 | mrpt::math::skew_symmetric3 (const VECTOR &v) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<class VECTOR , class MATRIX > | |
void | mrpt::math::skew_symmetric3_neg (const VECTOR &v, MATRIX &M) |
Computes the negative version of a 3x3 skew symmetric matrix from a 3-vector or 3-array: More... | |
template<class VECTOR > | |
mrpt::math::CMatrixDouble33 | mrpt::math::skew_symmetric3_neg (const VECTOR &v) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<class T , class U > | |
bool | mrpt::math::vectorsAreParallel2D (const T &v1, const U &v2) |
Returns true if two 2D vectors are parallel. More... | |
template<class T , class U > | |
bool | mrpt::math::vectorsAreParallel3D (const T &v1, const U &v2) |
Returns true if two 3D vectors are parallel. More... | |
double BASE_IMPEXP | mrpt::math::minimumDistanceFromPointToSegment (const double &Px, const double &Py, const double &x1, const double &y1, const double &x2, const double &y2, double &out_x, double &out_y) |
Computes the closest point from a given point to a segment, and returns that minimum distance. More... | |
double BASE_IMPEXP | mrpt::math::minimumDistanceFromPointToSegment (const double &Px, const double &Py, const double &x1, const double &y1, const double &x2, const double &y2, float &out_x, float &out_y) |
Computes the closest point from a given point to a segment, and returns that minimum distance. More... | |
void BASE_IMPEXP | mrpt::math::closestFromPointToSegment (const double &Px, const double &Py, const double &x1, const double &y1, const double &x2, const double &y2, double &out_x, double &out_y) |
Computes the closest point from a given point to a segment. More... | |
void BASE_IMPEXP | mrpt::math::closestFromPointToLine (const double &Px, const double &Py, const double &x1, const double &y1, const double &x2, const double &y2, double &out_x, double &out_y) |
Computes the closest point from a given point to a (infinite) line. More... | |
double BASE_IMPEXP | mrpt::math::closestSquareDistanceFromPointToLine (const double &Px, const double &Py, const double &x1, const double &y1, const double &x2, const double &y2) |
Returns the square distance from a point to a line. More... | |
template<typename T > | |
T | mrpt::math::distanceBetweenPoints (const T x1, const T y1, const T x2, const T y2) |
Returns the distance between 2 points in 2D. More... | |
template<typename T > | |
T | mrpt::math::distanceBetweenPoints (const T x1, const T y1, const T z1, const T x2, const T y2, const T z2) |
Returns the distance between 2 points in 3D. More... | |
template<typename T > | |
T | mrpt::math::distanceSqrBetweenPoints (const T x1, const T y1, const T x2, const T y2) |
Returns the square distance between 2 points in 2D. More... | |
template<typename T > | |
T | mrpt::math::distanceSqrBetweenPoints (const T x1, const T y1, const T z1, const T x2, const T y2, const T z2) |
Returns the square distance between 2 points in 3D. More... | |
bool BASE_IMPEXP | mrpt::math::SegmentsIntersection (const double &x1, const double &y1, const double &x2, const double &y2, const double &x3, const double &y3, const double &x4, const double &y4, double &ix, double &iy) |
Returns the intersection point, and if it exists, between two segments. More... | |
bool BASE_IMPEXP | mrpt::math::SegmentsIntersection (const double &x1, const double &y1, const double &x2, const double &y2, const double &x3, const double &y3, const double &x4, const double &y4, float &ix, float &iy) |
Returns the intersection point, and if it exists, between two segments. More... | |
bool BASE_IMPEXP | mrpt::math::pointIntoPolygon2D (const double &px, const double &py, unsigned int polyEdges, const double *poly_xs, const double *poly_ys) |
Returns true if the 2D point (px,py) falls INTO the given polygon. More... | |
template<typename T > | |
bool | mrpt::math::pointIntoQuadrangle (T x, T y, T v1x, T v1y, T v2x, T v2y, T v3x, T v3y, T v4x, T v4y) |
Specialized method to check whether a point (x,y) falls into a quadrangle. More... | |
double BASE_IMPEXP | mrpt::math::distancePointToPolygon2D (const double &px, const double &py, unsigned int polyEdges, const double *poly_xs, const double *poly_ys) |
Returns the closest distance of a given 2D point to a polygon, or "0" if the point is INTO the polygon or its perimeter. More... | |
bool BASE_IMPEXP | mrpt::math::minDistBetweenLines (const double &p1_x, const double &p1_y, const double &p1_z, const double &p2_x, const double &p2_y, const double &p2_z, const double &p3_x, const double &p3_y, const double &p3_z, const double &p4_x, const double &p4_y, const double &p4_z, double &x, double &y, double &z, double &dist) |
Calculates the minimum distance between a pair of lines. More... | |
bool BASE_IMPEXP | mrpt::math::RectanglesIntersection (const double &R1_x_min, const double &R1_x_max, const double &R1_y_min, const double &R1_y_max, const double &R2_x_min, const double &R2_x_max, const double &R2_y_min, const double &R2_y_max, const double &R2_pose_x, const double &R2_pose_y, const double &R2_pose_phi) |
Returns whether two rotated rectangles intersect. More... | |
template<class T > | |
CMatrixTemplateNumeric< T > | mrpt::math::generateAxisBaseFromDirection (T dx, T dy, T dz) |
Computes an axis base (a set of three 3D normal vectors) with the given vector being the first of them. More... | |
template<typename VECTOR_LIKE , typename Precision , typename MATRIX_LIKE > | |
void | mrpt::math::rodrigues_so3_exp (const VECTOR_LIKE &w, const Precision A, const Precision B, MATRIX_LIKE &R) |
Compute a rotation exponential using the Rodrigues Formula. More... | |
SLERP (Spherical Linear Interpolation) functions | |
template<typename T > | |
void | mrpt::math::slerp (const CQuaternion< T > &q0, const CQuaternion< T > &q1, const double t, CQuaternion< T > &q) |
SLERP interpolation between two quaternions. More... | |
void BASE_IMPEXP | mrpt::math::slerp (const mrpt::poses::CPose3D &q0, const mrpt::poses::CPose3D &q1, const double t, mrpt::poses::CPose3D &p) |
SLERP interpolation between two 6D poses - like mrpt::math::slerp for quaternions, but interpolates the [X,Y,Z] coordinates as well. More... | |
void BASE_IMPEXP | mrpt::math::slerp (const mrpt::poses::CPose3DQuat &q0, const mrpt::poses::CPose3DQuat &q1, const double t, mrpt::poses::CPose3DQuat &p) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
typedef TPlane mrpt::math::TPlane3D |
Definition at line 975 of file lightweight_geom_data.h.
bool BASE_IMPEXP mrpt::math::areAligned | ( | const std::vector< TPoint2D > & | points | ) |
Checks whether this set of points acceptably fits a 2D line.
bool BASE_IMPEXP mrpt::math::areAligned | ( | const std::vector< TPoint2D > & | points, |
TLine2D & | r | ||
) |
Checks whether this set of points acceptably fits a 2D line, and if it's the case returns it in the second argument.
bool BASE_IMPEXP mrpt::math::areAligned | ( | const std::vector< TPoint3D > & | points | ) |
Checks whether this set of points acceptably fits a 3D line.
bool BASE_IMPEXP mrpt::math::areAligned | ( | const std::vector< TPoint3D > & | points, |
TLine3D & | r | ||
) |
Checks whether this set of points acceptably fits a 3D line, and if it's the case returns it in the second argument.
void BASE_IMPEXP mrpt::math::assemblePolygons | ( | const std::vector< TObject3D > & | objs, |
std::vector< TPolygon3D > & | polys | ||
) |
Extracts all the polygons, including those formed from segments, from the set of objects.
void BASE_IMPEXP mrpt::math::assemblePolygons | ( | const std::vector< TObject3D > & | objs, |
std::vector< TPolygon3D > & | polys, | ||
std::vector< TObject3D > & | remainder | ||
) |
Extracts all the polygons, including those formed from segments, from the set of objects.
void BASE_IMPEXP mrpt::math::assemblePolygons | ( | const std::vector< TObject3D > & | objs, |
std::vector< TPolygon3D > & | polys, | ||
std::vector< TSegment3D > & | remainder1, | ||
std::vector< TObject3D > & | remainder2 | ||
) |
Extracts all the polygons, including those formed from segments, from the set of objects.
void BASE_IMPEXP mrpt::math::assemblePolygons | ( | const std::vector< TSegment3D > & | segms, |
std::vector< TPolygon3D > & | polys | ||
) |
Tries to assemble a set of segments into a set of closed polygons.
void BASE_IMPEXP mrpt::math::assemblePolygons | ( | const std::vector< TSegment3D > & | segms, |
std::vector< TPolygon3D > & | polys, | ||
std::vector< TSegment3D > & | remainder | ||
) |
Tries to assemble a set of segments into a set of closed polygons, returning the unused segments as another out parameter.
void BASE_IMPEXP mrpt::math::closestFromPointToLine | ( | const double & | Px, |
const double & | Py, | ||
const double & | x1, | ||
const double & | y1, | ||
const double & | x2, | ||
const double & | y2, | ||
double & | out_x, | ||
double & | out_y | ||
) |
Computes the closest point from a given point to a (infinite) line.
void BASE_IMPEXP mrpt::math::closestFromPointToSegment | ( | const double & | Px, |
const double & | Py, | ||
const double & | x1, | ||
const double & | y1, | ||
const double & | x2, | ||
const double & | y2, | ||
double & | out_x, | ||
double & | out_y | ||
) |
Computes the closest point from a given point to a segment.
double BASE_IMPEXP mrpt::math::closestSquareDistanceFromPointToLine | ( | const double & | Px, |
const double & | Py, | ||
const double & | x1, | ||
const double & | y1, | ||
const double & | x2, | ||
const double & | y2 | ||
) |
Returns the square distance from a point to a line.
bool BASE_IMPEXP mrpt::math::conformAPlane | ( | const std::vector< TPoint3D > & | points | ) |
Checks whether this polygon or set of points acceptably fits a plane.
bool BASE_IMPEXP mrpt::math::conformAPlane | ( | const std::vector< TPoint3D > & | points, |
TPlane & | p | ||
) |
Checks whether this polygon or set of points acceptably fits a plane, and if it's the case returns it in the second argument.
void BASE_IMPEXP mrpt::math::createFromPoseAndVector | ( | const mrpt::poses::CPose3D & | p, |
const double(&) | vector[3], | ||
TLine3D & | r | ||
) |
Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.
An implicit constructor is used if a TPose3D is given.
void BASE_IMPEXP mrpt::math::createFromPoseAndVector | ( | const TPose2D & | p, |
const double(&) | vector[2], | ||
TLine2D & | r | ||
) |
Gets a 2D line corresponding to any arbitrary vector, in the base given the given pose.
An implicit constructor is used if a CPose2D is given.
void BASE_IMPEXP mrpt::math::createFromPoseX | ( | const mrpt::poses::CPose3D & | p, |
TLine3D & | r | ||
) |
Gets a 3D line corresponding to the X axis in a given pose.
An implicit constructor is used if a TPose3D is given.
void BASE_IMPEXP mrpt::math::createFromPoseX | ( | const TPose2D & | p, |
TLine2D & | r | ||
) |
Gets a 2D line corresponding to the X axis in a given pose.
An implicit constructor is used if a CPose2D is given.
void BASE_IMPEXP mrpt::math::createFromPoseY | ( | const mrpt::poses::CPose3D & | p, |
TLine3D & | r | ||
) |
Gets a 3D line corresponding to the Y axis in a given pose.
An implicit constructor is used if a TPose3D is given.
void BASE_IMPEXP mrpt::math::createFromPoseY | ( | const TPose2D & | p, |
TLine2D & | r | ||
) |
Gets a 2D line corresponding to the Y axis in a given pose.
An implicit constructor is used if a CPose2D is given.
void BASE_IMPEXP mrpt::math::createFromPoseZ | ( | const mrpt::poses::CPose3D & | p, |
TLine3D & | r | ||
) |
Gets a 3D line corresponding to the Z axis in a given pose.
An implicit constructor is used if a TPose3D is given.
void BASE_IMPEXP mrpt::math::createPlaneFromPoseAndNormal | ( | const mrpt::poses::CPose3D & | pose, |
const double(&) | normal[3], | ||
TPlane & | plane | ||
) |
Given a pose and any vector, creates a plane orthogonal to that vector in the pose's coordinates.
void BASE_IMPEXP mrpt::math::createPlaneFromPoseXY | ( | const mrpt::poses::CPose3D & | pose, |
TPlane & | plane | ||
) |
Given a pose, creates a plane orthogonal to its Z vector.
void BASE_IMPEXP mrpt::math::createPlaneFromPoseXZ | ( | const mrpt::poses::CPose3D & | pose, |
TPlane & | plane | ||
) |
Given a pose, creates a plane orthogonal to its Y vector.
void BASE_IMPEXP mrpt::math::createPlaneFromPoseYZ | ( | const mrpt::poses::CPose3D & | pose, |
TPlane & | plane | ||
) |
Given a pose, creates a plane orthogonal to its X vector.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 800 of file geometry.h.
References ASSERT_.
|
inline |
Computes the cross product of two 3D vectors, returning a vector normal to both.
It uses the simple implementation:
Definition at line 792 of file geometry.h.
Referenced by mrpt::math::generateAxisBaseFromDirection().
|
inline |
Definition at line 815 of file geometry.h.
|
inline |
Definition at line 593 of file geometry.h.
References mrpt::math::distance().
double BASE_IMPEXP mrpt::math::distance | ( | const TLine2D & | r1, |
const TLine2D & | r2 | ||
) |
Gets the distance between two lines in a 2D space.
|
inline |
Gets the distance between a line and a polygon in a 3D space.
Definition at line 617 of file geometry.h.
References mrpt::math::distance().
double BASE_IMPEXP mrpt::math::distance | ( | const TLine3D & | r1, |
const TLine3D & | r2 | ||
) |
Gets the distance between two lines in a 3D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPlane & | p1, |
const TPlane & | p2 | ||
) |
Gets the distance between two planes.
It will be zero if the planes are not parallel.
|
inline |
Gets the distance between a plane and a polygon.
Definition at line 627 of file geometry.h.
References mrpt::math::distance().
double BASE_IMPEXP mrpt::math::distance | ( | const TPoint2D & | p1, |
const TPoint2D & | p2 | ||
) |
Gets the distance between two points in a 2D space.
Referenced by mrpt::math::CArray< T, N >::assign(), mrpt::slam::TDataAssociationResults::clear(), nanoflann::KDTreeSingleIndexAdaptor< Distance, DatasetAdaptor, DIM, IndexType >::computeInitialDistances(), mrpt::math::confidenceIntervals(), mrpt::math::distance(), mrpt::utils::find_in_vector(), mrpt::math::CBinaryRelation< T, U, UIsObject >::getRelationFrom(), mrpt::math::CBinaryRelation< T, U, UIsObject >::getRelationTo(), mrpt::math::CBinaryRelation< T, U, UIsObject >::getRelationValue(), mrpt::math::CBinaryRelation< T, U, UIsObject >::insertElement(), mrpt::math::CBinaryRelation< T, U, UIsObject >::insertElements(), mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_pfAuxiliaryPFStandardAndOptimal(), mrpt::math::CBinaryRelation< T, U, UIsObject >::removeElement(), mrpt::math::CBinaryRelation< T, U, UIsObject >::removeElements(), mrpt::bayes::CKalmanFilterCapable< VEH_SIZE, OBS_SIZE, FEAT_SIZE, ACT_SIZE, KFTYPE >::runOneKalmanIteration(), nanoflann::KDTreeSingleIndexAdaptor< Distance, DatasetAdaptor, DIM, IndexType >::searchLevel(), and mrpt::math::CBinaryRelation< T, U, UIsObject >::setRelationValue().
double BASE_IMPEXP mrpt::math::distance | ( | const TPoint3D & | p1, |
const TPoint3D & | p2 | ||
) |
Gets the distance between two points in a 3D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon2D & | p1, |
const TLine2D & | l2 | ||
) |
Gets the distance between a polygon and a line in a 2D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon2D & | p1, |
const TPolygon2D & | p2 | ||
) |
Gets the distance between two polygons in a 2D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon2D & | p1, |
const TSegment2D & | s2 | ||
) |
Gets the distance between a polygon and a segment in a 2D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon3D & | p1, |
const TLine3D & | l2 | ||
) |
Gets the distance between a polygon and a line in a 3D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon3D & | p1, |
const TPolygon3D & | p2 | ||
) |
Gets the distance between two polygons in a 3D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon3D & | p1, |
const TSegment3D & | s2 | ||
) |
Gets the distance between a polygon and a segment in a 3D space.
double BASE_IMPEXP mrpt::math::distance | ( | const TPolygon3D & | po, |
const TPlane & | pl | ||
) |
Gets the distance between a polygon and a plane.
|
inline |
Gets the distance between a segment and a polygon in a 2D space.
Definition at line 586 of file geometry.h.
References mrpt::math::distance().
|
inline |
Gets the distance between a segment and a polygon in a 3D space.
Definition at line 607 of file geometry.h.
References mrpt::math::distance().
T mrpt::math::distanceBetweenPoints | ( | const T | x1, |
const T | y1, | ||
const T | x2, | ||
const T | y2 | ||
) |
Returns the distance between 2 points in 2D.
Definition at line 955 of file geometry.h.
References mrpt::utils::square().
T mrpt::math::distanceBetweenPoints | ( | const T | x1, |
const T | y1, | ||
const T | z1, | ||
const T | x2, | ||
const T | y2, | ||
const T | z2 | ||
) |
Returns the distance between 2 points in 3D.
Definition at line 961 of file geometry.h.
References mrpt::utils::square().
double BASE_IMPEXP mrpt::math::distancePointToPolygon2D | ( | const double & | px, |
const double & | py, | ||
unsigned int | polyEdges, | ||
const double * | poly_xs, | ||
const double * | poly_ys | ||
) |
Returns the closest distance of a given 2D point to a polygon, or "0" if the point is INTO the polygon or its perimeter.
T mrpt::math::distanceSqrBetweenPoints | ( | const T | x1, |
const T | y1, | ||
const T | x2, | ||
const T | y2 | ||
) |
Returns the square distance between 2 points in 2D.
Definition at line 967 of file geometry.h.
References mrpt::utils::square().
T mrpt::math::distanceSqrBetweenPoints | ( | const T | x1, |
const T | y1, | ||
const T | z1, | ||
const T | x2, | ||
const T | y2, | ||
const T | z2 | ||
) |
Returns the square distance between 2 points in 3D.
Definition at line 973 of file geometry.h.
References mrpt::utils::square().
CMatrixTemplateNumeric<T> mrpt::math::generateAxisBaseFromDirection | ( | T | dx, |
T | dy, | ||
T | dz | ||
) |
Computes an axis base (a set of three 3D normal vectors) with the given vector being the first of them.
NOTE: Make sure of passing all floats or doubles and that the template of the receiving matrix is of the same type!
If is the input vector, then this function returns a matrix
such as:
And the three normal vectors are computed as:
\f[ v^1 = \frac{d}{|d|} \f] If (dx!=0 or dy!=0): \f[ v^2 = \frac{[-dy ~ dx ~ 0 ]}{\sqrt{dx^2+dy^2}} \f] otherwise (the direction vector is vertical): \f[ v^2 = [1 ~ 0 ~ 0] \f] And finally, the third vector is the cross product of the others: \f[ v^3 = v^1 \times v^2 \f]
(JLB @ 18-SEP-2007)
Definition at line 1097 of file geometry.h.
References mrpt::math::crossProduct3D(), MRPT_END, MRPT_START, mrpt::utils::square(), and THROW_EXCEPTION.
void BASE_IMPEXP mrpt::math::generateAxisBaseFromDirectionAndAxis | ( | const double(&) | vec[3], |
char | coord, | ||
CMatrixDouble & | matrix | ||
) |
Creates a rotation matrix so that the coordinate given (0 for x, 1 for y, 2 for z) corresponds to the vector.
double BASE_IMPEXP mrpt::math::getAngle | ( | const TLine2D & | r1, |
const TLine2D & | r2 | ||
) |
Computes the angle between two 2D lines or segments (implicit constructor will be used if passing a segment instead of a line).
double BASE_IMPEXP mrpt::math::getAngle | ( | const TLine3D & | r1, |
const TLine3D & | r2 | ||
) |
Computes the angle between two 3D lines or segments (implicit constructor will be used if passing a segment instead of a line).
Computes the angle between a 3D line or segment and a plane (implicit constructor will be used if passing a segment instead of a line).
Definition at line 215 of file geometry.h.
References mrpt::math::getAngle().
double BASE_IMPEXP mrpt::math::getAngle | ( | const TPlane & | p1, |
const TLine3D & | r2 | ||
) |
Computes the angle between a plane and a 3D line or segment (implicit constructor will be used if passing a segment instead of a line).
double BASE_IMPEXP mrpt::math::getAngle | ( | const TPlane & | p1, |
const TPlane & | p2 | ||
) |
Computes the angle between two planes.
Referenced by mrpt::math::getAngle().
void BASE_IMPEXP mrpt::math::getAngleBisector | ( | const TLine2D & | l1, |
const TLine2D & | l2, | ||
TLine2D & | bis | ||
) |
Gets the bisector of two lines or segments (implicit constructor will be used if necessary)
void BASE_IMPEXP mrpt::math::getAngleBisector | ( | const TLine3D & | l1, |
const TLine3D & | l2, | ||
TLine3D & | bis | ||
) |
Gets the bisector of two lines or segments (implicit constructor will be used if necessary)
std::logic_error | if the lines do not fit in a single plane. |
|
inline |
Gets the value of the geometric epsilon.
Definition at line 733 of file geometry.h.
References mrpt::math::geometryEpsilon.
void BASE_IMPEXP mrpt::math::getPrismBounds | ( | const std::vector< TPoint3D > & | poly, |
TPoint3D & | pMin, | ||
TPoint3D & | pMax | ||
) |
Gets the prism bounds of a 3D polygon or set of 3D points.
void BASE_IMPEXP mrpt::math::getRectangleBounds | ( | const std::vector< TPoint2D > & | poly, |
TPoint2D & | pMin, | ||
TPoint2D & | pMax | ||
) |
Gets the rectangular bounds of a 2D polygon or set of 2D points.
double BASE_IMPEXP mrpt::math::getRegressionLine | ( | const std::vector< TPoint2D > & | points, |
TLine2D & | line | ||
) |
Using eigenvalues, gets the best fitting line for a set of 2D points.
Returns an estimation of the error.
double BASE_IMPEXP mrpt::math::getRegressionLine | ( | const std::vector< TPoint3D > & | points, |
TLine3D & | line | ||
) |
Using eigenvalues, gets the best fitting line for a set of 3D points.
Returns an estimation of the error.
double BASE_IMPEXP mrpt::math::getRegressionPlane | ( | const std::vector< TPoint3D > & | points, |
TPlane & | plane | ||
) |
Using eigenvalues, gets the best fitting plane for a set of 3D points.
Returns an estimation of the error.
void BASE_IMPEXP mrpt::math::getSegmentBisector | ( | const TSegment2D & | sgm, |
TLine2D & | bis | ||
) |
Gets the bisector of a 2D segment.
void BASE_IMPEXP mrpt::math::getSegmentBisector | ( | const TSegment3D & | sgm, |
TPlane & | bis | ||
) |
Gets the bisector of a 3D segment.
size_t mrpt::math::intersect | ( | const std::vector< T > & | v1, |
const std::vector< U > & | v2, | ||
CSparseMatrixTemplate< O > & | objs | ||
) |
Gets the intersection between vectors of geometric objects and returns it in a sparse matrix of either TObject2D or TObject3D.
Definition at line 517 of file geometry.h.
References mrpt::math::CSparseMatrixTemplate< T >::clear(), mrpt::math::CSparseMatrixTemplate< T >::getNonNullElements(), mrpt::math::intersect(), and mrpt::math::CSparseMatrixTemplate< T >::resize().
size_t mrpt::math::intersect | ( | const std::vector< T > & | v1, |
const std::vector< U > & | v2, | ||
std::vector< O > | objs | ||
) |
Gets the intersection between vectors of geometric objects and returns it in a vector of either TObject2D or TObject3D.
Definition at line 530 of file geometry.h.
References mrpt::math::intersect().
size_t BASE_IMPEXP mrpt::math::intersect | ( | const std::vector< TPolygon3D > & | v1, |
const std::vector< TPolygon3D > & | v2, | ||
CSparseMatrixTemplate< TObject3D > & | objs | ||
) |
Gets the intersection between two sets of 3D polygons.
The intersection is returned as an sparse matrix with each pair of polygons' intersections, and the return value is the amount of intersections found.
size_t BASE_IMPEXP mrpt::math::intersect | ( | const std::vector< TPolygon3D > & | v1, |
const std::vector< TPolygon3D > & | v2, | ||
std::vector< TObject3D > & | objs | ||
) |
Gets the intersection between two sets of 3D polygons.
The intersection is returned as a vector with every intersection found, and the return value is the amount of intersections found.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TLine2D & | r1, |
const TLine2D & | r2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between two 2D lines.
Possible outcomes:
|
inline |
Gets the intersection between a 2D line and a 2D polygon.
Definition at line 452 of file geometry.h.
References mrpt::math::intersect().
bool BASE_IMPEXP mrpt::math::intersect | ( | const TLine2D & | r1, |
const TSegment2D & | s2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between a 2D line and a 2D segment.
Possible outcomes:
bool BASE_IMPEXP mrpt::math::intersect | ( | const TLine3D & | r1, |
const TLine3D & | r2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between two 3D lines.
Possible outcomes:
Gets the intersection between a 3D line and a plane.
Possible outcomes:
Definition at line 150 of file geometry.h.
References mrpt::math::intersect().
|
inline |
Gets the intersection between a 3D line and a 3D polygon.
Definition at line 486 of file geometry.h.
References mrpt::math::intersect().
|
inline |
Gets the intersection between a 3D line and a 3D segment.
Possible outcomes:
Definition at line 140 of file geometry.h.
References mrpt::math::intersect().
bool BASE_IMPEXP mrpt::math::intersect | ( | const TObject2D & | o1, |
const TObject2D & | o2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between any pair of 2D objects.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TObject3D & | o1, |
const TObject3D & | o2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between any pair of 3D objects.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPlane & | p1, |
const TLine3D & | p2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between a plane and a 3D line.
Possible outcomes:
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPlane & | p1, |
const TPlane & | p2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between two planes.
Possible outcomes:
|
inline |
Gets the intersection between a plane and a 3D polygon.
Definition at line 493 of file geometry.h.
References mrpt::math::intersect().
|
inline |
Gets the intersection between a plane and a 3D segment.
Possible outcomes:
Definition at line 115 of file geometry.h.
References mrpt::math::intersect().
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon2D & | p1, |
const TLine2D & | r2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between a 2D polygon and a 2D line.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon2D & | p1, |
const TPolygon2D & | p2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between two 2D polygons.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon2D & | p1, |
const TSegment2D & | s2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between a 2D polygon and a 2D segment.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon3D & | p1, |
const TLine3D & | r2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between a 3D polygon and a 3D line.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon3D & | p1, |
const TPlane & | p2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between a 3D polygon and a plane.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon3D & | p1, |
const TPolygon3D & | p2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between two 3D polygons.
bool BASE_IMPEXP mrpt::math::intersect | ( | const TPolygon3D & | p1, |
const TSegment3D & | s2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between a 3D polygon and a 3D segment.
|
inline |
Gets the intersection between a 2D line and a 2D segment.
Possible outcomes:
Definition at line 186 of file geometry.h.
References mrpt::math::intersect().
|
inline |
Gets the intersection between a 2D segment and a 2D polygon.
Definition at line 445 of file geometry.h.
References mrpt::math::intersect().
bool BASE_IMPEXP mrpt::math::intersect | ( | const TSegment2D & | s1, |
const TSegment2D & | s2, | ||
TObject2D & | obj | ||
) |
Gets the intersection between two 2D segments.
Possible outcomes:
bool BASE_IMPEXP mrpt::math::intersect | ( | const TSegment3D & | s1, |
const TLine3D & | r2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between a 3D segment and a 3D line.
Possible outcomes:
bool BASE_IMPEXP mrpt::math::intersect | ( | const TSegment3D & | s1, |
const TPlane & | p2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between a 3D segment and a plane.
Possible outcomes:
|
inline |
Gets the intersection between a 3D segment and a 3D polygon.
Definition at line 479 of file geometry.h.
References mrpt::math::intersect().
bool BASE_IMPEXP mrpt::math::intersect | ( | const TSegment3D & | s1, |
const TSegment3D & | s2, | ||
TObject3D & | obj | ||
) |
Gets the intersection between two 3D segments.
Possible outcomes:
Referenced by mrpt::opengl::CPolyhedron::getIntersection(), and mrpt::math::intersect().
bool BASE_IMPEXP mrpt::math::minDistBetweenLines | ( | const double & | p1_x, |
const double & | p1_y, | ||
const double & | p1_z, | ||
const double & | p2_x, | ||
const double & | p2_y, | ||
const double & | p2_z, | ||
const double & | p3_x, | ||
const double & | p3_y, | ||
const double & | p3_z, | ||
const double & | p4_x, | ||
const double & | p4_y, | ||
const double & | p4_z, | ||
double & | x, | ||
double & | y, | ||
double & | z, | ||
double & | dist | ||
) |
Calculates the minimum distance between a pair of lines.
The lines are given by:
double BASE_IMPEXP mrpt::math::minimumDistanceFromPointToSegment | ( | const double & | Px, |
const double & | Py, | ||
const double & | x1, | ||
const double & | y1, | ||
const double & | x2, | ||
const double & | y2, | ||
double & | out_x, | ||
double & | out_y | ||
) |
Computes the closest point from a given point to a segment, and returns that minimum distance.
double BASE_IMPEXP mrpt::math::minimumDistanceFromPointToSegment | ( | const double & | Px, |
const double & | Py, | ||
const double & | x1, | ||
const double & | y1, | ||
const double & | x2, | ||
const double & | y2, | ||
float & | out_x, | ||
float & | out_y | ||
) |
Computes the closest point from a given point to a segment, and returns that minimum distance.
|
inline |
Exact comparison between 2D points.
Definition at line 518 of file lightweight_geom_data.h.
References mrpt::math::TPoint2D::x, and mrpt::math::TPoint2D::y.
|
inline |
Exact comparison between 3D points.
Definition at line 530 of file lightweight_geom_data.h.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
|
inline |
Exact comparison between 2D poses, taking possible cycles into account.
Definition at line 542 of file lightweight_geom_data.h.
References mrpt::math::TPose2D::phi, mrpt::math::wrapTo2Pi(), mrpt::math::TPose2D::x, and mrpt::math::TPose2D::y.
|
inline |
Exact comparison between 3D poses, taking possible cycles into account.
Definition at line 554 of file lightweight_geom_data.h.
References mrpt::math::TPose3D::pitch, mrpt::math::TPose3D::roll, mrpt::math::wrapTo2Pi(), mrpt::math::TPose3D::x, mrpt::math::TPose3D::y, mrpt::math::TPose3D::yaw, and mrpt::math::TPose3D::z.
|
inline |
Definition at line 692 of file lightweight_geom_data.h.
References mrpt::math::TSegment2D::point1, and mrpt::math::TSegment2D::point2.
|
inline |
Definition at line 700 of file lightweight_geom_data.h.
References mrpt::math::TSegment3D::point1, and mrpt::math::TSegment3D::point2.
Unary minus operator for 3D points.
Definition at line 506 of file lightweight_geom_data.h.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TLine2D & | l | ||
) |
TLine2D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TLine3D & | l | ||
) |
TLine3D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TObject2D & | o | ||
) |
TObject2D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TObject3D & | o | ||
) |
TObject3D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TPlane & | p | ||
) |
TPlane binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TPoint2D & | o | ||
) |
TPoint2D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TPoint3D & | o | ||
) |
TPoint3D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TPose2D & | o | ||
) |
TPose2D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TPose3D & | o | ||
) |
TPose3D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TSegment2D & | s | ||
) |
TSegment2D binary output.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator<< | ( | mrpt::utils::CStream & | out, |
const mrpt::math::TSegment3D & | s | ||
) |
TSegment3D binary output.
std::ostream BASE_IMPEXP& mrpt::math::operator<< | ( | std::ostream & | o, |
const TPoint2D & | p | ||
) |
std::ostream BASE_IMPEXP& mrpt::math::operator<< | ( | std::ostream & | o, |
const TPoint3D & | p | ||
) |
std::ostream BASE_IMPEXP& mrpt::math::operator<< | ( | std::ostream & | o, |
const TPose2D & | p | ||
) |
std::ostream BASE_IMPEXP& mrpt::math::operator<< | ( | std::ostream & | o, |
const TPose3D & | p | ||
) |
std::ostream BASE_IMPEXP& mrpt::math::operator<< | ( | std::ostream & | o, |
const TPose3DQuat & | p | ||
) |
Exact comparison between 2D points.
Definition at line 512 of file lightweight_geom_data.h.
References mrpt::math::TPoint2D::x, and mrpt::math::TPoint2D::y.
Exact comparison between 3D points.
Definition at line 524 of file lightweight_geom_data.h.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
Exact comparison between 2D poses, taking possible cycles into account.
Definition at line 536 of file lightweight_geom_data.h.
References mrpt::math::TPose2D::phi, mrpt::math::wrapTo2Pi(), mrpt::math::TPose2D::x, and mrpt::math::TPose2D::y.
Exact comparison between 3D poses, taking possible cycles into account.
Definition at line 548 of file lightweight_geom_data.h.
References mrpt::math::TPose3D::pitch, mrpt::math::TPose3D::roll, mrpt::math::wrapTo2Pi(), mrpt::math::TPose3D::x, mrpt::math::TPose3D::y, mrpt::math::TPose3D::yaw, and mrpt::math::TPose3D::z.
|
inline |
Definition at line 688 of file lightweight_geom_data.h.
References mrpt::math::TSegment2D::point1, and mrpt::math::TSegment2D::point2.
|
inline |
Definition at line 696 of file lightweight_geom_data.h.
References mrpt::math::TSegment3D::point1, and mrpt::math::TSegment3D::point2.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TLine2D & | l | ||
) |
TLine2D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TLine3D & | l | ||
) |
TLine3D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TObject2D & | o | ||
) |
TObject2D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TObject3D & | o | ||
) |
TObject3D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TPlane & | p | ||
) |
TPlane binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TPoint2D & | o | ||
) |
TPoint2D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TPoint3D & | o | ||
) |
TPoint3D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TPose2D & | o | ||
) |
TPose2D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TPose3D & | o | ||
) |
TPose3D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TSegment2D & | s | ||
) |
TSegment2D binary input.
BASE_IMPEXP mrpt::utils::CStream& mrpt::math::operator>> | ( | mrpt::utils::CStream & | in, |
mrpt::math::TSegment3D & | s | ||
) |
TSegment3D binary input.
bool BASE_IMPEXP mrpt::math::pointIntoPolygon2D | ( | const double & | px, |
const double & | py, | ||
unsigned int | polyEdges, | ||
const double * | poly_xs, | ||
const double * | poly_ys | ||
) |
Returns true if the 2D point (px,py) falls INTO the given polygon.
bool mrpt::math::pointIntoQuadrangle | ( | T | x, |
T | y, | ||
T | v1x, | ||
T | v1y, | ||
T | v2x, | ||
T | v2y, | ||
T | v3x, | ||
T | v3y, | ||
T | v4x, | ||
T | v4y | ||
) |
Specialized method to check whether a point (x,y) falls into a quadrangle.
Definition at line 1004 of file geometry.h.
References mrpt::obs::gnss::a1, mrpt::obs::gnss::a2, mrpt::obs::gnss::a3, mrpt::utils::sign(), and mrpt::math::wrapToPi().
void mrpt::math::project2D | ( | const std::vector< T > & | objs, |
const mrpt::poses::CPose2D & | newXpose, | ||
std::vector< T > & | newObjs | ||
) |
Projects a set of 2D objects into the line's base.
Definition at line 415 of file geometry.h.
References mrpt::math::project2D().
void mrpt::math::project2D | ( | const T & | obj, |
const TLine2D & | newXLine, | ||
const TPoint2D & | newOrigin, | ||
T & | newObj | ||
) |
Projects any 2D object into the line's base, using its inverse pose and forcing the position of the new coordinate origin.
If the object is exactly inside the line, this projection will zero its Y coordinate.
CPOSE2D | set to mrpt::poses::CPose2D |
Definition at line 406 of file geometry.h.
References mrpt::math::TLine2D::getAsPose2DForcingOrigin(), and mrpt::math::project2D().
void mrpt::math::project2D | ( | const T & | obj, |
const TLine2D & | newXLine, | ||
T & | newObj | ||
) |
Projects any 2D object into the line's base, using its inverse pose.
If the object is exactly inside the line, this projection will zero its Y coordinate.
CPOSE2D | set to mrpt::poses::CPose2D |
Definition at line 396 of file geometry.h.
References mrpt::math::TLine2D::getAsPose2D(), and mrpt::math::project2D().
void BASE_IMPEXP mrpt::math::project2D | ( | const TLine2D & | line, |
const mrpt::poses::CPose2D & | newXpose, | ||
TLine2D & | newLine | ||
) |
Uses the given pose 2D to project a line into a new base.
void BASE_IMPEXP mrpt::math::project2D | ( | const TObject2D & | object, |
const mrpt::poses::CPose2D & | newXpose, | ||
TObject2D & | newObject | ||
) |
Uses the given pose 2D to project any 2D object into a new base.
void BASE_IMPEXP mrpt::math::project2D | ( | const TPoint2D & | point, |
const mrpt::poses::CPose2D & | newXpose, | ||
TPoint2D & | newPoint | ||
) |
Uses the given pose 2D to project a point into a new base.
Referenced by mrpt::math::project2D().
void BASE_IMPEXP mrpt::math::project2D | ( | const TPolygon2D & | polygon, |
const mrpt::poses::CPose2D & | newXpose, | ||
TPolygon2D & | newPolygon | ||
) |
Uses the given pose 2D to project a polygon into a new base.
|
inline |
Uses the given pose 2D to project a segment into a new base.
Definition at line 374 of file geometry.h.
References mrpt::math::TSegment2D::point1, mrpt::math::TSegment2D::point2, and mrpt::math::project2D().
void mrpt::math::project3D | ( | const std::vector< T > & | objs, |
const mrpt::poses::CPose3D & | newXYpose, | ||
std::vector< T > & | newObjs | ||
) |
Projects a set of 3D objects into the plane's base.
Definition at line 360 of file geometry.h.
References mrpt::math::project3D().
void mrpt::math::project3D | ( | const T & | obj, |
const TPlane & | newXYPlane, | ||
const TPoint3D & | newOrigin, | ||
T & | newObj | ||
) |
Projects any 3D object into the plane's base, using its inverse pose and forcing the position of the new coordinates origin.
If the object is exactly inside the plane, this projection will zero its Z coordinates.
Definition at line 350 of file geometry.h.
References mrpt::math::TPlane::getAsPose3D(), and mrpt::math::project3D().
void mrpt::math::project3D | ( | const T & | obj, |
const TPlane & | newXYPlane, | ||
T & | newObj | ||
) |
Projects any 3D object into the plane's base, using its inverse pose.
If the object is exactly inside the plane, this projection will zero its Z coordinates.
Definition at line 341 of file geometry.h.
References mrpt::math::TPlane::getAsPose3D(), and mrpt::math::project3D().
void BASE_IMPEXP mrpt::math::project3D | ( | const TLine3D & | line, |
const mrpt::poses::CPose3D & | newXYpose, | ||
TLine3D & | newLine | ||
) |
Uses the given pose 3D to project a line into a new base.
void BASE_IMPEXP mrpt::math::project3D | ( | const TObject3D & | object, |
const mrpt::poses::CPose3D & | newXYPose, | ||
TObject3D & | newObject | ||
) |
Uses the given pose 3D to project any 3D object into a new base.
void BASE_IMPEXP mrpt::math::project3D | ( | const TPlane & | plane, |
const mrpt::poses::CPose3D & | newXYpose, | ||
TPlane & | newPlane | ||
) |
Uses the given pose 3D to project a plane into a new base.
|
inline |
Uses the given pose 3D to project a point into a new base.
Definition at line 311 of file geometry.h.
References mrpt::poses::CPose3D::composePoint(), mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
Referenced by mrpt::math::project3D().
void BASE_IMPEXP mrpt::math::project3D | ( | const TPolygon3D & | polygon, |
const mrpt::poses::CPose3D & | newXYpose, | ||
TPolygon3D & | newPolygon | ||
) |
Uses the given pose 3D to project a polygon into a new base.
|
inline |
Uses the given pose 3D to project a segment into a new base.
Definition at line 317 of file geometry.h.
References mrpt::math::TSegment3D::point1, mrpt::math::TSegment3D::point2, and mrpt::math::project3D().
bool BASE_IMPEXP mrpt::math::RectanglesIntersection | ( | const double & | R1_x_min, |
const double & | R1_x_max, | ||
const double & | R1_y_min, | ||
const double & | R1_y_max, | ||
const double & | R2_x_min, | ||
const double & | R2_x_max, | ||
const double & | R2_y_min, | ||
const double & | R2_y_max, | ||
const double & | R2_pose_x, | ||
const double & | R2_pose_y, | ||
const double & | R2_pose_phi | ||
) |
Returns whether two rotated rectangles intersect.
The first rectangle is not rotated and given by (R1_x_min,R1_x_max)-(R1_y_min,R1_y_max). The second rectangle is given is a similar way, but it is internally rotated according to the given coordinates translation (R2_pose_x,R2_pose_y,R2_pose_phi(radians)), relative to the coordinates system of rectangle 1.
|
inline |
Compute a rotation exponential using the Rodrigues Formula.
The rotation axis is given by , and the rotation angle must be computed using
. This is provided as a separate function primarily to allow fast and rough matrix exponentials using fast and rough approximations to A and B.
w | Vector about which to rotate. |
A | ![]() |
B | ![]() |
R | Matrix to hold the return value. |
Definition at line 1151 of file geometry.h.
References ASSERT_EQUAL_.
bool BASE_IMPEXP mrpt::math::SegmentsIntersection | ( | const double & | x1, |
const double & | y1, | ||
const double & | x2, | ||
const double & | y2, | ||
const double & | x3, | ||
const double & | y3, | ||
const double & | x4, | ||
const double & | y4, | ||
double & | ix, | ||
double & | iy | ||
) |
Returns the intersection point, and if it exists, between two segments.
bool BASE_IMPEXP mrpt::math::SegmentsIntersection | ( | const double & | x1, |
const double & | y1, | ||
const double & | x2, | ||
const double & | y2, | ||
const double & | x3, | ||
const double & | y3, | ||
const double & | x4, | ||
const double & | y4, | ||
float & | ix, | ||
float & | iy | ||
) |
Returns the intersection point, and if it exists, between two segments.
|
inline |
Changes the value of the geometric epsilon.
Definition at line 726 of file geometry.h.
References mrpt::math::geometryEpsilon.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 842 of file geometry.h.
References mrpt::math::skew_symmetric3(), and mrpt::math::UNINITIALIZED_MATRIX.
|
inline |
Computes the 3x3 skew symmetric matrix from a 3-vector or 3-array:
Definition at line 833 of file geometry.h.
References ASSERT_.
Referenced by mrpt::math::skew_symmetric3().
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 867 of file geometry.h.
References mrpt::math::skew_symmetric3_neg(), and mrpt::math::UNINITIALIZED_MATRIX.
|
inline |
Computes the negative version of a 3x3 skew symmetric matrix from a 3-vector or 3-array:
Definition at line 858 of file geometry.h.
References ASSERT_.
Referenced by mrpt::math::skew_symmetric3_neg().
void mrpt::math::slerp | ( | const CQuaternion< T > & | q0, |
const CQuaternion< T > & | q1, | ||
const double | t, | ||
CQuaternion< T > & | q | ||
) |
SLERP interpolation between two quaternions.
[in] | q0 | The quaternion for t=0 |
[in] | q1 | The quaternion for t=1 |
[in] | t | A "time" parameter, in the range [0,1]. |
[out] | q | The output, interpolated quaternion. |
T | The type of the quaternion (e.g. float, double). |
std::exception | Only in Debug, if t is not in the valid range. |
Definition at line 35 of file slerp.h.
References nanoflann::abs(), ASSERTDEB_, mrpt::utils::square(), and t().
void BASE_IMPEXP mrpt::math::slerp | ( | const mrpt::poses::CPose3D & | q0, |
const mrpt::poses::CPose3D & | q1, | ||
const double | t, | ||
mrpt::poses::CPose3D & | p | ||
) |
SLERP interpolation between two 6D poses - like mrpt::math::slerp for quaternions, but interpolates the [X,Y,Z] coordinates as well.
[in] | p0 | The pose for t=0 |
[in] | p1 | The pose for t=1 |
[in] | t | A "time" parameter, in the range [0,1]. |
[out] | p | The output, interpolated pose. |
std::exception | Only in Debug, if t is not in the valid range. |
void BASE_IMPEXP mrpt::math::slerp | ( | const mrpt::poses::CPose3DQuat & | q0, |
const mrpt::poses::CPose3DQuat & | q1, | ||
const double | t, | ||
mrpt::poses::CPose3DQuat & | p | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
bool BASE_IMPEXP mrpt::math::splitInConvexComponents | ( | const TPolygon2D & | poly, |
vector< TPolygon2D > & | components | ||
) |
Splits a 2D polygon into convex components.
bool BASE_IMPEXP mrpt::math::splitInConvexComponents | ( | const TPolygon3D & | poly, |
vector< TPolygon3D > & | components | ||
) |
Splits a 3D polygon into convex components.
std::logic_error | if the polygon can't be fit into a plane. |
|
inline |
Fast ray tracing method using polygons' properties.
Definition at line 774 of file geometry.h.
References mrpt::math::TPolygonWithPlane::getPlanes(), and mrpt::math::traceRay().
bool BASE_IMPEXP mrpt::math::traceRay | ( | const vector< TPolygonWithPlane > & | vec, |
const mrpt::poses::CPose3D & | pose, | ||
double & | dist | ||
) |
Fast ray tracing method using polygons' properties.
Referenced by mrpt::math::traceRay().
|
inline |
Returns true if two 2D vectors are parallel.
The arguments may be points, arrays, etc.
Definition at line 877 of file geometry.h.
References nanoflann::abs(), and mrpt::math::geometryEpsilon.
|
inline |
Returns true if two 3D vectors are parallel.
The arguments may be points, arrays, etc.
Definition at line 885 of file geometry.h.
References nanoflann::abs(), and mrpt::math::geometryEpsilon.
const unsigned char mrpt::math::GEOMETRIC_TYPE_LINE =2 |
Object type identifier for TLine2D or TLine3D.
Definition at line 1143 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject3D::generate2DObject(), mrpt::math::TObject2D::isLine(), mrpt::math::TObject3D::isLine(), mrpt::math::TObject2D::operator=(), and mrpt::math::TObject3D::operator=().
const unsigned char mrpt::math::GEOMETRIC_TYPE_PLANE =4 |
Object type identifier for TPlane.
Definition at line 1153 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject3D::generate2DObject(), mrpt::math::TObject3D::isPlane(), and mrpt::math::TObject3D::operator=().
const unsigned char mrpt::math::GEOMETRIC_TYPE_POINT =0 |
Object type identifier for TPoint2D or TPoint3D.
Definition at line 1133 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject3D::generate2DObject(), mrpt::math::TObject2D::isPoint(), mrpt::math::TObject3D::isPoint(), mrpt::math::TObject2D::operator=(), and mrpt::math::TObject3D::operator=().
const unsigned char mrpt::math::GEOMETRIC_TYPE_POLYGON =3 |
Object type identifier for TPolygon2D or TPolygon3D.
Definition at line 1148 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject2D::destroy(), mrpt::math::TObject3D::destroy(), mrpt::math::TObject3D::generate2DObject(), mrpt::math::TObject2D::isPolygon(), mrpt::math::TObject3D::isPolygon(), mrpt::math::TObject2D::operator=(), and mrpt::math::TObject3D::operator=().
const unsigned char mrpt::math::GEOMETRIC_TYPE_SEGMENT =1 |
Object type identifier for TSegment2D or TSegment3D.
Definition at line 1138 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject3D::generate2DObject(), mrpt::math::TObject2D::isSegment(), mrpt::math::TObject3D::isSegment(), mrpt::math::TObject2D::operator=(), and mrpt::math::TObject3D::operator=().
const unsigned char mrpt::math::GEOMETRIC_TYPE_UNDEFINED =255 |
Object type identifier for empty TObject2D or TObject3D.
Definition at line 1158 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject2D::destroy(), mrpt::math::TObject3D::destroy(), and mrpt::math::TObject3D::operator=().
|
extern |
Global epsilon to overcome small precision errors.
Referenced by mrpt::math::getEpsilon(), mrpt::math::setEpsilon(), mrpt::math::vectorsAreParallel2D(), and mrpt::math::vectorsAreParallel3D().
struct BASE_IMPEXP mrpt::math::TLine3D |
Definition at line 554 of file lightweight_geom_data.h.
struct BASE_IMPEXP mrpt::math::TObject3D |
Definition at line 554 of file lightweight_geom_data.h.
Definition at line 554 of file lightweight_geom_data.h.
Referenced by mrpt::math::TObject3D::operator=(), and mrpt::math::TObject3D::TObject3D().
Definition at line 554 of file lightweight_geom_data.h.
Page generated by Doxygen 1.9.1 for MRPT 1.4.0 SVN: at Sat Jan 30 21:34:41 UTC 2021 |