DGtal 2.0.0
Loading...
Searching...
No Matches
DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue > Struct Template Reference

Aim: stores an arbitrary measure on a SurfaceMesh object. The measure can be spread onto its vertices, edges, or faces. This class is notably used by CorrectedNormalCurrentComputer and NormalCycleComputer to store the curvature measures, which may be located on different cells. The measure can be scalar or any other summable type (see template parameter TValue). More...

#include <DGtal/geometry/meshes/SurfaceMeshMeasure.h>

Inheritance diagram for DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >:
[legend]

Public Types

typedef TRealPoint RealPoint
typedef TRealVector RealVector
typedef TValue Value
typedef SurfaceMeshMeasure< RealPoint, RealVector, ValueSelf
typedef DGtal::SurfaceMesh< RealPoint, RealVectorSurfaceMesh
typedef SurfaceMesh::Index Index
typedef SurfaceMesh::Size Size
typedef SurfaceMesh::Vertex Vertex
typedef SurfaceMesh::Edge Edge
typedef SurfaceMesh::Face Face
typedef std::vector< ValueValues
typedef RealVector::Component Scalar
typedef std::pair< Face, ScalarWeightedFace
typedef std::pair< Edge, ScalarWeightedEdge
typedef std::pair< Vertex, ScalarWeightedVertex
typedef std::vector< VertexVertices
 The type that defines a range of vertices.
typedef std::vector< EdgeEdges
 The type that defines a range of edges.
typedef std::vector< FaceFaces
 The type that defines a range of faces.
typedef std::vector< WeightedVertexWeightedVertices
typedef std::vector< WeightedEdgeWeightedEdges
typedef std::vector< WeightedFaceWeightedFaces

Public Member Functions

Standard services (construction, initialization, assignment)
 SurfaceMeshMeasure (ConstAlias< SurfaceMesh > aMesh=nullptr, Value zero_value=Value())
const SurfaceMeshmeshPtr () const
const ValueskMeasures (Dimension dim) const
ValueskMeasures (Dimension dim)
Measure services
Value measure () const
Value measure (const RealPoint &x, Scalar r, Face f) const
Value vertexMeasure (Vertex v) const
Value vertexMeasure (const Vertices &vertices) const
Value vertexMeasure (const WeightedVertices &wvertices) const
Value edgeMeasure (Edge e) const
Value edgeMeasure (const Edges &edges) const
Value edgeMeasure (const WeightedEdges &wedges) const
Value faceMeasure (Face f) const
Value faceMeasure (const Faces &faces) const
Value faceMeasure (const WeightedFaces &wfaces) const

Data Fields

Values vertex_measures
 Stores the scalar curvature measure per indexed vertex element.
Values edge_measures
 Stores the scalar curvature measure per indexed edge element.
Values face_measures
 Stores the scalar curvature measure per indexed face element.

Static Public Attributes

static const Dimension dimension = RealPoint::dimension

Protected Attributes

const SurfaceMeshmyMeshPtr
 A pointer to the mesh over which computations are done.
Value myZero
 Zero value for the given type.

Detailed Description

template<typename TRealPoint, typename TRealVector, typename TValue>
struct DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >

Aim: stores an arbitrary measure on a SurfaceMesh object. The measure can be spread onto its vertices, edges, or faces. This class is notably used by CorrectedNormalCurrentComputer and NormalCycleComputer to store the curvature measures, which may be located on different cells. The measure can be scalar or any other summable type (see template parameter TValue).

Description of template class 'SurfaceMeshMeasure'

The common workflow to use this object is to access its public array data with a call to SurfaceMeshMeasure::kMeasures, then resize it and fill in its values. Of course, the indices used to number cells in the SurfaceMesh are the same as the indices used to store the measure associated to cells.

ScalarMeasure mu0( &myMesh, 0.0 );
auto& face_mu0 = mu0.kMeasures( 2 );
face_mu0.resize( myMesh.nbFaces() );
...

Afterwards, you can access the global measure of a set of cells specified by their indices through convenient methods like SurfaceMeshMeasure::vertexMeasure, SurfaceMeshMeasure::edgeMeasure, SurfaceMeshMeasure::faceMeasure, with potential weights.

