MRPT  1.9.9
mrpt::math::TPlane Struct Reference

Detailed Description

3D Plane, represented by its equation $Ax+By+Cz+D=0$

See also
TSegment3D,TLine3D,TPolygon3D,TPoint3D

Definition at line 22 of file TPlane.h.

#include <mrpt/math/TPlane.h>

Public Member Functions

double evaluatePoint (const TPoint3D &point) const
 Evaluate a point in the plane's equation. More...
 
bool contains (const TPoint3D &point) const
 Check whether a point is contained into the plane. More...
 
bool contains (const TSegment3D &segment) const
 Check whether a segment is fully contained into the plane. More...
 
bool contains (const TLine3D &line) const
 Check whether a line is fully contained into the plane. More...
 
double distance (const TPoint3D &point) const
 Distance to 3D point. More...
 
double distance (const TLine3D &line) const
 Distance to 3D line. More...
 
void getNormalVector (double(&vec)[3]) const
 Get plane's normal vector. More...
 
TVector3D getNormalVector () const
 
void unitarize ()
 Unitarize normal vector. More...
 
void getAsPose3D (mrpt::math::TPose3D &outPose) const
 
void getAsPose3DForcingOrigin (const TPoint3D &center, TPose3D &pose) const
 
void getUnitaryNormalVector (double(&vec)[3]) const
 Get normal vector. More...
 
 TPlane (const TPoint3D &p1, const TPoint3D &p2, const TPoint3D &p3)
 Defines a plane which contains these three points. More...
 
 TPlane (const TPoint3D &p1, const TVector3D &normal)
 Defines a plane given a point and a normal vector (must not be unit). More...
 
 TPlane (const TPoint3D &p1, const TLine3D &r2)
 Defines a plane which contains this point and this line. More...
 
 TPlane (const TLine3D &r1, const TLine3D &r2)
 Defines a plane which contains the two lines. More...
 
 TPlane ()=default
 Fast default constructor. More...
 
constexpr TPlane (double A, double B, double C, double D)
 Constructor from plane coefficients. More...
 
 TPlane (const double(&vec)[4])
 Constructor from an array of coefficients. More...
 

Public Attributes

std::array< double, 4 > coefs {{.0, .0, .0, .0}}
 Plane coefficients, stored as an array: $\left[A,B,C,D\right]$. More...
 

Constructor & Destructor Documentation

◆ TPlane() [1/7]

mrpt::math::TPlane::TPlane ( const TPoint3D p1,
const TPoint3D p2,
const TPoint3D p3 
)

Defines a plane which contains these three points.

Exceptions
std::logic_errorif the points are linearly dependants.

Definition at line 987 of file TPoseOrPoint.cpp.

References coefs, mrpt::math::getEpsilon(), mrpt::math::TPoint3D_data::x, mrpt::math::TPoint3D_data::y, and mrpt::math::TPoint3D_data::z.

Here is the call graph for this function:

◆ TPlane() [2/7]

mrpt::math::TPlane::TPlane ( const TPoint3D p1,
const TVector3D normal 
)

Defines a plane given a point and a normal vector (must not be unit).

Exceptions
std::logic_errorif the normal vector is null

Definition at line 1016 of file TPoseOrPoint.cpp.

References ASSERT_ABOVE_, coefs, mrpt::math::getEpsilon(), mrpt::math::TPoint3D::norm(), mrpt::math::TPoint3D_data::x, mrpt::math::TPoint3D_data::y, and mrpt::math::TPoint3D_data::z.

Here is the call graph for this function:

◆ TPlane() [3/7]

mrpt::math::TPlane::TPlane ( const TPoint3D p1,
const TLine3D r2 
)

Defines a plane which contains this point and this line.

Exceptions
std::logic_errorif the point is inside the line.

Definition at line 1003 of file TPoseOrPoint.cpp.

References coefs, mrpt::math::TLine3D::director, mrpt::math::getEpsilon(), mrpt::math::TLine3D::pBase, mrpt::math::TPoint3D_data::x, mrpt::math::TPoint3D_data::y, and mrpt::math::TPoint3D_data::z.

Here is the call graph for this function:

◆ TPlane() [4/7]

mrpt::math::TPlane::TPlane ( const TLine3D r1,
const TLine3D r2 
)

Defines a plane which contains the two lines.

Exceptions
std::logic_errorif the lines do not cross.

Definition at line 1028 of file TPoseOrPoint.cpp.

References coefs, mrpt::math::TLine3D::contains(), mrpt::math::crossProduct3D(), mrpt::math::TLine3D::director, evaluatePoint(), mrpt::math::getEpsilon(), mrpt::math::TLine3D::pBase, mrpt::math::TPoint3D_data::x, mrpt::math::TPoint3D_data::y, and mrpt::math::TPoint3D_data::z.

Here is the call graph for this function:

◆ TPlane() [5/7]

mrpt::math::TPlane::TPlane ( )
default

Fast default constructor.

Initializes to garbage.

◆ TPlane() [6/7]

constexpr mrpt::math::TPlane::TPlane ( double  A,
double  B,
double  C,
double  D 
)
inline

Constructor from plane coefficients.

Definition at line 84 of file TPlane.h.

◆ TPlane() [7/7]

mrpt::math::TPlane::TPlane ( const double(&)  vec[4])
inline

Constructor from an array of coefficients.

Definition at line 90 of file TPlane.h.

References coefs.

Member Function Documentation

◆ contains() [1/3]

bool mrpt::math::TPlane::contains ( const TPoint3D point) const

Check whether a point is contained into the plane.

Definition at line 914 of file TPoseOrPoint.cpp.

References distance(), and mrpt::math::getEpsilon().

Referenced by contains(), getAsPose3DForcingOrigin(), and mrpt::math::intersect().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ contains() [2/3]

bool mrpt::math::TPlane::contains ( const TSegment3D segment) const
inline

Check whether a segment is fully contained into the plane.

Definition at line 36 of file TPlane.h.

References contains(), mrpt::math::TSegment3D::point1, and mrpt::math::TSegment3D::point2.

Here is the call graph for this function:

◆ contains() [3/3]

bool mrpt::math::TPlane::contains ( const TLine3D line) const

Check whether a line is fully contained into the plane.

Definition at line 918 of file TPoseOrPoint.cpp.

References contains(), mrpt::math::getAngle(), mrpt::math::getEpsilon(), and mrpt::math::TLine3D::pBase.

Here is the call graph for this function:

◆ distance() [1/2]

double mrpt::math::TPlane::distance ( const TPoint3D point) const

Distance to 3D point.

Definition at line 924 of file TPoseOrPoint.cpp.

References coefs, and evaluatePoint().

Referenced by contains(), distance(), and mrpt::math::distance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ distance() [2/2]

double mrpt::math::TPlane::distance ( const TLine3D line) const

Distance to 3D line.

Will be zero if the line is not parallel to the plane.

Definition at line 928 of file TPoseOrPoint.cpp.

References distance(), mrpt::math::getAngle(), mrpt::math::getEpsilon(), and mrpt::math::TLine3D::pBase.

Here is the call graph for this function:

◆ evaluatePoint()

double mrpt::math::TPlane::evaluatePoint ( const TPoint3D point) const

Evaluate a point in the plane's equation.

Definition at line 910 of file TPoseOrPoint.cpp.

References coefs.

Referenced by mrpt::opengl::CPolyhedron::augment(), distance(), mrpt::math::intersect(), mrpt::math::project3D(), and TPlane().

Here is the caller graph for this function:

◆ getAsPose3D()

void mrpt::math::TPlane::getAsPose3D ( mrpt::math::TPose3D outPose) const

Definition at line 961 of file TPoseOrPoint.cpp.

References coefs, mrpt::math::TPose3D::fromHomogeneousMatrix(), mrpt::math::generateAxisBaseFromDirectionAndAxis(), mrpt::math::getEpsilon(), and getUnitaryNormalVector().

Referenced by mrpt::math::TPolygon3D::contains(), intersectInCommonPlane(), mrpt::math::project3D(), and mrpt::math::TPolygonWithPlane::TPolygonWithPlane().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getAsPose3DForcingOrigin()

void mrpt::math::TPlane::getAsPose3DForcingOrigin ( const TPoint3D center,
TPose3D pose 
) const

Definition at line 975 of file TPoseOrPoint.cpp.

References contains(), mrpt::math::TPose3D::fromHomogeneousMatrix(), mrpt::math::generateAxisBaseFromDirectionAndAxis(), and getUnitaryNormalVector().

Referenced by mrpt::math::TPolygon3D::distance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getNormalVector() [1/2]

void mrpt::math::TPlane::getNormalVector ( double(&)  vec[3]) const

Get plane's normal vector.

Definition at line 935 of file TPoseOrPoint.cpp.

References coefs.

Referenced by mrpt::opengl::CPolyhedron::setNormal().

Here is the caller graph for this function:

◆ getNormalVector() [2/2]

TVector3D mrpt::math::TPlane::getNormalVector ( ) const

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 939 of file TPoseOrPoint.cpp.

References coefs.

◆ getUnitaryNormalVector()

void mrpt::math::TPlane::getUnitaryNormalVector ( double(&)  vec[3]) const

Get normal vector.

Definition at line 946 of file TPoseOrPoint.cpp.

References ASSERT_ABOVE_, coefs, and mrpt::math::getEpsilon().

Referenced by getAsPose3D(), and getAsPose3DForcingOrigin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unitarize()

void mrpt::math::TPlane::unitarize ( )

Unitarize normal vector.

Definition at line 954 of file TPoseOrPoint.cpp.

References coefs.

Referenced by mrpt::opengl::CPolyhedron::augment(), mrpt::math::getSegmentBisector(), and mrpt::math::project3D().

Here is the caller graph for this function:

Member Data Documentation

◆ coefs




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 8fe78517f Sun Jul 14 19:43:28 2019 +0200 at lun oct 28 02:10:00 CET 2019