7template <
class DataPo
int,
class _NFilter,
typename T>
14 m_fitness =
Scalar(1.) - Base::prattNorm2();
20template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
23 PONCA_MULTIARCH_STD_MATH(sqrt);
25 Scalar prattNorm2 = Base::prattNorm2();
26 Scalar prattNorm = sqrt(prattNorm2);
31 if (Base::isSpaceDer())
32 dfield.template tail<DataPoint::Dim>() += Base::m_ul;
34 return (dfield * prattNorm - Base::m_uc * cfactor * Base::dprattNorm2()) / prattNorm2;
37template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
40 return Base::dNormal();
43template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
46 PONCA_MULTIARCH_STD_MATH(sqrt);
48 Scalar prattNorm2 = Base::prattNorm2();
49 Scalar prattNorm = sqrt(prattNorm2);
52 return Scalar(2.) * (Base::m_dUq * prattNorm - Base::m_uq * cfactor * Base::dprattNorm2()) / prattNorm2;
55template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
57 T>::dtau_normalized()
const
62template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
64 T>::deta_normalized()
const
66 return Base::getNeighborFilter().evalScale() * deta();
69template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
71 T>::dkappa_normalized()
const
73 return dkappa() * Base::getNeighborFilter().evalScale() * Base::getNeighborFilter().evalScale();
76template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
80 static_assert(bool(
DiffType &
FitScaleDer),
"Scale derivatives are required to compute Geometric Variation");
81 Scalar dtau = dtau_normalized().col(0)(0);
82 Scalar deta = deta_normalized().col(0).norm();
83 Scalar dkappa = dkappa_normalized().col(0)(0);
85 return wtau * dtau * dtau + weta * deta * deta + wkappa * dkappa * dkappa;
Differentiation of GLSParam.
typename Base::VectorArray VectorArray
Alias to vector derivatives array.
typename Base::ScalarArray ScalarArray
Alias to scalar derivatives array.
typename DataPoint::Scalar Scalar
Alias to scalar type.
Growing Least Squares reparametrization of the OrientedSphereFit.
typename DataPoint::Scalar Scalar
Alias to scalar type.
DiffType
Flags defining which derivatives need to be computed.
@ FitScaleDer
Flag indicating a scale differentiation.
FIT_RESULT
Enum corresponding to the state of a fitting method (and what the finalize function returns)
@ UNDEFINED
The fitting is undefined, you can't use it for valid results.