Ponca  73247abfe24d29406a95aee1d4dfa2d34da85d4c
Point Cloud Analysis library
Loading...
Searching...
No Matches
mlsSphereFitDer.h
1/*
2 This Source Code Form is subject to the terms of the Mozilla Public
3 License, v. 2.0. If a copy of the MPL was not distributed with this
4 file, You can obtain one at http://mozilla.org/MPL/2.0/.
5*/
6
7#pragma once
8
9#include "./defines.h"
10
11namespace Ponca
12{
13
21 template <class DataPoint, class _NFilter, int DiffType, typename T>
22 class MlsSphereFitDer : public T
23 {
24 PONCA_FITTING_DECLARE_DEFAULT_TYPES
25 PONCA_FITTING_DECLARE_DEFAULT_DER_TYPES
26
27 protected:
28 enum
29 {
30 Check = Base::PROVIDES_PRIMITIVE_DERIVATIVE && Base::PROVIDES_ALGEBRAIC_SPHERE_DERIVATIVE,
31 PROVIDES_NORMAL_DERIVATIVE
32 };
33
34 enum
35 {
36 Dim = DataPoint::Dim,
37 DerDim = Base::NbDerivatives
38 };
39
40 public:
52 using Matrix = Eigen::Matrix<Scalar, DerDim, DerDim>;
53
73 using MatrixArray = Eigen::Matrix<Scalar, DerDim, Dim * DerDim>;
74
75 protected:
76 // computation data
85 public:
86 // results
91 public:
92 PONCA_EXPLICIT_CAST_OPERATORS_DER(MlsSphereFitDer, mlsSphereFitDer)
93
94 PONCA_FITTING_DECLARE_INIT_ADDDER_FINALIZE
95
98 PONCA_MULTIARCH [[nodiscard]] inline ScalarArray dPotential() const;
99
101 PONCA_MULTIARCH [[nodiscard]] inline VectorType primitiveGradient() const;
102
104 PONCA_MULTIARCH [[nodiscard]] inline VectorArray dNormal() const;
105
106 }; // class MlsSphereFitDer
107
108#include "mlsSphereFitDer.hpp"
109
110} // namespace Ponca
Aggregator class used to declare specialized structures using CRTP.
Definition basket.h:318
Extension performing derivation of the mls surface.
typename Base::ScalarArray ScalarArray
Alias to scalar derivatives array.
typename Base::VectorArray VectorArray
Alias to vector derivatives array.
Matrix m_d2SumDotPN
Sum of the dot product between relative positions and normals with second-order weight derivatives.
VectorArray dNormal() const
Returns the second derivatives of the scalar field at the evaluation point.
Matrix m_d2Uc
Second derivative of the hyper-sphere constant term
Eigen::Matrix< Scalar, DerDim, DerDim > Matrix
Static squared matrix of scalars with a size adapted to the differentiation type.
MatrixArray m_d2SumN
Sum of normal vectors with second-order weight derivatives.
MatrixArray m_d2SumP
Sum of relative positions with second-order weight derivatives.
Matrix m_d2SumDotPP
Sum of the squared relative positions with second-order weight derivatives.
Eigen::Matrix< Scalar, DerDim, Dim *DerDim > MatrixArray
Static matrix of scalars with a size adapted to the differentiation type and the dimension of the amb...
MatrixArray m_d2Ul
Second derivative of the hyper-sphere linear term
ScalarArray dPotential() const
Returns the derivatives of the scalar field at the evaluation point.
@ Dim
Dimension of the ambient space.
@ DerDim
Number of dimensions used for the differentiation.
VectorType primitiveGradient() const
Value of the normal of the primitive at the evaluation point.
typename Base::VectorType VectorType
Alias to vector type.
MlsSphereFitDer< DataPoint, _NFilter, DiffType, T > & mlsSphereFitDer()
Explicit conversion to MlsSphereFitDer , to access methods potentially hidden by heritage.
Matrix m_d2SumW
Sum of queries weight with second-order weight derivatives.
Matrix m_d2Uq
Second derivative of the hyper-sphere quadratic term.
This Source Code Form is subject to the terms of the Mozilla Public License, v.