Ponca  b63e69866b9b277a96802d3d06e6492d50ffc055
Point Cloud Analysis library
Loading...
Searching...
No Matches
Ponca::Basket< P, NF, Ext0, Exts > Class Template Reference

Aggregator class used to declare specialized structures using CRTP. More...

#include <basket.h>

+ Inheritance diagram for Ponca::Basket< P, NF, Ext0, Exts >:
+ Collaboration diagram for Ponca::Basket< P, NF, Ext0, Exts >:

Public Types

using Base = typename internal::BasketAggregate< P, NF, Ext0, Exts... >::type
 Base type, which aggregates all the computational objects using the CRTP.
 
using Scalar = typename P::Scalar
 Scalar type used for computation, as defined from template parameter P
 
using VectorType = typename P::VectorType
 
using DataPoint = P
 Point type used for computation.
 
using NeighborFilter = NF
 Weighting function.
 
- Public Types inherited from Ponca::BasketComputeObject< Basket< P, NF, Ext0, Exts... >, internal::BasketAggregate< P, NF, Ext0, Exts... >::type >
using Base = internal::BasketAggregate< P, NF, Ext0, Exts... >::type
 
using Derived = Basket< P, NF, Ext0, Exts... >
 <
 
using Scalar = typename Base::Scalar
 Alias to the Derived type.
 

Public Member Functions

bool addNeighbor (const DataPoint &_nei)
 Add a neighbor to perform the fit.
 
VectorType projectDescent (const VectorType &_q, int nbIter=16) const
 Project a point on the primitive using Gradient Descent This projection is realized by following the gradient of the primitive scalar field.
 
- Public Member Functions inherited from Ponca::BasketComputeObject< Basket< P, NF, Ext0, Exts... >, internal::BasketAggregate< P, NF, Ext0, Exts... >::type >
FIT_RESULT compute (const IteratorBegin &begin, const IteratorEnd &end)
 Convenience function for STL-like iterators Add neighbors stored in a container using STL-like iterators, and call finalize at the end.
 
FIT_RESULT computeWithIds (IndexRange ids, const PointContainer &points)
 Convenience function to iterate over a subset of samples in a PointContainer Add neighbors stored in a PointContainer and sampled using indices stored in ids.
 
FIT_RESULT computeMLS (const PointContainer &points, const int mlsIter=5, const Scalar epsilon=Eigen::NumTraits< Scalar >::dummy_precision())
 
FIT_RESULT computeWithIdsMLS (const IndexRange &ids, const PointContainer &points, const int mlsIter=5, const Scalar epsilon=Eigen::NumTraits< Scalar >::dummy_precision())
 
- Public Member Functions inherited from Ponca::ComputeObject< Derived >
template<typename Container >
FIT_RESULT compute (const Container &c)
 Convenience function for STL-like container.
 
template<typename IteratorBegin , typename IteratorEnd >
FIT_RESULT compute (const IteratorBegin &, const IteratorEnd &)
 Convenience function for STL-like iterators.
 
template<typename IndexRange , typename PointContainer >
FIT_RESULT computeWithIds (IndexRange, const PointContainer &)
 Convenience function to iterate over a subset of samples in a PointContainer.
 

Additional Inherited Members

- Protected Member Functions inherited from Ponca::BasketComputeObject< Basket< P, NF, Ext0, Exts... >, internal::BasketAggregate< P, NF, Ext0, Exts... >::type >
FIT_RESULT computeMLSImpl (Func &&computeFunc, const int mlsIter, const Scalar epsilon)
 Computes the fit using the MLS iteration process.
 
- Protected Member Functions inherited from Ponca::ComputeObject< Derived >
Derived & derived ()
 Retrieve the top layer object Returns a reference to the derived class so that we can use its overwritten methods.
 

Detailed Description

template<class P, class NF, template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
class Ponca::Basket< P, NF, Ext0, Exts >

Aggregator class used to declare specialized structures using CRTP.

Base ComputeObject for the Basket classes.

Implements the compute methods for fitting: compute, computeWithIds, ... Checkout Fitting Module: User Manual for more details

The various implementations of Ponca::Concept are mixed through specializations of the BasketDiff and Basket classes:

typedef
BasketDiff <BasketType, // Existing Basket, to be differentiated
DiffType, // Differentiation space: FitScaleDer, FitSpaceDer, or FitScaleDer|FitSpaceDer
ComputationalDerivativesConcept1, // Implementation of ComputationalDerivativesConcept
ComputationalDerivativesConcept2, // Implementation of ComputationalDerivativesConcept
... , //
> myFitDer; // Final structure to fit and derive a primitive over weighted samples
Aggregator class used to declare specialized structures with derivatives computations,...
Definition basket.h:283
DiffType
Flags defining which derivatives need to be computed.
Definition enums.h:34
Template Parameters
DerivedDerived class that provides the addNeighbor method (either Basket or BasketDiff)
BaseBase class that provides, through the CRTP the init, startNewPass, addNeighbor and finalize methods
PImplements PointConcept
WImplements WeightKernelConcept
Ext0Implements ComputationalObjectConcept
ExtsImplements ComputationalObjectConcept (optional)

Definition at line 321 of file basket.h.

Member Typedef Documentation

◆ Base

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
using Ponca::Basket< P, NF, Ext0, Exts >::Base = typename internal::BasketAggregate<P, NF, Ext0, Exts...>::type

Base type, which aggregates all the computational objects using the CRTP.

Definition at line 328 of file basket.h.

◆ DataPoint

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
using Ponca::Basket< P, NF, Ext0, Exts >::DataPoint = P

Point type used for computation.

Definition at line 333 of file basket.h.

◆ NeighborFilter

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
using Ponca::Basket< P, NF, Ext0, Exts >::NeighborFilter = NF

Weighting function.

Definition at line 335 of file basket.h.

◆ Scalar

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
using Ponca::Basket< P, NF, Ext0, Exts >::Scalar = typename P::Scalar

Scalar type used for computation, as defined from template parameter P

Definition at line 330 of file basket.h.

◆ VectorType

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
using Ponca::Basket< P, NF, Ext0, Exts >::VectorType = typename P::VectorType

Definition at line 331 of file basket.h.

Member Function Documentation

◆ addNeighbor()

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
bool Ponca::Basket< P, NF, Ext0, Exts >::addNeighbor ( const DataPoint _nei)
inline

Add a neighbor to perform the fit.

When called directly, don't forget to call PrimitiveBase::startNewPass when starting multiple passes

See also
compute Prefer when using a range of Points
computeWithIds Prefer when using a range of ids
Returns
false if param nei is not a valid neighbor (weight = 0)

Definition at line 345 of file basket.h.

◆ projectDescent()

template<class P , class NF , template< class, class, typename > class Ext0, template< class, class, typename > class... Exts>
VectorType Ponca::Basket< P, NF, Ext0, Exts >::projectDescent ( const VectorType &  _q,
int  nbIter = 16 
) const
inline

Project a point on the primitive using Gradient Descent This projection is realized by following the gradient of the primitive scalar field.

Warning
This function is in most cases slower than #project.
Parameters
_qStarting point
nbIterNumber of iterations (default = 16)

Definition at line 365 of file basket.h.