Point Cloud Library (PCL)  1.14.0-dev
List of all members | Public Types | Public Member Functions | Protected Attributes
pcl::TfQuadraticXYZComparison< PointT > Class Template Reference

A comparison whether the (x,y,z) components of a given point satisfy (p'Ap + 2v'p + c [OP] 0). More...

#include <pcl/filters/conditional_removal.h>

+ Inheritance diagram for pcl::TfQuadraticXYZComparison< PointT >:
+ Collaboration diagram for pcl::TfQuadraticXYZComparison< PointT >:

Public Types

using Ptr = shared_ptr< TfQuadraticXYZComparison< PointT > >
 
using ConstPtr = shared_ptr< const TfQuadraticXYZComparison< PointT > >
 
- Public Types inherited from pcl::ComparisonBase< PointT >
using Ptr = shared_ptr< ComparisonBase< PointT > >
 
using ConstPtr = shared_ptr< const ComparisonBase< PointT > >
 

Public Member Functions

 TfQuadraticXYZComparison ()
 Constructor. More...
 
 ~TfQuadraticXYZComparison () override=default
 Empty destructor. More...
 
 TfQuadraticXYZComparison (const pcl::ComparisonOps::CompareOp op, const Eigen::Matrix3f &comparison_matrix, const Eigen::Vector3f &comparison_vector, const float &comparison_scalar, const Eigen::Affine3f &comparison_transform=Eigen::Affine3f::Identity())
 Constructor. More...
 
void setComparisonOperator (const pcl::ComparisonOps::CompareOp op)
 set the operator "[OP]" of the comparison "p'Ap + 2v'p + c [OP] 0". More...
 
void setComparisonMatrix (const Eigen::Matrix3f &matrix)
 set the matrix "A" of the comparison "p'Ap + 2v'p + c [OP] 0". More...
 
void setComparisonMatrix (const Eigen::Matrix4f &homogeneousMatrix)
 set the matrix "A" of the comparison "p'Ap + 2v'p + c [OP] 0". More...
 
void setComparisonVector (const Eigen::Vector3f &vector)
 set the vector "v" of the comparison "p'Ap + 2v'p + c [OP] 0". More...
 
void setComparisonVector (const Eigen::Vector4f &homogeneousVector)
 set the vector "v" of the comparison "p'Ap + 2v'p + c [OP] 0". More...
 
void setComparisonScalar (const float &scalar)
 set the scalar "c" of the comparison "p'Ap + 2v'p + c [OP] 0". More...
 
void transformComparison (const Eigen::Matrix4f &transform)
 transform the coordinate system of the comparison. More...
 
void transformComparison (const Eigen::Affine3f &transform)
 transform the coordinate system of the comparison. More...
 
bool evaluate (const PointT &point) const override
 Determine the result of this comparison. More...
 
- Public Member Functions inherited from pcl::ComparisonBase< PointT >
 ComparisonBase ()=default
 Constructor. More...
 
virtual ~ComparisonBase ()=default
 Destructor. More...
 
bool isCapable () const
 Return if the comparison is capable. More...
 

Protected Attributes

Eigen::Matrix4f comp_matr_
 
Eigen::Vector4f comp_vect_
 
float comp_scalar_
 
- Protected Attributes inherited from pcl::ComparisonBase< PointT >
bool capable_ {false}
 True if capable. More...
 
std::string field_name_
 Field name to compare data on. More...
 
std::uint32_t offset_ {0}
 The data offset. More...
 
ComparisonOps::CompareOp op_ {ComparisonOps::GT}
 The comparison operator type. More...
 

Detailed Description

template<typename PointT>
class pcl::TfQuadraticXYZComparison< PointT >

A comparison whether the (x,y,z) components of a given point satisfy (p'Ap + 2v'p + c [OP] 0).

Here [OP] stands for the defined pcl::ComparisonOps, i.e. for GT, GE, LT, LE or EQ; p = (x,y,z) is a point of the point cloud; A is 3x3 matrix; v is the 3x1 vector; c is a scalar.

One can also use TfQuadraticXYZComparison for simpler geometric shapes by defining the quadratic parts (i.e. the matrix A) to be zero. By combining different instances of TfQuadraticXYZComparison one can get more complex shapes. For example, to have a simple cylinder (along the x-axis) of specific radius and length, three comparisons need to be combined as AND condition:

  1. side: A = [0 0 0, 0 1 0, 0 0 1]; v = [0, 0, 0]; c = -radius²; OP = LT (meaning "<")
  2. bottom base: A = 0; v = [0.5, 0, 0]; c = -x_min; OP = GT
  3. top base: A = 0; v = [0.5, 0, 0]; c = -x_max; OP = LT
Author
Julian Löchner

Definition at line 311 of file conditional_removal.h.

Member Typedef Documentation

◆ ConstPtr

template<typename PointT >
using pcl::TfQuadraticXYZComparison< PointT >::ConstPtr = shared_ptr<const TfQuadraticXYZComparison<PointT> >

Definition at line 317 of file conditional_removal.h.

◆ Ptr

template<typename PointT >
using pcl::TfQuadraticXYZComparison< PointT >::Ptr = shared_ptr<TfQuadraticXYZComparison<PointT> >

Definition at line 316 of file conditional_removal.h.

Constructor & Destructor Documentation

◆ TfQuadraticXYZComparison() [1/2]

◆ ~TfQuadraticXYZComparison()

template<typename PointT >
pcl::TfQuadraticXYZComparison< PointT >::~TfQuadraticXYZComparison ( )
overridedefault

Empty destructor.

◆ TfQuadraticXYZComparison() [2/2]

