42#include <pcl/console/print.h>
50 const Eigen::VectorXf &
line_b,
51 Eigen::Vector4f &point,
double sqr_eps)
53 Eigen::Vector4f p1, p2;
71 Eigen::Vector4f &point,
double sqr_eps)
78template <
typename Scalar>
bool
80 const Eigen::Matrix<Scalar, 4, 1> &
plane_b,
81 Eigen::Matrix<Scalar, Eigen::Dynamic, 1> &
line,
84 using Vector3 = Eigen::Matrix<Scalar, 3, 1>;
85 using Vector4 = Eigen::Matrix<Scalar, 4, 1>;
86 using Vector5 = Eigen::Matrix<Scalar, 5, 1>;
87 using Matrix5 = Eigen::Matrix<Scalar, 5, 5>;
101 PCL_DEBUG (
"Plane A and Plane B are parallel.\n");
126template <
typename Scalar>
bool
128 const Eigen::Matrix<Scalar, 4, 1> &
plane_b,
129 const Eigen::Matrix<Scalar, 4, 1> &
plane_c,
133 using Vector3 = Eigen::Matrix<Scalar, 3, 1>;
134 using Matrix3 = Eigen::Matrix<Scalar, 3, 3>;
140 for (
int i = 0; i < 3; i++)
151 PCL_DEBUG (
"At least two planes are parallel.\n");
158 for (
int i = 0; i < 3; i++)
Iterator class for point clouds with or without given indices.
std::size_t size() const
Size of the range the iterator is going through.
bool lineWithLineIntersection(const Eigen::VectorXf &line_a, const Eigen::VectorXf &line_b, Eigen::Vector4f &point, double sqr_eps)
Get the intersection of a two 3D lines in space as a 3D point.
PCL_EXPORTS void lineToLineSegment(const Eigen::VectorXf &line_a, const Eigen::VectorXf &line_b, Eigen::Vector4f &pt1_seg, Eigen::Vector4f &pt2_seg)
Get the shortest 3D segment between two 3D lines.
Define line with line intersection functions.
bool threePlanesIntersection(const Eigen::Matrix< Scalar, 4, 1 > &plane_a, const Eigen::Matrix< Scalar, 4, 1 > &plane_b, const Eigen::Matrix< Scalar, 4, 1 > &plane_c, Eigen::Matrix< Scalar, 3, 1 > &intersection_point, double determinant_tolerance)
Determine the point of intersection of three non-parallel planes by solving the equations.
bool planeWithPlaneIntersection(const Eigen::Matrix< Scalar, 4, 1 > &plane_a, const Eigen::Matrix< Scalar, 4, 1 > &plane_b, Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &line, double angular_tolerance)
Determine the line of intersection of two non-parallel planes using lagrange multipliers.
Defines all the PCL and non-PCL macros used.