DGtal 1.4.0
|
This class implements [111] on polygonal surfaces (using Discrete differential calculus on polygonal surfaces). More...
#include <DGtal/dec/VectorsInHeat.h>
Public Types | |
typedef TPolygonalCalculus | PolygonalCalculus |
typedef PolygonalCalculus::SparseMatrix | SparseMatrix |
typedef PolygonalCalculus::DenseMatrix | DenseMatrix |
typedef PolygonalCalculus::Solver | Solver |
typedef PolygonalCalculus::Vector | Vector |
typedef PolygonalCalculus::Vertex | Vertex |
typedef PolygonalCalculus::LinAlg | LinAlgBackend |
typedef DirichletConditions< LinAlgBackend > | Conditions |
typedef Conditions::IntegerVector | IntegerVector |
Public Member Functions | |
VectorsInHeat ()=delete | |
VectorsInHeat (ConstAlias< PolygonalCalculus > calculus) | |
~VectorsInHeat ()=default | |
VectorsInHeat (const VectorsInHeat &other)=delete | |
VectorsInHeat (VectorsInHeat &&other)=delete | |
VectorsInHeat & | operator= (const VectorsInHeat &other)=delete |
VectorsInHeat & | operator= (VectorsInHeat &&other)=delete |
void | init (double dt, double lambda=1.0, bool boundary_with_mixed_solution=false) |
void | addSource (const Vertex aV, const Vector &ev) |
void | clearSource () |
Vector | vectorSource () const |
Vector | extrinsicVectorSourceAtVertex (const Vertex aV) |
extrinsicVectorSourceAtVertex get extrinsic source at vertex | |
Vector | intrinsicVectorSourceAtVertex (const Vertex aV) |
intrinsicVectorSourceAtVertex get intrinsic source at vertex | |
std::vector< Vector > | compute () const |
bool | isValid () const |
Private Attributes | |
const PolygonalCalculus * | myCalculus |
The underlying PolygonalCalculus instance. | |
SparseMatrix | myScalarHeatOpe |
The operators for heat diffusion. | |
SparseMatrix | myVectorHeatOpe |
Solver | myScalarHeatSolver |
Heat solvers. | |
Solver | myVectorHeatSolver |
Vector | myScalarSource |
Source vectors. | |
Vector | myDiracSource |
Vector | myVectorSource |
bool | myManageBoundary |
IntegerVector | myBoundary |
The boundary characteristic vector. | |
bool | myIsInit |
Validitate flag. | |
Solver | myHeatDirichletSolver |
Heat solver with Dirichlet boundary conditions. | |
This class implements [111] 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.
a | model of PolygonalCalculus. |
Definition at line 62 of file VectorsInHeat.h.
typedef DirichletConditions< LinAlgBackend > DGtal::VectorsInHeat< TPolygonalCalculus >::Conditions |
Definition at line 74 of file VectorsInHeat.h.
typedef PolygonalCalculus::DenseMatrix DGtal::VectorsInHeat< TPolygonalCalculus >::DenseMatrix |
Definition at line 69 of file VectorsInHeat.h.
typedef Conditions::IntegerVector DGtal::VectorsInHeat< TPolygonalCalculus >::IntegerVector |
Definition at line 75 of file VectorsInHeat.h.
typedef PolygonalCalculus::LinAlg DGtal::VectorsInHeat< TPolygonalCalculus >::LinAlgBackend |
Definition at line 73 of file VectorsInHeat.h.
typedef TPolygonalCalculus DGtal::VectorsInHeat< TPolygonalCalculus >::PolygonalCalculus |
Definition at line 67 of file VectorsInHeat.h.
typedef PolygonalCalculus::Solver DGtal::VectorsInHeat< TPolygonalCalculus >::Solver |
Definition at line 70 of file VectorsInHeat.h.
typedef PolygonalCalculus::SparseMatrix DGtal::VectorsInHeat< TPolygonalCalculus >::SparseMatrix |
Definition at line 68 of file VectorsInHeat.h.
typedef PolygonalCalculus::Vector DGtal::VectorsInHeat< TPolygonalCalculus >::Vector |
Definition at line 71 of file VectorsInHeat.h.
typedef PolygonalCalculus::Vertex DGtal::VectorsInHeat< TPolygonalCalculus >::Vertex |
Definition at line 72 of file VectorsInHeat.h.
|
delete |
Default constructor.
|
inline |
Constructor from an existing polygonal calculus. T
calculus | a instance of PolygonalCalculus |
Definition at line 84 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit.
|
default |
Destructor.
|
delete |
Copy constructor.
other | the object to clone. |
|
delete |
Move constructor.
other | the object to move. |
|
inline |
Adds a source vector (3D extrinsic) at a vertex aV the vector gets projected to the tangent space
aV | the Vertex |
ev | the extrinsic R3 vector to add (only keeps the tangential part) |
Definition at line 182 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::myCalculus, DGtal::VectorsInHeat< TPolygonalCalculus >::myDiracSource, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarSource, and DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorSource.
|
inline |
Clears all sources
Definition at line 195 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::myCalculus, DGtal::VectorsInHeat< TPolygonalCalculus >::myDiracSource, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarSource, and DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorSource.
|
inline |
Main computation of the Vectors In Heat
Definition at line 237 of file VectorsInHeat.h.
References DGtal::DirichletConditions< TLinearAlgebraBackend >::dirichletSolution(), DGtal::DirichletConditions< TLinearAlgebraBackend >::dirichletVector(), DGtal::VectorsInHeat< TPolygonalCalculus >::myBoundary, DGtal::VectorsInHeat< TPolygonalCalculus >::myCalculus, DGtal::VectorsInHeat< TPolygonalCalculus >::myDiracSource, DGtal::VectorsInHeat< TPolygonalCalculus >::myHeatDirichletSolver, DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit, DGtal::VectorsInHeat< TPolygonalCalculus >::myManageBoundary, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarHeatOpe, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarHeatSolver, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarSource, DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorHeatSolver, DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorSource, and surfmesh.
|
inline |
extrinsicVectorSourceAtVertex get extrinsic source at vertex
aV | the vertex |
Definition at line 216 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::intrinsicVectorSourceAtVertex(), DGtal::VectorsInHeat< TPolygonalCalculus >::myCalculus, and DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit.
|
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.
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.
References DGtal::DirichletConditions< TLinearAlgebraBackend >::dirichletOperator(), dt, laplacian(), DGtal::VectorsInHeat< TPolygonalCalculus >::myBoundary, DGtal::VectorsInHeat< TPolygonalCalculus >::myCalculus, DGtal::VectorsInHeat< TPolygonalCalculus >::myDiracSource, DGtal::VectorsInHeat< TPolygonalCalculus >::myHeatDirichletSolver, DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit, DGtal::VectorsInHeat< TPolygonalCalculus >::myManageBoundary, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarHeatOpe, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarHeatSolver, DGtal::VectorsInHeat< TPolygonalCalculus >::myScalarSource, DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorHeatOpe, DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorHeatSolver, DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorSource, and surfmesh.
|
inline |
intrinsicVectorSourceAtVertex get intrinsic source at vertex
aV | the vertex |
Definition at line 226 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit, and DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorSource.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::extrinsicVectorSourceAtVertex().
|
inline |
Definition at line 274 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::myCalculus, and DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit.
|
delete |
Copy assignment operator.
other | the object to copy. |
|
delete |
Move assignment operator.
other | the object to move. |
|
inline |
Definition at line 205 of file VectorsInHeat.h.
References DGtal::VectorsInHeat< TPolygonalCalculus >::myIsInit, and DGtal::VectorsInHeat< TPolygonalCalculus >::myVectorSource.
|
private |
The boundary characteristic vector.
Definition at line 304 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
The underlying PolygonalCalculus instance.
Definition at line 284 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::addSource(), DGtal::VectorsInHeat< TPolygonalCalculus >::clearSource(), DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), DGtal::VectorsInHeat< TPolygonalCalculus >::extrinsicVectorSourceAtVertex(), DGtal::VectorsInHeat< TPolygonalCalculus >::init(), and DGtal::VectorsInHeat< TPolygonalCalculus >::isValid().
|
private |
|
private |
Heat solver with Dirichlet boundary conditions.
Definition at line 310 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
Validitate flag.
Definition at line 307 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), DGtal::VectorsInHeat< TPolygonalCalculus >::extrinsicVectorSourceAtVertex(), DGtal::VectorsInHeat< TPolygonalCalculus >::init(), DGtal::VectorsInHeat< TPolygonalCalculus >::intrinsicVectorSourceAtVertex(), DGtal::VectorsInHeat< TPolygonalCalculus >::isValid(), DGtal::VectorsInHeat< TPolygonalCalculus >::VectorsInHeat(), and DGtal::VectorsInHeat< TPolygonalCalculus >::vectorSource().
|
private |
When 'true', manage boundaries with a mixed solution of Neumann and Dirichlet conditions.
Definition at line 301 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
The operators for heat diffusion.
Definition at line 287 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
Heat solvers.
Definition at line 291 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
Source vectors.
Definition at line 295 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::addSource(), DGtal::VectorsInHeat< TPolygonalCalculus >::clearSource(), DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
Definition at line 288 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
Definition at line 292 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), and DGtal::VectorsInHeat< TPolygonalCalculus >::init().
|
private |
Definition at line 297 of file VectorsInHeat.h.
Referenced by DGtal::VectorsInHeat< TPolygonalCalculus >::addSource(), DGtal::VectorsInHeat< TPolygonalCalculus >::clearSource(), DGtal::VectorsInHeat< TPolygonalCalculus >::compute(), DGtal::VectorsInHeat< TPolygonalCalculus >::init(), DGtal::VectorsInHeat< TPolygonalCalculus >::intrinsicVectorSourceAtVertex(), and DGtal::VectorsInHeat< TPolygonalCalculus >::vectorSource().