22 static_assert(std::is_trivially_copyable_v<TPlane>);
    26     return dotProduct<3, double>(
coefs, point) + 
coefs[3];
    35     return std::abs(
getAngle(*
this, line)) <
    52     for (
int i = 0; i < 3; i++) v[i] = 
coefs[i];
    59     const double s = sqrt(squareNorm<3, double>(
coefs));
    61     const double k = 1.0 / s;
    62     for (
int i = 0; i < 3; i++) vec[i] = 
coefs[i] * k;
    68     double s = sqrt(squareNorm<3, double>(
coefs));
    69     for (
double& coef : 
coefs) coef /= s;
    77     for (
size_t i = 0; i < 3; i++)
    89         throw std::logic_error(
"Base point is not in the plane.");
    92     for (
size_t i = 0; i < 3; i++) AXIS(i, 3) = center[i];
    97     double dx1 = p2.
x - p1.
x;
    98     double dy1 = p2.
y - p1.
y;
    99     double dz1 = p2.
z - p1.
z;
   100     double dx2 = p3.
x - p1.
x;
   101     double dy2 = p3.
y - p1.
y;
   102     double dz2 = p3.
z - p1.
z;
   103     coefs[0] = dy1 * dz2 - dy2 * dz1;
   104     coefs[1] = dz1 * dx2 - dz2 * dx1;
   105     coefs[2] = dx1 * dy2 - dx2 * dy1;
   108         throw std::logic_error(
"Points are linearly dependent");
   113     double dx1 = p1.
x - r2.
pBase.
x;
   114     double dy1 = p1.
y - r2.
pBase.
y;
   115     double dz1 = p1.
z - r2.
pBase.
z;
   121         throw std::logic_error(
"Point is contained in the line");
   126     const double normal_norm = normal.
norm();
   130     const auto n = normal * (1. / normal_norm);
   145         if (r1.
contains(r2.
pBase)) 
throw std::logic_error(
"Lines are the same");
   149         for (
size_t i = 0; i < 3; i++) d[i] = r1.
pBase[i] - r2.
pBase[i];
   155         throw std::logic_error(
"Lines do not intersect");
 A compile-time fixed-size numeric matrix container. 
 
This file implements several operations that operate element-wise on individual or pairs of container...
 
void fromHomogeneousMatrix(const mrpt::math::CMatrixDouble44 &HG)
 
TPoint3D pBase
Base point. 
 
TVector3D getUnitaryNormalVector() const
Get normal vector. 
 
void crossProduct3D(const T &v0, const U &v1, V &vOut)
Computes the cross product of two 3D vectors, returning a vector normal to both. 
 
mrpt::serialization::CArchive & operator>>(mrpt::serialization::CArchive &in, CMatrixD::Ptr &pObj)
 
void getAsPose3D(mrpt::math::TPose3D &outPose) const
 
This base provides a set of functions for maths stuff. 
 
double evaluatePoint(const TPoint3D &point) const
Evaluate a point in the plane's equation. 
 
std::array< double, 3 > director
Director vector. 
 
void getAsPose3DForcingOrigin(const TPoint3D ¢er, TPose3D &pose) const
 
3D Plane, represented by its equation  
 
void unitarize()
Unitarize normal vector. 
 
double getAngle(const TPlane &p1, const TPlane &p2)
Computes the angle between two planes. 
 
bool contains(const TPoint3D &point) const
Check whether a point is inside the line. 
 
double distance(const TPoint3D &point) const
Distance to 3D point. 
 
CMatrixDouble44 generateAxisBaseFromDirectionAndAxis(const mrpt::math::TVector3D &vec, uint8_t coord)
Creates a homogeneus matrix (4x4) such that the coordinate given (0 for x, 1 for y, 2 for z) corresponds to the provided vector. 
 
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)
 
#define ASSERT_ABOVE_(__A, __B)
 
Lightweight 3D pose (three spatial coordinates, plus three angular coordinates). 
 
T norm() const
Point norm: |v| = sqrt(x^2+y^2+z^2) 
 
bool contains(const TPoint3D &point) const
Check whether a point is contained into the plane. 
 
TPlane()=default
Fast default constructor. 
 
std::array< double, 4 > coefs
Plane coefficients, stored as an array: . 
 
TVector3D getNormalVector() const
Get plane's normal vector. 
 
3D line, represented by a base point and a director vector.