Ponca
aa50bfdf187919869239c5b44b748842569114c1
Point Cloud Analysis library
|
Weighting function based on the euclidean distance between a query and a reference position. More...
#include <weightFunc.h>
Public Types | |
using | Scalar = typename DataPoint::Scalar |
Scalar type from DataPoint. | |
using | VectorType = typename DataPoint::VectorType |
Vector type from DataPoint. | |
using | MatrixType = typename DataPoint::MatrixType |
Matrix type from DataPoint. | |
using | WeightReturnType = std::pair< Scalar, VectorType > |
Return type of the method w() | |
Public Member Functions | |
DistWeightFunc (const Scalar &_t=Scalar(1.)) | |
Constructor that defines the current evaluation scale. | |
void | init (const VectorType &_evalPos) |
Initialization method, called by the fitting procedure. | |
const VectorType & | basisCenter () const |
Get access to basis center location in global coordinate system. | |
VectorType | convertToGlobalBasis (const VectorType &_q) const |
Convert position from local to global coordinate system. | |
VectorType | convertToLocalBasis (const VectorType &_q) const |
Convert query from global to local coordinate system (used internally(. | |
WeightReturnType | w (const VectorType &_q, const DataPoint &) const |
Compute the weight of the given query with respect to its coordinates. | |
VectorType | spacedw (const VectorType &_q, const DataPoint &) const |
First order derivative in space (for each spatial dimension \(\mathsf{x})\). | |
MatrixType | spaced2w (const VectorType &_q, const DataPoint &) const |
Second order derivative in space (for each spatial dimension \(\mathsf{x})\). | |
Scalar | scaledw (const VectorType &_q, const DataPoint &) const |
First order derivative in scale \(t\). | |
Scalar | scaled2w (const VectorType &_q, const DataPoint &) const |
Second order derivative in scale \(t\). | |
VectorType | scaleSpaced2w (const VectorType &_q, const DataPoint &) const |
Cross derivative in scale \(t\) and in space (for each spatial dimension \(\mathsf{x})\). | |
Scalar | evalScale () const |
Access to the evaluation scale set during the initialization. | |
const VectorType & | evalPos () const |
Access to the evaluation position set during the initialization. | |
Protected Attributes | |
Scalar | m_t |
Evaluation scale. | |
WeightKernel | m_wk |
1D function applied to weight queries | |
VectorType | m_p |
basis center | |
Weighting function based on the euclidean distance between a query and a reference position.
The evaluation position is set using the init method. All the queries are expressed in global system, and the weighting function convert them to local coordinates (ie. relatively to the evaluation position).
It can be specialized for any DataPoint and uses a generic 1D BaseWeightKernel.
Definition at line 28 of file weightFunc.h.
using Ponca::DistWeightFunc< DataPoint, WeightKernel >::MatrixType = typename DataPoint::MatrixType |
Matrix type from DataPoint.
Definition at line 36 of file weightFunc.h.
using Ponca::DistWeightFunc< DataPoint, WeightKernel >::Scalar = typename DataPoint::Scalar |
Scalar type from DataPoint.
Definition at line 32 of file weightFunc.h.
using Ponca::DistWeightFunc< DataPoint, WeightKernel >::VectorType = typename DataPoint::VectorType |
Vector type from DataPoint.
Definition at line 34 of file weightFunc.h.
using Ponca::DistWeightFunc< DataPoint, WeightKernel >::WeightReturnType = std:: pair <Scalar, VectorType> |
Return type of the method w()
Definition at line 38 of file weightFunc.h.
|
inline |
Constructor that defines the current evaluation scale.
Definition at line 44 of file weightFunc.h.
|
inline |
Get access to basis center location in global coordinate system.
Definition at line 62 of file weightFunc.h.
|
inline |
Convert position from local to global coordinate system.
_q | Position in local coordinate |
Definition at line 10 of file weightFunc.hpp.
|
inline |
Convert query from global to local coordinate system (used internally(.
_q | Query in global coordinate |
Definition at line 17 of file weightFunc.hpp.
|
inline |
Access to the evaluation position set during the initialization.
Definition at line 202 of file weightFunc.h.
|
inline |
Access to the evaluation scale set during the initialization.
Definition at line 199 of file weightFunc.h.
|
inline |
Initialization method, called by the fitting procedure.
_evalPos | Basis center |
Definition at line 56 of file weightFunc.h.
|
inline |
Second order derivative in scale \(t\).
_q | Query in global coordinate |
\( \frac{\delta^2 \frac{\left|\mathbf{q}\right|}{t}}{\delta t^2} \nabla w(\frac{\left|\mathbf{q}\right|}{t}) + \left(\frac{\delta \frac{\left|\mathbf{q}\right|}{t}}{\delta t}\right)^2 \nabla^2 w(\frac{\left|\mathbf{q}\right|}{t}) = \frac{2\left|\mathbf{q}\right|}{t^3} \nabla{w(\frac{\left|\mathbf{q}\right|}{t})} + \frac{\left|\mathbf{q}\right|^2}{t^4} \nabla^2{w(\frac{\left|\mathbf{q}\right|}{t})} \)
where \( \left|\mathbf{q}\right| \) represents the norm of the query coordinates expressed in centered basis.
Definition at line 76 of file weightFunc.hpp.
|
inline |
First order derivative in scale \(t\).
_q | Query in global coordinate |
\( \frac{\delta \frac{\left|\mathbf{q}\right|}{t}}{\delta t} \nabla w(\frac{\left|\mathbf{q}\right|}{t}) = - \frac{\left|\mathbf{q}\right|}{t^2} \nabla{w(\frac{\left|\mathbf{q}\right|}{t})} \)
where \( \left|\mathbf{q}\right| \) represents the norm of the query coordinates expressed in centered basis.
Definition at line 66 of file weightFunc.hpp.
|
inline |
Cross derivative in scale \(t\) and in space (for each spatial dimension \(\mathsf{x})\).
_q | Query in global coordinate |
\( \frac{\delta^2 \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta t\ \delta \mathsf{x}} \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}} \frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta t} \nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) = -\frac{\mathbf{q}_\mathsf{x}}{t^2} \left( \frac{1}{\left|\mathbf{q}_\mathsf{x}\right|}\nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \frac{1}{t}\nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) \right)\)
where \( \left|\mathbf{q}_\mathsf{x}\right| \) represents the norm of the query coordinates expressed in centered basis.
Definition at line 88 of file weightFunc.hpp.
|
inline |
Second order derivative in space (for each spatial dimension \(\mathsf{x})\).
_q | Query in global coordinate |
\( \frac{\delta^2 \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}^2} \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \left(\frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}}\right)^2 \nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) = \frac{1}{t\left|\mathbf{q}_\mathsf{x}\right|} \left( I_d - \frac{\mathbf{q}_\mathsf{x}\mathbf{q}_\mathsf{x}^T}{\left|\mathbf{q}_\mathsf{x}\right|^2}\right) \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \frac{\mathbf{q}_\mathsf{x}\mathbf{q}_\mathsf{x}^T}{t^2\left|\mathbf{q}_\mathsf{x}\right|^2} \nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) \)
where \( \left|\mathbf{q}_\mathsf{x}\right| \) represents the norm of the query coordinates expressed in centered basis, for each spatial dimensions \( \mathsf{x}\).
Definition at line 47 of file weightFunc.hpp.
|
inline |
First order derivative in space (for each spatial dimension \(\mathsf{x})\).
_q | Query in global coordinate |
\( \frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}} \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) = \frac{\mathbf{q}}{t\left|q\right|} \nabla{w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t})} \)
where \( \left|\mathbf{q}_\mathsf{x}\right| \) represents the norm of the query coordinates expressed in centered basis, for each spatial dimensions \( \mathsf{x}\).
Definition at line 34 of file weightFunc.hpp.
|
inline |
Compute the weight of the given query with respect to its coordinates.
_q | Query in global coordinate |
As the query \(\mathbf{q}\) is expressed in global coordinate, it is first converted to the centered basis. Then, the WeightKernel is directly applied to the norm of its coordinates with respect to the current scale \( t \) :
\( w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) \)
Definition at line 24 of file weightFunc.hpp.
|
protected |
basis center
Definition at line 207 of file weightFunc.h.
|
protected |
Evaluation scale.
Definition at line 205 of file weightFunc.h.
|
protected |
1D function applied to weight queries
Definition at line 206 of file weightFunc.h.