This class implements [110] on polygonal surfaces (using Discrete differential calculus on polygonal surfaces).
More...
#include <DGtal/dec/VectorsInHeat.h>
template<typename TPolygonalCalculus>
class DGtal::VectorsInHeat< TPolygonalCalculus >
This class implements [110] on polygonal surfaces (using Discrete differential calculus on polygonal surfaces).
Description of template class 'VectorsInHeat'
see Vector Heat Method using discrete polygonal calculus for details and examples.
- Template Parameters
-
Definition at line 62 of file VectorsInHeat.h.
◆ Conditions
template<typename TPolygonalCalculus>
◆ DenseMatrix
template<typename TPolygonalCalculus>
◆ IntegerVector
template<typename TPolygonalCalculus>
◆ LinAlgBackend
template<typename TPolygonalCalculus>
◆ PolygonalCalculus
template<typename TPolygonalCalculus>
◆ Solver
template<typename TPolygonalCalculus>
◆ SparseMatrix
template<typename TPolygonalCalculus>
◆ Vector
template<typename TPolygonalCalculus>
◆ Vertex
template<typename TPolygonalCalculus>
◆ VectorsInHeat() [1/4]
template<typename TPolygonalCalculus>
◆ VectorsInHeat() [2/4]
template<typename TPolygonalCalculus>
Constructor from an existing polygonal calculus. T
- Parameters
-
Definition at line 84 of file VectorsInHeat.h.
85 {
87 }
This class implements sharp:2019:vhm on polygonal surfaces (using Discrete differential calculus on p...
bool myIsInit
Validitate flag.
const PolygonalCalculus * myCalculus
The underlying PolygonalCalculus instance.
References calculus, myCalculus, and myIsInit.
◆ ~VectorsInHeat()
template<typename TPolygonalCalculus>
◆ VectorsInHeat() [3/4]
template<typename TPolygonalCalculus>
| DGtal::VectorsInHeat< TPolygonalCalculus >::VectorsInHeat |
( |
const VectorsInHeat< TPolygonalCalculus > & | other | ) |
|
|
delete |
Copy constructor.
- Parameters
-
| other | the object to clone. |
References VectorsInHeat().
◆ VectorsInHeat() [4/4]
template<typename TPolygonalCalculus>
| DGtal::VectorsInHeat< TPolygonalCalculus >::VectorsInHeat |
( |
VectorsInHeat< TPolygonalCalculus > && | other | ) |
|
|
delete |
◆ addSource()
template<typename TPolygonalCalculus>
Adds a source vector (3D extrinsic) at a vertex aV the vector gets projected to the tangent space
- Parameters
-
| aV | the Vertex |
| ev | the extrinsic R3 vector to add (only keeps the tangential part) |
Definition at line 182 of file VectorsInHeat.h.
183 {
186 v =
v.normalized()*
ev.norm();
191 }
PolygonalCalculus::Vector Vector
Vector myScalarSource
Source vectors.
References myCalculus, myDiracSource, myScalarSource, and myVectorSource.
◆ clearSource()
template<typename TPolygonalCalculus>
◆ compute()
template<typename TPolygonalCalculus>
Main computation of the Vectors In Heat
- Returns
- the estimated heat diffused vectors from the sources expressed
Definition at line 237 of file VectorsInHeat.h.
238 {
240
245
246
247
249 {
257 }
258
260
267 }
268
270 }
static DenseVector dirichletVector(const SparseMatrix &A, const DenseVector &b, const IntegerVector &p, const DenseVector &u)
static DenseVector dirichletSolution(const DenseVector &xd, const IntegerVector &p, const DenseVector &u)
SparseMatrix myScalarHeatOpe
The operators for heat diffusion.
Solver myVectorHeatSolver
IntegerVector myBoundary
The boundary characteristic vector.
Solver myScalarHeatSolver
Heat solvers.
Solver myHeatDirichletSolver
Heat solver with Dirichlet boundary conditions.
References DGtal::DirichletConditions< LinAlgBackend >::dirichletSolution(), DGtal::DirichletConditions< LinAlgBackend >::dirichletVector(), myBoundary, myCalculus, myDiracSource, myHeatDirichletSolver, myIsInit, myManageBoundary, myScalarHeatOpe, myScalarHeatSolver, myScalarSource, myVectorHeatSolver, myVectorSource, and surfmesh.
◆ extrinsicVectorSourceAtVertex()
template<typename TPolygonalCalculus>
extrinsicVectorSourceAtVertex get extrinsic source at vertex
- Parameters
-
- Returns
- 3D source vector
Definition at line 216 of file VectorsInHeat.h.
216 {
219 }
Vector intrinsicVectorSourceAtVertex(const Vertex aV)
intrinsicVectorSourceAtVertex get intrinsic source at vertex
References intrinsicVectorSourceAtVertex(), myCalculus, and myIsInit.
◆ init()
template<typename TPolygonalCalculus>
| void DGtal::VectorsInHeat< TPolygonalCalculus >::init |
( |
double | dt, |
|
|
double | lambda = 1.0, |
|
|
bool | boundary_with_mixed_solution = false ) |
|
inline |
Initialize the solvers with dt as timestep for the heat diffusion and lambda parameter for the polygonal calculus, which guarantee definiteness for positive lambda.
- Parameters
-
| dt | timestep |
| lambda | |
| boundary_with_mixed_solution | when 'true' and when the surface has boundaries, mix two solutions of the heat diffusion operation (Neumann and Dirichlet null conditions on boundary). |
Definition at line 134 of file VectorsInHeat.h.
136 {
138
140
142
147
148
151
152
156
157
164 {
168 }
171
173
175 }
static SparseMatrix dirichletOperator(const SparseMatrix &A, const IntegerVector &p)
PolygonalCalculus::SparseMatrix SparseMatrix
SparseMatrix myVectorHeatOpe
References DGtal::DirichletConditions< LinAlgBackend >::dirichletOperator(), dt, laplacian(), myBoundary, myCalculus, myDiracSource, myHeatDirichletSolver, myIsInit, myManageBoundary, myScalarHeatOpe, myScalarHeatSolver, myScalarSource, myVectorHeatOpe, myVectorHeatSolver, myVectorSource, and surfmesh.
◆ intrinsicVectorSourceAtVertex()
template<typename TPolygonalCalculus>
◆ isValid()
template<typename TPolygonalCalculus>
◆ operator=() [1/2]
template<typename TPolygonalCalculus>
Copy assignment operator.
- Parameters
-
- Returns
- a reference on 'this'.
References VectorsInHeat().
◆ operator=() [2/2]
template<typename TPolygonalCalculus>
Move assignment operator.
- Parameters
-
- Returns
- a reference on 'this'.
References VectorsInHeat().
◆ vectorSource()
template<typename TPolygonalCalculus>
◆ myBoundary
template<typename TPolygonalCalculus>
◆ myCalculus
template<typename TPolygonalCalculus>
◆ myDiracSource
template<typename TPolygonalCalculus>
◆ myHeatDirichletSolver
template<typename TPolygonalCalculus>
◆ myIsInit
template<typename TPolygonalCalculus>
◆ myManageBoundary
template<typename TPolygonalCalculus>
When 'true', manage boundaries with a mixed solution of Neumann and Dirichlet conditions.
Definition at line 301 of file VectorsInHeat.h.
Referenced by compute(), and init().
◆ myScalarHeatOpe
template<typename TPolygonalCalculus>
◆ myScalarHeatSolver
template<typename TPolygonalCalculus>
◆ myScalarSource
template<typename TPolygonalCalculus>
◆ myVectorHeatOpe
template<typename TPolygonalCalculus>
◆ myVectorHeatSolver
template<typename TPolygonalCalculus>
◆ myVectorSource
template<typename TPolygonalCalculus>
The documentation for this class was generated from the following file: