41 #ifndef PCL_SAMPLE_CONSENSUS_IMPL_SAC_MODEL_PERPENDICULAR_PLANE_H_
42 #define PCL_SAMPLE_CONSENSUS_IMPL_SAC_MODEL_PERPENDICULAR_PLANE_H_
44 #include <pcl/sample_consensus/sac_model_perpendicular_plane.h>
47 template <
typename Po
intT>
void
49 const Eigen::VectorXf &model_coefficients,
const double threshold,
Indices &inliers)
52 if (!isModelValid (model_coefficients))
62 template <
typename Po
intT> std::size_t
64 const Eigen::VectorXf &model_coefficients,
const double threshold)
const
67 if (!isModelValid (model_coefficients))
76 template <
typename Po
intT>
void
78 const Eigen::VectorXf &model_coefficients, std::vector<double> &distances)
const
81 if (!isModelValid (model_coefficients))
91 template <
typename Po
intT>
bool
100 if (eps_angle_ > 0.0)
103 Eigen::Vector4f coeff = model_coefficients;
106 Eigen::Vector4f axis (axis_[0], axis_[1], axis_[2], 0.0f);
107 double angle_diff = std::abs (
getAngle3D (axis, coeff));
108 angle_diff = (std::min) (angle_diff,
M_PI - angle_diff);
110 if (angle_diff > eps_angle_)
119 #define PCL_INSTANTIATE_SampleConsensusModelPerpendicularPlane(T) template class PCL_EXPORTS pcl::SampleConsensusModelPerpendicularPlane<T>;
SampleConsensusModel represents the base model class.
void getDistancesToModel(const Eigen::VectorXf &model_coefficients, std::vector< double > &distances) const override
Compute all distances from the cloud data to a given plane model.
bool isModelValid(const Eigen::VectorXf &model_coefficients) const override
Check whether a model is valid given the user constraints.
void selectWithinDistance(const Eigen::VectorXf &model_coefficients, const double threshold, Indices &inliers) override
Select all the points which respect the given model coefficients as inliers.
std::size_t countWithinDistance(const Eigen::VectorXf &model_coefficients, const double threshold) const override
Count all the points which respect the given model coefficients as inliers.
SampleConsensusModelPlane defines a model for 3D plane segmentation.
double getAngle3D(const Eigen::Vector4f &v1, const Eigen::Vector4f &v2, const bool in_degree=false)
Compute the smallest angle between two 3D vectors in radians (default) or degree.
IndicesAllocator<> Indices
Type used for indices in PCL.