9template <
class DataPo
int,
class WeightKernel>
11 const DataPoint&
_q)
const
13 const auto lq = NeighborhoodFrame::convertToLocalBasis(
_q.pos());
16 return {(
d <= m_t) ? m_wk.f(
d / m_t) :
Scalar(0.),
lq};
18 return {m_wk.f(
d / m_t),
lq};
21template <
class DataPo
int,
class WeightKernel>
25 static_assert(WeightKernel::isDValid,
"First order derivatives are required");
27 const auto q = NeighborhoodFrame::convertToLocalBasis(
_q);
30 if ((!isCompact) || (
d <= m_t &&
d !=
Scalar(0.)))
31 result = (
q / (
d * m_t)) * m_wk.df(
d / m_t);
35template <
class DataPo
int,
class WeightKernel>
39 static_assert(WeightKernel::isDDValid,
"Second order derivatives are required");
41 const auto q = NeighborhoodFrame::convertToLocalBasis(
_q);
43 if ((!isCompact) || (
d <= m_t &&
d !=
Scalar(0.)))
46 result =
q *
q.transpose() /
d * (m_wk.ddf(
d / m_t) / m_t -
der /
d);
53template <
class DataPo
int,
class WeightKernel>
57 static_assert(WeightKernel::isDValid,
"First order derivatives are required");
58 Scalar d = NeighborhoodFrame::convertToLocalBasis(
_q).norm();
59 return ((!isCompact) || (
d <= m_t)) ?
Scalar(-
d * m_wk.df(
d / m_t) / (m_t * m_t)) :
Scalar(0.);
62template <
class DataPo
int,
class WeightKernel>
66 static_assert(WeightKernel::isDDValid,
"Second order derivatives are required");
67 Scalar d = NeighborhoodFrame::convertToLocalBasis(
_q).norm();
68 return ((!isCompact) || (
d <= m_t)) ?
Scalar(
Scalar(2.) *
d / (m_t * m_t * m_t) * m_wk.df(
d / m_t) +
69 d *
d / (m_t * m_t * m_t * m_t) * m_wk.ddf(
d / m_t))
73template <
class DataPo
int,
class WeightKernel>
77 static_assert(WeightKernel::isDDValid,
"Second order derivatives are required");
79 const auto q = NeighborhoodFrame::convertToLocalBasis(
_q);
81 if ((!isCompact) || (
d <= m_t &&
d !=
Scalar(0.)))
82 result = -
q / (m_t * m_t) * (m_wk.df(
d / m_t) /
d + m_wk.ddf(
d / m_t) / m_t);
Aggregator class used to declare specialized structures using CRTP.
Weight neighbors according to the Euclidean distance between a query and a reference position.
typename DataPoint::MatrixType MatrixType
Matrix type from DataPoint.
std::pair< Scalar, VectorType > WeightReturnType
Return type of the method #w()
typename DataPoint::Scalar Scalar
Scalar type from DataPoint.
typename DataPoint::VectorType VectorType
Vector type from DataPoint.