Visual Computing Library
Loading...
Searching...
No Matches
vcl::FaceConcept Concept Reference

The FaceConcept describes how a Face element that can be used for a FaceContainer should be organized. More...

#include <vclib/concepts/mesh/elements/face.h>

Concept definition

template<typename T>
concept vcl::FaceConcept =
ElementConcept<T> && RemoveRef<T>::ELEMENT_ID == ElemId::FACE &&
(RemoveRef<T>::VERTEX_NUMBER < 0 || RemoveRef<T>::VERTEX_NUMBER >= 3) &&
(!face::HasTriangleBitFlags<T> || RemoveRef<T>::VERTEX_NUMBER == 3) &&
Definition element.h:31
The FaceConcept describes how a Face element that can be used for a FaceContainer should be organized...
Definition face.h:124
SanityCheckAdjacentEdges concept.
Definition adjacent_edges.h:158
SanityCheckAdjacentFaces concept.
Definition adjacent_faces.h:158
SanityCheckWedgeColors concept.
Definition wedge_colors.h:118
SanityCheckWedgeTexCoords concept.
Definition wedge_tex_coords.h:124
Definition face.h:56
Definition face.h:84
Definition face.h:86

Detailed Description

The FaceConcept describes how a Face element that can be used for a FaceContainer should be organized.

The Face concept is satisfied for a class F if ALL the following sentences are true:

  • The class F has the BitFlags component (or a derivate);
  • The class F has either VertexPointers or VertexIndices components;
  • The number of vertices of the VertexPointers/VertexIndices is -1 (dynamic size) or at least 3 (static size)
  • If the class F has the TriangleBitFlags component (or a derivate), the number of vertices must be 3 (static)
  • If the class F has the AdjacentEdges component (or a derivate), its size must be the same of the vertices;
  • If the class F has the AdjacentFaces component (or a derivate), its size must be the same of the vertices;
  • If the class F has the WedgeColors component (or a derivate), its size must be the same of the vertices;
  • If the class F has the WedgeTexCoords component (or a derivate), its size must be the same of the vertices;