struct PointCloud3D

Overview

Minimal 3D point cloud adapter for KDTreeCapable.

struct PointCloud3D: public mrpt::math::KDTreeCapable
{
    // typedefs

    typedef KDTreeCapable<PointCloud3D, float, nanoflann::L2_Simple_Adaptor<float, PointCloud3D>> self_t;

    // fields

    std::vector<mrpt::math::TPoint3D> pts;

    // methods

    float kdTreeClosestPoint2DsqrError(const TPoint2D& p0) const;

    void kdTreeTwoClosestPoint2D(
        const TPoint2D& p0,
        TPoint2D& pOut1,
        TPoint2D& pOut2,
        float& outDistSqr1,
        float& outDistSqr2
        ) const;

    std::vector<size_t> kdTreeNClosestPoint2D(
        const TPoint2D& p0,
        size_t N,
        std::vector<TPoint2D>& pOut,
        std::vector<float>& outDistSqr,
        const std::optional<float>& maximumSearchDistanceSqr = std::nullopt
        ) const;

    void kdTreeNClosestPoint2DIdx(
        const TPoint2D& p0,
        size_t N,
        std::vector<size_t>& outIdx,
        std::vector<float>& outDistSqr
        ) const;

    void kdTreeNClosestPoint3D(
        const TPoint3D& p0,
        size_t N,
        std::vector<TPoint3D>& pOut,
        std::vector<float>& outDistSqr,
        const std::optional<float>& maximumSearchDistanceSqr = std::nullopt
        ) const;

    void kdTreeNClosestPoint3DIdx(
        const TPoint3D& p0,
        size_t N,
        std::vector<size_t>& outIdx,
        std::vector<float>& outDistSqr,
        const std::optional<float>& maximumSearchDistanceSqr = std::nullopt
        ) const;

    void kdTreeEnsureIndexBuilt3D();
    void kdTreeEnsureIndexBuilt2D();
    size_t kdtree_get_point_count() const;

    float kdtree_get_pt(
        size_t idx,
        int dim
        ) const;

    template <class BBOX>
    bool kdtree_get_bbox(BBOX&) const;
};

Inherited Members

public:
    // structs

    template <int _DIM = -1>
    struct TKDTreeDataHolder;

    struct TKDTreeSearchParams;

    // methods

    KDTreeCapable& operator = (const KDTreeCapable&);