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>
140template<
typename MeshType>
155template<
typename MeshType>
171template<
typename MeshType>
186template<
typename MeshType>
201template<
typename MeshType>
216template<
typename MeshType>
230template<
typename MeshType>
249template<MeshConcept MeshType>
255template<MeshConcept MeshType>
256bool isPerVertexAdjacentFacesAvailable(
const MeshType& m)
260 CompId::ADJACENT_FACES>(m);
263template<MeshConcept MeshType>
264bool enableIfPerVertexAdjacentFacesOptional(MeshType& m)
268 CompId::ADJACENT_FACES>(m);
271template<MeshConcept MeshType>
272bool isPerVertexAdjacentVerticesAvailable(
const MeshType& m)
276 CompId::ADJACENT_VERTICES>(m);
279template<MeshConcept MeshType>
280bool enableIfPerVertexAdjacentVerticesOptional(MeshType& m)
284 CompId::ADJACENT_VERTICES>(m);
287template<MeshConcept MeshType>
288bool isPerVertexColorAvailable(
const MeshType& m)
290 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::COLOR>(m);
293template<MeshConcept MeshType>
294bool enableIfPerVertexColorOptional(MeshType& m)
296 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::COLOR>(
300template<MeshConcept MeshType>
301bool isPerVertexMarkAvailable(
const MeshType& m)
303 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::MARK>(m);
306template<MeshConcept MeshType>
307bool enableIfPerVertexMarkOptional(MeshType& m)
309 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::MARK>(m);
312template<MeshConcept MeshType>
313bool isPerVertexMaterialIndexAvailable(
const MeshType& m)
317 CompId::MATERIAL_INDEX>(m);
320template<MeshConcept MeshType>
321bool enableIfPerVertexMaterialIndexOptional(MeshType& m)
325 CompId::MATERIAL_INDEX>(m);
328template<MeshConcept MeshType>
329bool isPerVertexNormalAvailable(
const MeshType& m)
331 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::NORMAL>(m);
334template<MeshConcept MeshType>
335bool enableIfPerVertexNormalOptional(MeshType& m)
337 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::NORMAL>(
341template<MeshConcept MeshType>
342bool isPerVertexPrincipalCurvatureAvailable(
const MeshType& m)
346 CompId::PRINCIPAL_CURVATURE>(m);
349template<MeshConcept MeshType>
350bool enableIfPerVertexPrincipalCurvatureOptional(MeshType& m)
354 CompId::PRINCIPAL_CURVATURE>(m);
357template<MeshConcept MeshType>
358bool isPerVertexQualityAvailable(
const MeshType& m)
360 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::QUALITY>(m);
363template<MeshConcept MeshType>
364bool enableIfPerVertexQualityOptional(MeshType& m)
366 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::QUALITY>(
370template<MeshConcept MeshType>
371bool isPerVertexTangentAvailable(
const MeshType& m)
373 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::TANGENT>(m);
376template<MeshConcept MeshType>
377bool enableIfPerVertexTangentOptional(MeshType& m)
379 return enableIfPerElementComponentOptional<ElemId::VERTEX, CompId::TANGENT>(
383template<MeshConcept MeshType>
384bool isPerVertexTexCoordAvailable(
const MeshType& m)
386 return isPerElementComponentAvailable<ElemId::VERTEX, CompId::TEX_COORD>(m);
389template<MeshConcept MeshType>
390bool enableIfPerVertexTexCoordOptional(MeshType& m)
394 CompId::TEX_COORD>(m);
401template<MeshConcept MeshType>
402void requireVertexContainerCompactness(
const MeshType& m)
404 requireElementContainerCompactness<ElemId::VERTEX>(m);
407template<
typename MeshType>
408void requirePerVertexAdjacentFaces(
const MeshType& m)
409 requires HasPerVertexAdjacentFaces<MeshType>
411 requirePerElementComponent<ElemId::VERTEX, CompId::ADJACENT_FACES>(m);
414template<
typename MeshType>
415void requirePerVertexAdjacentVertices(
const MeshType& m)
416 requires HasPerVertexAdjacentVertices<MeshType>
418 requirePerElementComponent<ElemId::VERTEX, CompId::ADJACENT_VERTICES>(m);
421template<
typename MeshType>
422void requirePerVertexColor(
const MeshType& m)
423 requires HasPerVertexColor<MeshType>
425 requirePerElementComponent<ElemId::VERTEX, CompId::COLOR>(m);
428template<
typename MeshType>
429void requirePerVertexMark(
const MeshType& m)
requires HasPerVertexMark<MeshType>
431 requirePerElementComponent<ElemId::VERTEX, CompId::MARK>(m);
434template<
typename MeshType>
435void requirePerVertexMaterialIndex(
const MeshType& m)
436 requires HasPerVertexMaterialIndex<MeshType>
438 requirePerElementComponent<ElemId::VERTEX, CompId::MATERIAL_INDEX>(m);
441template<
typename MeshType>
442void requirePerVertexNormal(
const MeshType& m)
443 requires HasPerVertexNormal<MeshType>
445 requirePerElementComponent<ElemId::VERTEX, CompId::NORMAL>(m);
448template<
typename MeshType>
449void requirePerVertexPrincipalCurvature(
const MeshType& m)
450 requires HasPerVertexPrincipalCurvature<MeshType>
452 requirePerElementComponent<ElemId::VERTEX, CompId::PRINCIPAL_CURVATURE>(m);
455template<
typename MeshType>
456void requirePerVertexQuality(
const MeshType& m)
457 requires HasPerVertexQuality<MeshType>
459 requirePerElementComponent<ElemId::VERTEX, CompId::QUALITY>(m);
462template<
typename MeshType>
463void requirePerVertexTangent(
const MeshType& m)
464 requires HasPerVertexTangent<MeshType>
466 requirePerElementComponent<ElemId::VERTEX, CompId::TANGENT>(m);
469template<
typename MeshType>
470void requirePerVertexTexCoord(
const MeshType& m)
471 requires HasPerVertexTexCoord<MeshType>
473 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:231
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 MaterialIndex component.
Definition vertex_requirements.h:141
Concept that checks if a Mesh has the per Vertex Normal component.
Definition vertex_requirements.h:156
Concept that checks if a Mesh has the per Vertex PrincipalCurvature component.
Definition vertex_requirements.h:172
Concept that checks if a Mesh has the per Vertex Quality component.
Definition vertex_requirements.h:187
Concept that checks if a Mesh has the per Vertex Tangent component.
Definition vertex_requirements.h:202
Concept that checks if a Mesh has the per Vertex TexCoord component.
Definition vertex_requirements.h:217
HasVertices concepts is satisfied when at least one of its types is (or inherits from) a vcl::mesh::V...
Definition vertex_container.h:1346
Definition vertex_components.h:69
Definition vertex_components.h:73
Definition vertex_components.h:77
Definition vertex_components.h:83
Definition vertex_components.h:87
Definition vertex_components.h:91
Definition vertex_components.h:95
Definition vertex_components.h:99
Definition vertex_components.h:103
Definition vertex_components.h:107
Definition vertex_components.h:111
Definition vertex_components.h:115
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:250