Ponca  94e4a36411c3364f6192f97adfa8ceee67834d6e
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
21template < class DataPoint, class _NFilter, int DiffType, typename T>
22class MlsSphereFitDer : public T
23{
24PONCA_FITTING_DECLARE_DEFAULT_TYPES
25PONCA_FITTING_DECLARE_DEFAULT_DER_TYPES
26
27protected:
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
40public:
52 typedef Eigen::Matrix< Scalar, DerDim, DerDim > Matrix;
53
73 typedef Eigen::Matrix< Scalar, DerDim, Dim*DerDim > MatrixArray;
74
75protected:
76 // computation data
84public:
85 // results
90public:
91 PONCA_EXPLICIT_CAST_OPERATORS_DER(MlsSphereFitDer,mlsSphereFitDer)
92
93 PONCA_FITTING_DECLARE_INIT_ADDDER_FINALIZE
94
97 PONCA_MULTIARCH [[nodiscard]] inline ScalarArray dPotential() const;
98
100 PONCA_MULTIARCH [[nodiscard]] inline VectorType primitiveGradient() const;
101
103 PONCA_MULTIARCH [[nodiscard]] inline VectorArray dNormal() const;
104
105}; //class MlsSphereFitDer
106
107#include "mlsSphereFitDer.hpp"
108
109} //namespace Ponca
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
@ Dim
Dimension of the ambient space.
@ DerDim
Number of dimensions used for the differentiation.
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.
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.
VectorType primitiveGradient() const
Value of the normal of the primitive at the evaluation point.
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...
typename Base::VectorType VectorType
Alias to vector type.
Eigen::Matrix< Scalar, DerDim, DerDim > Matrix
Static squared matrix of scalars with a size adapted to the differentiation 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.