Template Parameters
TRealPointan arbitrary model of RealPoint.
TRealVectoran arbitrary model of RealVector.
TValuean arbitrary model of CCommutativeRing

Definition at line 82 of file SurfaceMeshMeasure.h.

Member Typedef Documentation

◆ Edge

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef SurfaceMesh::Edge DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Edge

Definition at line 99 of file SurfaceMeshMeasure.h.

◆ Edges

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< Edge > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Edges

The type that defines a range of edges.

Definition at line 109 of file SurfaceMeshMeasure.h.

◆ Face

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef SurfaceMesh::Face DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Face

Definition at line 100 of file SurfaceMeshMeasure.h.

◆ Faces

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< Face > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Faces

The type that defines a range of faces.

Definition at line 111 of file SurfaceMeshMeasure.h.

◆ Index

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef SurfaceMesh::Index DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Index

Definition at line 96 of file SurfaceMeshMeasure.h.

◆ RealPoint

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef TRealPoint DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::RealPoint

Definition at line 87 of file SurfaceMeshMeasure.h.

◆ RealVector

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef TRealVector DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::RealVector

Definition at line 88 of file SurfaceMeshMeasure.h.

◆ Scalar

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef RealVector::Component DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Scalar

Definition at line 102 of file SurfaceMeshMeasure.h.

◆ Self

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef SurfaceMeshMeasure< RealPoint, RealVector, Value > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Self

Definition at line 90 of file SurfaceMeshMeasure.h.

◆ Size

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef SurfaceMesh::Size DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Size

Definition at line 97 of file SurfaceMeshMeasure.h.

◆ SurfaceMesh

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef DGtal::SurfaceMesh< RealPoint, RealVector > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::SurfaceMesh

Definition at line 95 of file SurfaceMeshMeasure.h.

◆ Value

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef TValue DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Value

Definition at line 89 of file SurfaceMeshMeasure.h.

◆ Values

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< Value > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Values

Definition at line 101 of file SurfaceMeshMeasure.h.

◆ Vertex

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef SurfaceMesh::Vertex DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Vertex

Definition at line 98 of file SurfaceMeshMeasure.h.

◆ Vertices

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< Vertex > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::Vertices

The type that defines a range of vertices.

Definition at line 107 of file SurfaceMeshMeasure.h.

◆ WeightedEdge

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::pair< Edge, Scalar > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::WeightedEdge

Definition at line 104 of file SurfaceMeshMeasure.h.

◆ WeightedEdges

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< WeightedEdge > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::WeightedEdges

Definition at line 113 of file SurfaceMeshMeasure.h.

◆ WeightedFace

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::pair< Face, Scalar > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::WeightedFace

Definition at line 103 of file SurfaceMeshMeasure.h.

◆ WeightedFaces

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< WeightedFace > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::WeightedFaces

Definition at line 114 of file SurfaceMeshMeasure.h.

◆ WeightedVertex

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::pair< Vertex, Scalar > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::WeightedVertex

Definition at line 105 of file SurfaceMeshMeasure.h.

◆ WeightedVertices

template<typename TRealPoint, typename TRealVector, typename TValue>
typedef std::vector< WeightedVertex > DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::WeightedVertices

Definition at line 112 of file SurfaceMeshMeasure.h.

Constructor & Destructor Documentation

◆ SurfaceMeshMeasure()

template<typename TRealPoint, typename TRealVector, typename TValue>
DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::SurfaceMeshMeasure ( ConstAlias< SurfaceMesh > aMesh = nullptr,
Value zero_value = Value() )
inline

Constructor from mesh.

Parameters
aMeshany simplified mesh that is referenced in this object.
zero_valuethe value 0 for the specified type TValue.

Definition at line 125 of file SurfaceMeshMeasure.h.

127 : myMeshPtr( &aMesh ), myZero( zero_value ) {}
Aim: stores an arbitrary measure on a SurfaceMesh object. The measure can be spread onto its vertices...
Value myZero
Zero value for the given type.
const SurfaceMesh * myMeshPtr
A pointer to the mesh over which computations are done.

Member Function Documentation

