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

    EIGEN_MAKE_ALIGNED_OPERATOR_NEW 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
        );

    void projectPointSimple(
        const Eigen::Vector3d& pt,
        Eigen::Vector3d& projected_pt,
        Eigen::Vector3d& projected_normal
        ) 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
    )

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
    ) const

Projects a point onto the fitted surface using the SIMPLE method.