struct MLSResult
Overview
Stores the result of a local MLS surface fit, inspired by pcl::MLSResult.
This struct will live inside FilterMLS::Impl
struct MLSResult { // fields bool valid = false; Eigen::Vector3d mean; Eigen::Vector3d plane_normal; Eigen::Vector3d u_axis; Eigen::Vector3d v_axis; Eigen::VectorXd c_vec; int order = 0; // methods void computeMLSSurface( const Eigen::Vector3d& query_point, const mrpt::maps::CPointsMap& pc, const std::vector<uint64_t>& neighbor_indices, int poly_order, double search_radius, std::vector<double>& weights_workspace, std::vector<Eigen::Vector3d>& points_workspace, Eigen::VectorXd& basis_workspace, std::vector<double>& u_pow_workspace, std::vector<double>& v_pow_workspace ); void projectPointSimple( const Eigen::Vector3d& pt, Eigen::Vector3d& projected_pt, Eigen::Vector3d& projected_normal, std::vector<double>& u_pow_cache, std::vector<double>& v_pow_cache ) const; };
Methods
void computeMLSSurface( const Eigen::Vector3d& query_point, const mrpt::maps::CPointsMap& pc, const std::vector<uint64_t>& neighbor_indices, int poly_order, double search_radius, std::vector<double>& weights_workspace, std::vector<Eigen::Vector3d>& points_workspace, Eigen::VectorXd& basis_workspace, std::vector<double>& u_pow_workspace, std::vector<double>& v_pow_workspace )
Computes the local surface fit for a query point and its neighbors. This is a port of the logic from pcl::MovingLeastSquares.
void projectPointSimple( const Eigen::Vector3d& pt, Eigen::Vector3d& projected_pt, Eigen::Vector3d& projected_normal, std::vector<double>& u_pow_cache, std::vector<double>& v_pow_cache ) const
Projects a point onto the fitted surface using the SIMPLE method.