template<typename PointT >
pcl::TfQuadraticXYZComparison< PointT >::TfQuadraticXYZComparison ( const pcl::ComparisonOps::CompareOp  op,
const Eigen::Matrix3f &  comparison_matrix,
const Eigen::Vector3f &  comparison_vector,
const float &  comparison_scalar,
const Eigen::Affine3f &  comparison_transform = Eigen::Affine3f::Identity () 
)

Constructor.

Parameters
opthe operator "[OP]" of the comparison "p'Ap + 2v'p + c [OP] 0".
comparison_matrixthe matrix "A" of the comparison "p'Ap + 2v'p + c [OP] 0".
comparison_vectorthe vector "v" of the comparison "p'Ap + 2v'p + c [OP] 0".
comparison_scalarthe scalar "c" of the comparison "p'Ap + 2v'p + c [OP] 0".
comparison_transformthe transformation of the comparison.

Definition at line 427 of file conditional_removal.hpp.

References pcl::ComparisonBase< PointT >::capable_, pcl::ComparisonBase< PointT >::op_, pcl::TfQuadraticXYZComparison< PointT >::setComparisonMatrix(), pcl::TfQuadraticXYZComparison< PointT >::setComparisonVector(), and pcl::TfQuadraticXYZComparison< PointT >::transformComparison().

Member Function Documentation

◆ evaluate()

template<typename PointT >
bool pcl::TfQuadraticXYZComparison< PointT >::evaluate ( const PointT point) const
overridevirtual

Determine the result of this comparison.

Parameters
pointthe point to evaluate
Returns
the result of this comparison.

Implements pcl::ComparisonBase< PointT >.

Definition at line 490 of file conditional_removal.hpp.

References pcl::ComparisonOps::EQ, pcl::ComparisonOps::GE, pcl::ComparisonOps::GT, pcl::ComparisonOps::LE, and pcl::ComparisonOps::LT.

◆ setComparisonMatrix() [1/2]

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::setComparisonMatrix ( const Eigen::Matrix3f &  matrix)
inline

set the matrix "A" of the comparison "p'Ap + 2v'p + c [OP] 0".

Definition at line 348 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::comp_matr_.

Referenced by pcl::TfQuadraticXYZComparison< PointT >::TfQuadraticXYZComparison().

◆ setComparisonMatrix() [2/2]

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::setComparisonMatrix ( const Eigen::Matrix4f &  homogeneousMatrix)
inline

set the matrix "A" of the comparison "p'Ap + 2v'p + c [OP] 0".

Definition at line 360 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::comp_matr_.

◆ setComparisonOperator()

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::setComparisonOperator ( const pcl::ComparisonOps::CompareOp  op)
inline

set the operator "[OP]" of the comparison "p'Ap + 2v'p + c [OP] 0".

Definition at line 340 of file conditional_removal.h.

References pcl::ComparisonBase< PointT >::op_.

◆ setComparisonScalar()

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::setComparisonScalar ( const float &  scalar)
inline

set the scalar "c" of the comparison "p'Ap + 2v'p + c [OP] 0".

Definition at line 387 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::comp_scalar_.

◆ setComparisonVector() [1/2]

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::setComparisonVector ( const Eigen::Vector3f &  vector)
inline

set the vector "v" of the comparison "p'Ap + 2v'p + c [OP] 0".

Definition at line 369 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::comp_vect_.

Referenced by pcl::TfQuadraticXYZComparison< PointT >::TfQuadraticXYZComparison().

◆ setComparisonVector() [2/2]

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::setComparisonVector ( const Eigen::Vector4f &  homogeneousVector)
inline

set the vector "v" of the comparison "p'Ap + 2v'p + c [OP] 0".

Definition at line 378 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::comp_vect_.

◆ transformComparison() [1/2]

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::transformComparison ( const Eigen::Affine3f &  transform)
inline

transform the coordinate system of the comparison.

If you think of the transformation to be a translation and rotation of the comparison in the same coordinate system, you have to provide the inverse transformation. This function does not change the original definition of the comparison. Thus, each call of this function will assume the original definition of the comparison as starting point for the transformation.

Parameters
transformthe transformation (rotation and translation) as an affine matrix.

Definition at line 418 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::transformComparison().

◆ transformComparison() [2/2]

template<typename PointT >
void pcl::TfQuadraticXYZComparison< PointT >::transformComparison ( const Eigen::Matrix4f &  transform)
inline

transform the coordinate system of the comparison.

If you think of the transformation to be a translation and rotation of the comparison in the same coordinate system, you have to provide the inverse transformation. This function does not change the original definition of the comparison. Thus, each call of this function will assume the original definition of the comparison as starting point for the transformation.

Parameters
transformthe transformation (rotation and translation) as an affine matrix.

Definition at line 402 of file conditional_removal.h.

References pcl::TfQuadraticXYZComparison< PointT >::comp_matr_, and pcl::TfQuadraticXYZComparison< PointT >::comp_vect_.

Referenced by pcl::TfQuadraticXYZComparison< PointT >::TfQuadraticXYZComparison(), and pcl::TfQuadraticXYZComparison< PointT >::transformComparison().

Member Data Documentation

◆ comp_matr_

template<typename PointT >
Eigen::Matrix4f pcl::TfQuadraticXYZComparison< PointT >::comp_matr_
protected

◆ comp_scalar_

template<typename PointT >
float pcl::TfQuadraticXYZComparison< PointT >::comp_scalar_
protected

◆ comp_vect_

template<typename PointT >
Eigen::Vector4f pcl::TfQuadraticXYZComparison< PointT >::comp_vect_
protected

The documentation for this class was generated from the following files: