DGtal 1.4.0
|
This class implements [41] on polygonal surfaces (using Discrete differential calculus on polygonal surfaces). More...
#include <DGtal/dec/GeodesicsInHeat.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 | |
GeodesicsInHeat ()=delete | |
GeodesicsInHeat (ConstAlias< PolygonalCalculus > calculus) | |
~GeodesicsInHeat ()=default | |
GeodesicsInHeat (const GeodesicsInHeat &other)=delete | |
GeodesicsInHeat (GeodesicsInHeat &&other)=delete | |
GeodesicsInHeat & | operator= (const GeodesicsInHeat &other)=delete |
GeodesicsInHeat & | operator= (GeodesicsInHeat &&other)=delete |
void | init (double dt, double lambda=1.0, bool boundary_with_mixed_solution=false) |
void | addSource (const Vertex aV) |
void | clearSource () |
Vector | source () const |
Vector | compute () const |
bool | isValid () const |
Private Attributes | |
const PolygonalCalculus * | myCalculus |
The underlying PolygonalCalculus instance. | |
SparseMatrix | myHeatOpe |
The operator for heat diffusion. | |
Solver | myPoissonSolver |
Poisson solver. | |
Solver | myHeatSolver |
Heat solver. | |
Vector | mySource |
Source vector. | |
Vertex | myLastSourceIndex |
Vertex index to the last source point (to shift the distances) | |
bool | myIsInit |
Validitate flag. | |
double | myLambda |
Lambda parameter. | |
bool | myManageBoundary |
IntegerVector | myBoundary |
The boundary characteristic vector. | |
Solver | myHeatDirichletSolver |
Heat solver with Dirichlet boundary conditions. | |
This class implements [41] on polygonal surfaces (using Discrete differential calculus on polygonal surfaces).
Description of template class 'GeodesicsInHeat'
see Geodesics In Heat using discrete polygonal calculus for details and examples.
a | model of PolygonalCalculus. |
Definition at line 62 of file GeodesicsInHeat.h.
typedef DirichletConditions< LinAlgBackend > DGtal::GeodesicsInHeat< TPolygonalCalculus >::Conditions |
Definition at line 74 of file GeodesicsInHeat.h.
typedef PolygonalCalculus::DenseMatrix DGtal::GeodesicsInHeat< TPolygonalCalculus >::DenseMatrix |
Definition at line 69 of file GeodesicsInHeat.h.
typedef Conditions::IntegerVector DGtal::GeodesicsInHeat< TPolygonalCalculus >::IntegerVector |
Definition at line 75 of file GeodesicsInHeat.h.
typedef PolygonalCalculus::LinAlg DGtal::GeodesicsInHeat< TPolygonalCalculus >::LinAlgBackend |
Definition at line 73 of file GeodesicsInHeat.h.
typedef TPolygonalCalculus DGtal::GeodesicsInHeat< TPolygonalCalculus >::PolygonalCalculus |
Definition at line 67 of file GeodesicsInHeat.h.
typedef PolygonalCalculus::Solver DGtal::GeodesicsInHeat< TPolygonalCalculus >::Solver |
Definition at line 70 of file GeodesicsInHeat.h.
typedef PolygonalCalculus::SparseMatrix DGtal::GeodesicsInHeat< TPolygonalCalculus >::SparseMatrix |
Definition at line 68 of file GeodesicsInHeat.h.
typedef PolygonalCalculus::Vector DGtal::GeodesicsInHeat< TPolygonalCalculus >::Vector |
Definition at line 71 of file GeodesicsInHeat.h.
typedef PolygonalCalculus::Vertex DGtal::GeodesicsInHeat< TPolygonalCalculus >::Vertex |
Definition at line 72 of file GeodesicsInHeat.h.
|
delete |
Default constructor.
|
inline |
Constructor from an existing polygonal calculus. T
calculus | a instance of PolygonalCalculus |
Definition at line 84 of file GeodesicsInHeat.h.
References DGtal::GeodesicsInHeat< TPolygonalCalculus >::myIsInit.
|
default |
Destructor.
|
delete |
Copy constructor.
other | the object to clone. |
|
delete |
Move constructor.
other | the object to move. |
|
inline |
Adds a source point at a vertex aV
aV | the Vertex |
Definition at line 183 of file GeodesicsInHeat.h.
References DGtal::GeodesicsInHeat< TPolygonalCalculus >::myLastSourceIndex, and DGtal::GeodesicsInHeat< TPolygonalCalculus >::mySource.
|
inline |
Removes all source Diracs.
Definition at line 192 of file GeodesicsInHeat.h.
References DGtal::GeodesicsInHeat< TPolygonalCalculus >::myCalculus, and DGtal::GeodesicsInHeat< TPolygonalCalculus >::mySource.
|
inline |
Main computation of the Geodesic In Heat
Definition at line 209 of file GeodesicsInHeat.h.
References DGtal::DirichletConditions< TLinearAlgebraBackend >::dirichletSolution(), DGtal::DirichletConditions< TLinearAlgebraBackend >::dirichletVector(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::myBoundary, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myCalculus, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myHeatDirichletSolver, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myHeatOpe, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myHeatSolver, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myIsInit, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myLastSourceIndex, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myManageBoundary, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myPoissonSolver, DGtal::GeodesicsInHeat< TPolygonalCalculus >::mySource, and surfmesh.
Referenced by computeGeodesics().
|
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 | the timestep |
lambda | timestep |
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 135 of file GeodesicsInHeat.h.
References DGtal::DirichletConditions< TLinearAlgebraBackend >::dirichletOperator(), dt, laplacian(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::myBoundary, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myCalculus, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myHeatDirichletSolver, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myHeatOpe, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myHeatSolver, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myIsInit, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myLambda, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myManageBoundary, DGtal::GeodesicsInHeat< TPolygonalCalculus >::myPoissonSolver, DGtal::GeodesicsInHeat< TPolygonalCalculus >::mySource, and surfmesh.
|
inline |
Definition at line 269 of file GeodesicsInHeat.h.
References DGtal::GeodesicsInHeat< TPolygonalCalculus >::myCalculus, and DGtal::GeodesicsInHeat< TPolygonalCalculus >::myIsInit.
|
delete |
Copy assignment operator.
other | the object to copy. |
|
delete |
Move assignment operator.
other | the object to move. |
|
inline |
Definition at line 200 of file GeodesicsInHeat.h.
References DGtal::GeodesicsInHeat< TPolygonalCalculus >::myIsInit, and DGtal::GeodesicsInHeat< TPolygonalCalculus >::mySource.
|
private |
The boundary characteristic vector.
Definition at line 307 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
The underlying PolygonalCalculus instance.
Definition at line 279 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::clearSource(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::init(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::isValid().
|
private |
Heat solver with Dirichlet boundary conditions.
Definition at line 310 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
The operator for heat diffusion.
Definition at line 282 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
Heat solver.
Definition at line 288 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
Validitate flag.
Definition at line 297 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::GeodesicsInHeat(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::init(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::isValid(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::source().
|
private |
Lambda parameter.
Definition at line 300 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
Vertex index to the last source point (to shift the distances)
Definition at line 294 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::addSource(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute().
|
private |
When 'true', manage boundaries with a mixed solution of Neumann and Dirichlet conditions.
Definition at line 304 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
Poisson solver.
Definition at line 285 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::init().
|
private |
Source vector.
Definition at line 291 of file GeodesicsInHeat.h.
Referenced by DGtal::GeodesicsInHeat< TPolygonalCalculus >::addSource(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::clearSource(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::compute(), DGtal::GeodesicsInHeat< TPolygonalCalculus >::init(), and DGtal::GeodesicsInHeat< TPolygonalCalculus >::source().