9#include "../../defines.h"
10#include "../concepts.h"
12#define FUNDAMENTAL_FORM_WEINGARTEN_ESTIMATOR_REQUIREMENTS \
13 ProvidesFirstFondamentalFormComponents<T>&& ProvidesSecondFondamentalFormComponents<T>
14#define WIENGARTEN_CURVATURE_ESTIMATOR_REQUIREMENTS ProvidesTangentPlaneBasis<T>&& ProvidesWeingartenMap<T>
37 template <
class DataPo
int,
class _NFilter,
typename T>
38 requires FUNDAMENTAL_FORM_WEINGARTEN_ESTIMATOR_REQUIREMENTS
41 PONCA_FITTING_DECLARE_DEFAULT_TYPES
42 using Matrix2 = Eigen::Matrix<Scalar, 2, 2>;
43 static_assert(DataPoint::Dim == 3,
"FundamentalFormWeingartenEstimator is only valid in 3D");
110 PONCA_FITTING_DECLARE_DEFAULT_TYPES
111 PONCA_FITTING_DECLARE_MATRIX_TYPE
112 PONCA_FITTING_DECLARE_DEFAULT_DER_TYPES
113 using Matrix2 = Eigen::Matrix<Scalar, 2, 2>;
114 static_assert(DataPoint::Dim == 3,
"NormalDerivativeWeingartenEstimator is only valid in 3D");
115 static_assert(Base::isSpaceDer(),
"NormalDerivativeWeingartenEstimator requires spatial derivation");
118 MatrixType m_tangentBasis{MatrixType::Zero()};
123 PONCA_FITTING_DECLARE_FINALIZE
164 template <
class DataPo
int,
class _NFilter,
typename T>
165 requires WIENGARTEN_CURVATURE_ESTIMATOR_REQUIREMENTS
168 PONCA_FITTING_DECLARE_DEFAULT_TYPES
169 using Matrix2 = Eigen::Matrix<Scalar, 2, 2>;
170 static_assert(DataPoint::Dim == 3,
"WeingartenCurvatureEstimator is only valid in 3D");
173 Eigen::SelfAdjointEigenSolver<Matrix2> m_solver;
176 PONCA_FITTING_DECLARE_FINALIZE
190 vmin = Base::tangentPlaneToWorld(
vmin,
false);
200 vmax = Base::tangentPlaneToWorld(
vmax,
false);
213 template <
class DataPo
int,
class _NFilter,
typename T>
216 PONCA_FITTING_DECLARE_DEFAULT_TYPES
225 PONCA_FITTING_DECLARE_DEFAULT_TYPES
226 PONCA_FITTING_DECLARE_DEFAULT_DER_TYPES
233#include "weingarten.hpp"
Aggregator class used to declare specialized structures using CRTP.
Compute a Weingarten map from the spatial derivatives of the normal field .
typename Base::VectorType VectorType
Alias to vector type.
typename DataPoint::MatrixType MatrixType
Alias to matrix type.
Compute principal curvatures from a base class providing fundamental forms.
Scalar GaussianCurvature() const
Returns an estimate of the Gaussian curvature.
typename Base::VectorType VectorType
Alias to vector type.
Scalar kmax() const
Returns an estimate of the maximal principal curvature value.
Scalar kmin() const
Returns an estimate of the minimal principal curvature value.
VectorType kmaxDirection() const
Returns an estimate of the maximal principal curvature direction.
Scalar kMean() const
Returns an estimate of the mean curvature.
typename DataPoint::Scalar Scalar
Alias to scalar type.
VectorType kminDirection() const
Returns an estimate of the minimal principal curvature direction.
This Source Code Form is subject to the terms of the Mozilla Public License, v.
DiffType
Flags defining which derivatives need to be computed.
Compute principal curvatures from a base class providing fundamental forms.
Compute principal curvatures from a base class providing fundamental forms.