23#ifndef VCL_MESH_REQUIREMENTS_VERTEX_REQUIREMENTS_H
24#define VCL_MESH_REQUIREMENTS_VERTEX_REQUIREMENTS_H
26#include "../containers/vertex_container.h"
27#include "element_requirements.h"
62template<
typename MeshType>
78template<
typename MeshType>
94template<
typename MeshType>
109template<
typename MeshType>
124template<
typename MeshType>
139template<
typename MeshType>
155template<
typename MeshType>
170template<
typename MeshType>
185template<
typename MeshType>
199template<
typename MeshType>
218template<MeshConcept MeshType>
224template<MeshConcept MeshType>
225bool isPerVertexAdjacentFacesAvailable(
const MeshType& m)
229 CompId::ADJACENT_FACES>(m);
232template<MeshConcept MeshType>
233bool enableIfPerVertexAdjacentFacesOptional(MeshType& m)
237 CompId::ADJACENT_FACES>(m);
240template<MeshConcept MeshType>
241bool isPerVertexAdjacentVerticesAvailable(
const MeshType& m)
245 CompId::ADJACENT_VERTICES>(m);
248template<MeshConcept MeshType>
249bool enableIfPerVertexAdjacentVerticesOptional(MeshType& m)
253 CompId::ADJACENT_VERTICES>(m);
256template<MeshConcept MeshType>
257bool isPerVertexColorAvailable(
const MeshType& m)
259 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::COLOR>(m);
262template<MeshConcept MeshType>
263bool enableIfPerVertexColorOptional(MeshType& m)
265 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::COLOR>(
269template<MeshConcept MeshType>
270bool isPerVertexMarkAvailable(
const MeshType& m)
272 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::MARK>(m);
275template<MeshConcept MeshType>
276bool enableIfPerVertexMarkOptional(MeshType& m)
278 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::MARK>(m);
281template<MeshConcept MeshType>
282bool isPerVertexNormalAvailable(
const MeshType& m)
284 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::NORMAL>(m);
287template<MeshConcept MeshType>
288bool enableIfPerVertexNormalOptional(MeshType& m)
290 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::NORMAL>(
294template<MeshConcept MeshType>
295bool isPerVertexPrincipalCurvatureAvailable(
const MeshType& m)
299 CompId::PRINCIPAL_CURVATURE>(m);
302template<MeshConcept MeshType>
303bool enableIfPerVertexPrincipalCurvatureOptional(MeshType& m)
307 CompId::PRINCIPAL_CURVATURE>(m);
310template<MeshConcept MeshType>
311bool isPerVertexQualityAvailable(
const MeshType& m)
313 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::QUALITY>(m);
316template<MeshConcept MeshType>
317bool enableIfPerVertexQualityOptional(MeshType& m)
319 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::QUALITY>(
323template<MeshConcept MeshType>
324bool isPerVertexTexCoordAvailable(
const MeshType& m)
326 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::TEX_COORD>(m);
329template<MeshConcept MeshType>
330bool enableIfPerVertexTexCoordOptional(MeshType& m)
334 CompId::TEX_COORD>(m);
341template<MeshConcept MeshType>
342void requireVertexContainerCompactness(
const MeshType& m)
344 requireElementContainerCompactness<ElemId::VERTEX>(m);
347template<
typename MeshType>
348void requirePerVertexAdjacentFaces(
const MeshType& m)
349 requires HasPerVertexAdjacentFaces<MeshType>
351 requirePerElementComponent<ElemId::VERTEX, CompId::ADJACENT_FACES>(m);
354template<
typename MeshType>
355void requirePerVertexAdjacentVertices(
const MeshType& m)
356 requires HasPerVertexAdjacentVertices<MeshType>
358 requirePerElementComponent<ElemId::VERTEX, CompId::ADJACENT_VERTICES>(m);
361template<
typename MeshType>
362void requirePerVertexColor(
const MeshType& m)
363 requires HasPerVertexColor<MeshType>
365 requirePerElementComponent<ElemId::VERTEX, CompId::COLOR>(m);
368template<
typename MeshType>
369void requirePerVertexMark(
const MeshType& m)
requires HasPerVertexMark<MeshType>
371 requirePerElementComponent<ElemId::VERTEX, CompId::MARK>(m);
374template<
typename MeshType>
375void requirePerVertexNormal(
const MeshType& m)
376 requires HasPerVertexNormal<MeshType>
378 requirePerElementComponent<ElemId::VERTEX, CompId::NORMAL>(m);
381template<
typename MeshType>
382void requirePerVertexPrincipalCurvature(
const MeshType& m)
383 requires HasPerVertexPrincipalCurvature<MeshType>
385 requirePerElementComponent<ElemId::VERTEX, CompId::PRINCIPAL_CURVATURE>(m);
388template<
typename MeshType>
389void requirePerVertexQuality(
const MeshType& m)
390 requires HasPerVertexQuality<MeshType>
392 requirePerElementComponent<ElemId::VERTEX, CompId::QUALITY>(m);
395template<
typename MeshType>
396void requirePerVertexTexCoord(
const MeshType& m)
397 requires HasPerVertexTexCoord<MeshType>
399 requirePerElementComponent<ElemId::VERTEX, CompId::TEX_COORD>(m);
A class representing a box in N-dimensional space.
Definition box.h:46
Concept that checks if a Mesh has the per Vertex AdjacentEdges component.
Definition vertex_requirements.h:63
Concept that checks if a Mesh has the per Vertex AdjacentFaces component.
Definition vertex_requirements.h:79
Concept that checks if a Mesh has the per Vertex AdjacentVertices component.
Definition vertex_requirements.h:95
Concept that checks if a Mesh has the per Vertex Color component.
Definition vertex_requirements.h:110
Concept that checks if a Mesh has the per Vertex CustomComponents.
Definition vertex_requirements.h:200
Concept that checks if a Mesh has the per Vertex Mark component.
Definition vertex_requirements.h:125
Concept that checks if a Mesh has the per Vertex Normal component.
Definition vertex_requirements.h:140
Concept that checks if a Mesh has the per Vertex PrincipalCurvature component.
Definition vertex_requirements.h:156
Concept that checks if a Mesh has the per Vertex Quality component.
Definition vertex_requirements.h:171
Concept that checks if a Mesh has the per Vertex TexCoord component.
Definition vertex_requirements.h:186
HasVertices concepts is satisfied when at least one of its types is (or inherits from) a vcl::mesh::V...
Definition vertex_container.h:1267
Definition vertex_components.h:67
Definition vertex_components.h:71
Definition vertex_components.h:75
Definition vertex_components.h:81
Definition vertex_components.h:85
Definition vertex_components.h:89
Definition vertex_components.h:93
Definition vertex_components.h:97
Definition vertex_components.h:101
Definition vertex_components.h:105
bool isPerElementComponentAvailable(const MeshType &m)
Returns true if the given component is available in the given element of the input mesh m.
Definition element_requirements.h:82
bool enableIfPerElementComponentOptional(MeshType &m)
Makes available the given Component in the given Element of the input mesh m, and returns true if it ...
Definition element_requirements.h:120
bool isVertexContainerCompact(const MeshType &m)
Returns true if the given mesh has its Vertex Container compact.
Definition vertex_requirements.h:219