◆ edgeMeasure() [1/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::edgeMeasure ( const Edges & edges) const
inline
Parameters
edgesany range of (valid) edge indices.
Returns
its measure.

Definition at line 231 of file SurfaceMeshMeasure.h.

232 {
233 Value m = myZero;
234 if ( edge_measures.empty() ) return m;
235 for ( auto&& e : edges ) m += edge_measures[ e ];
236 return m;
237 }
Values edge_measures
Stores the scalar curvature measure per indexed edge element.

◆ edgeMeasure() [2/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::edgeMeasure ( const WeightedEdges & wedges) const
inline
Parameters
wedgesany range of weighted (valid) edge indices.
Returns
its measure.

Definition at line 241 of file SurfaceMeshMeasure.h.

242 {
243 Value m = myZero;
244 if ( edge_measures.empty() ) return m;
245 for ( auto&& e : wedges ) m += edge_measures[ e.first ] * e.second;
246 return m;
247 }

◆ edgeMeasure() [3/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::edgeMeasure ( Edge e) const
inline
Parameters
eany edge index.
Returns
its measure.

Definition at line 224 of file SurfaceMeshMeasure.h.

225 {
226 return e < edge_measures.size() ? edge_measures[ e ] : Value();
227 }

Referenced by DGtal::SurfaceMeshMeasure< RealPoint, RealVector, Scalar >::measure().

◆ faceMeasure() [1/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::faceMeasure ( const Faces & faces) const
inline
Parameters
facesany range of (valid) face indices.
Returns
its measure.

Definition at line 258 of file SurfaceMeshMeasure.h.

259 {
260 Value m = myZero;
261 if ( face_measures.empty() ) return m;
262 for ( auto&& v : faces ) m += face_measures[ v ];
263 return m;
264 }
Values face_measures
Stores the scalar curvature measure per indexed face element.

◆ faceMeasure() [2/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::faceMeasure ( const WeightedFaces & wfaces) const
inline
Parameters
wfacesany range of weighted (valid) face indices.
Returns
its measure.

Definition at line 268 of file SurfaceMeshMeasure.h.

269 {
270 Value m = myZero;
271 if ( face_measures.empty() ) return m;
272 for ( auto&& v : wfaces ) m += face_measures[ v.first ] * v.second;
273 return m;
274 }

◆ faceMeasure() [3/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::faceMeasure ( Face f) const
inline
Parameters
fany face index.
Returns
its measure.

Definition at line 251 of file SurfaceMeshMeasure.h.

252 {
253 return f < face_measures.size() ? face_measures[ f ] : Value();
254 }

Referenced by DGtal::SurfaceMeshMeasure< RealPoint, RealVector, Scalar >::measure().

◆ kMeasures() [1/2]

template<typename TRealPoint, typename TRealVector, typename TValue>
Values & DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::kMeasures ( Dimension dim)
inline
Parameters
dimthe dimension of the cells where the measures are defined, among 0: vertex, 1: edges, 2: faces.
Returns
a reference to the dim-measures.

Definition at line 147 of file SurfaceMeshMeasure.h.

148 {
149 return ( dim == 0 ) ? vertex_measures
150 : ( (dim == 1 ) ? edge_measures : face_measures );
151 }
Values vertex_measures
Stores the scalar curvature measure per indexed vertex element.

◆ kMeasures() [2/2]

template<typename TRealPoint, typename TRealVector, typename TValue>
const Values & DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::kMeasures ( Dimension dim) const
inline
Parameters
dimthe dimension of the cells where the measures are defined, among 0: vertex, 1: edges, 2: faces.
Returns
a const reference to the dim-measures.

Definition at line 139 of file SurfaceMeshMeasure.h.

140 {
141 return ( dim == 0 ) ? vertex_measures
142 : ( (dim == 1 ) ? edge_measures : face_measures );
143 }

◆ measure() [1/2]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::measure ( ) const
inline
Returns
the total measure (i.e. onto the whole space).

Definition at line 161 of file SurfaceMeshMeasure.h.

162 {
163 Value m = myZero;
164 for ( auto&& lm : vertex_measures ) m += lm;
165 for ( auto&& lm : edge_measures ) m += lm;
166 for ( auto&& lm : face_measures ) m += lm;
167 return m;
168 }

◆ measure() [2/2]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::measure ( const RealPoint & x,
Scalar r,
Face f ) const
inline

Computes the total measure on the ball of center x and radius r. The center x must lie on or close to the face f (as a hint to compute cells in the given ball).

Parameters
xthe position where the ball is centered.
rthe radius of the ball.
fthe face where center point x lies.

Definition at line 176 of file SurfaceMeshMeasure.h.

177 {
178 if ( vertex_measures.empty() && edge_measures.empty() )
179 {
181 faces = myMeshPtr->computeFacesInclusionsInBall( r, f, x );
182 return faceMeasure( faces );
183 }
184 else
185 {
187 wcells = myMeshPtr->computeCellsInclusionsInBall( r, f, x );
191 return m;
192 }
193 }
Value edgeMeasure(Edge e) const
Value vertexMeasure(Vertex v) const
std::vector< WeightedFace > WeightedFaces
Value faceMeasure(Face f) const

◆ meshPtr()

template<typename TRealPoint, typename TRealVector, typename TValue>
const SurfaceMesh * DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::meshPtr ( ) const
inline
Returns
a pointer to the associated mesh or nullptr if the measure is not valid.

Definition at line 131 of file SurfaceMeshMeasure.h.

132 {
133 return myMeshPtr;
134 }

◆ vertexMeasure() [1/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::vertexMeasure ( const Vertices & vertices) const
inline
Parameters
verticesany range of (valid) vertex indices.
Returns
its measure.

Definition at line 204 of file SurfaceMeshMeasure.h.

205 {
206 Value m = myZero;
207 if ( vertex_measures.empty() ) return m;
208 for ( auto&& v : vertices ) m += vertex_measures[ v ];
209 return m;
210 }

◆ vertexMeasure() [2/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::vertexMeasure ( const WeightedVertices & wvertices) const
inline
Parameters
wverticesany range of weighted (valid) vertex indices.
Returns
its measure.

Definition at line 214 of file SurfaceMeshMeasure.h.

215 {
216 Value m = myZero;
217 if ( vertex_measures.empty() ) return m;
218 for ( auto&& v : wvertices ) m += vertex_measures[ v.first ] * v.second;
219 return m;
220 }

◆ vertexMeasure() [3/3]

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::vertexMeasure ( Vertex v) const
inline
Parameters
vany vertex index.
Returns
its measure.

Definition at line 197 of file SurfaceMeshMeasure.h.

198 {
199 return v < vertex_measures.size() ? vertex_measures[ v ] : Value();
200 }

Referenced by DGtal::SurfaceMeshMeasure< RealPoint, RealVector, Scalar >::measure().

Field Documentation

◆ dimension

template<typename TRealPoint, typename TRealVector, typename TValue>
const Dimension DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::dimension = RealPoint::dimension
static

Definition at line 115 of file SurfaceMeshMeasure.h.

◆ edge_measures

template<typename TRealPoint, typename TRealVector, typename TValue>
Values DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::edge_measures

Stores the scalar curvature measure per indexed edge element.

Definition at line 283 of file SurfaceMeshMeasure.h.

◆ face_measures

template<typename TRealPoint, typename TRealVector, typename TValue>
Values DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::face_measures

Stores the scalar curvature measure per indexed face element.

Definition at line 285 of file SurfaceMeshMeasure.h.

◆ myMeshPtr

template<typename TRealPoint, typename TRealVector, typename TValue>
const SurfaceMesh* DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::myMeshPtr
protected

A pointer to the mesh over which computations are done.

Definition at line 290 of file SurfaceMeshMeasure.h.

◆ myZero

template<typename TRealPoint, typename TRealVector, typename TValue>
Value DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::myZero
protected

Zero value for the given type.

Definition at line 292 of file SurfaceMeshMeasure.h.

◆ vertex_measures

template<typename TRealPoint, typename TRealVector, typename TValue>
Values DGtal::SurfaceMeshMeasure< TRealPoint, TRealVector, TValue >::vertex_measures

Stores the scalar curvature measure per indexed vertex element.

Definition at line 281 of file SurfaceMeshMeasure.h.


The documentation for this struct was generated from the following file: