23#ifndef VCL_MESH_ELEMENTS_FACE_COMPONENTS_H
24#define VCL_MESH_ELEMENTS_FACE_COMPONENTS_H
26#include "../components/adjacent_edges.h"
27#include "../components/adjacent_faces.h"
28#include "../components/bit_flags.h"
29#include "../components/color.h"
30#include "../components/custom_components.h"
31#include "../components/mark.h"
32#include "../components/material_index.h"
33#include "../components/normal.h"
34#include "../components/parent_mesh_pointer.h"
35#include "../components/polygon_bit_flags.h"
36#include "../components/principal_curvature.h"
37#include "../components/quality.h"
38#include "../components/triangle_bit_flags.h"
39#include "../components/vertex_references.h"
40#include "../components/wedge_colors.h"
41#include "../components/wedge_tex_coords.h"
129template<
bool INDEXED,
typename EdgeType>
130using AdjacentEdges = comp::AdjacentEdges<INDEXED, EdgeType, -1,
false>;
132template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
133using AdjacentPolygonEdges =
134 comp::AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType>;
136template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
137using AdjacentTriangleEdges =
138 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType>;
140template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
141using VerticalAdjacentEdges =
142 comp::AdjacentEdges<INDEXED, EdgeType, -1,
false, ParentFaceType,
true>;
144template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
145using VerticalAdjacentPolygonEdges =
146 comp::AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType,
true>;
148template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
149using VerticalAdjacentTriangleEdges =
150 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType, true>;
152template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
153using OptionalAdjacentEdges = comp::
154 AdjacentEdges<INDEXED, EdgeType, -1,
false, ParentFaceType,
true,
true>;
156template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
157using OptionalAdjacentPolygonEdges = comp::
158 AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType,
true,
true>;
160template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
161using OptionalAdjacentTriangleEdges =
162 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType, true, true>;
164template<
typename EdgeType>
165using AdjacentEdgeIndices = comp::AdjacentEdges<
true, EdgeType, -1,
false>;
167template<
typename EdgeType,
typename ParentFaceType>
168using AdjacentPolygonEdgeIndices =
169 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType>;
171template<
typename EdgeType,
typename ParentFaceType>
172using AdjacentTriangleEdgeIndices =
173 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType>;
175template<
typename EdgeType,
typename ParentFaceType>
176using VerticalAdjacentEdgeIndices =
177 comp::AdjacentEdges<
true, EdgeType, -1,
false, ParentFaceType,
true>;
179template<
typename EdgeType,
typename ParentFaceType>
180using VerticalAdjacentPolygonEdgeIndices =
181 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType,
true>;
183template<
typename EdgeType,
typename ParentFaceType>
184using VerticalAdjacentTriangleEdgeIndices =
185 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType, true>;
187template<
typename EdgeType,
typename ParentFaceType>
188using OptionalAdjacentEdgeIndices =
189 comp::AdjacentEdges<
true, EdgeType, -1,
false, ParentFaceType,
true,
true>;
191template<
typename EdgeType,
typename ParentFaceType>
192using OptionalAdjacentPolygonEdgeIndices =
193 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType,
true,
true>;
195template<
typename EdgeType,
typename ParentFaceType>
196using OptionalAdjacentTriangleEdgeIndices =
197 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType, true, true>;
199template<
typename EdgeType>
200using AdjacentEdgePointers = comp::AdjacentEdges<
false, EdgeType, -1,
false>;
202template<
typename EdgeType,
typename ParentFaceType>
203using AdjacentPolygonEdgePointers =
204 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType>;
206template<
typename EdgeType,
typename ParentFaceType>
207using AdjacentTriangleEdgePointers =
208 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType>;
210template<
typename EdgeType,
typename ParentFaceType>
211using VerticalAdjacentEdgePointers =
212 comp::AdjacentEdges<
false, EdgeType, -1,
false, ParentFaceType,
true>;
214template<
typename EdgeType,
typename ParentFaceType>
215using VerticalAdjacentPolygonEdgePointers =
216 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType,
true>;
218template<
typename EdgeType,
typename ParentFaceType>
219using VerticalAdjacentTriangleEdgePointers =
220 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType, true>;
222template<
typename EdgeType,
typename ParentFaceType>
223using OptionalAdjacentEdgePointers =
224 comp::AdjacentEdges<
false, EdgeType, -1,
false, ParentFaceType,
true,
true>;
226template<
typename EdgeType,
typename ParentFaceType>
227using OptionalAdjacentPolygonEdgePointers =
228 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType,
true,
true>;
230template<
typename EdgeType,
typename ParentFaceType>
231using OptionalAdjacentTriangleEdgePointers =
232 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType, true, true>;
235template<
bool INDEXED,
typename ParentFaceType>
236using AdjacentPolygons =
237 comp::AdjacentFaces<INDEXED, ParentFaceType, -1,
true, ParentFaceType>;
239template<
bool INDEXED,
typename ParentFaceType>
240using AdjacentTriangles =
241 comp::AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType>;
243template<
bool INDEXED,
typename ParentFaceType>
244using VerticalAdjacentPolygons = comp::
245 AdjacentFaces<INDEXED, ParentFaceType, -1,
true, ParentFaceType,
true>;
247template<
bool INDEXED,
typename ParentFaceType>
248using VerticalAdjacentTriangles =
249 comp::AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType, true>;
251template<
bool INDEXED,
typename ParentFaceType>
252using OptionalAdjacentPolygons = comp::AdjacentFaces<
261template<
bool INDEXED,
typename ParentFaceType>
262using OptionalAdjacentTriangles = comp::
263 AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType, true, true>;
265template<
typename ParentFaceType>
266using AdjacentPolygonIndices =
267 comp::AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType>;
269template<
typename ParentFaceType>
270using AdjacentTriangleIndices =
271 comp::AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType>;
273template<
typename ParentFaceType>
274using VerticalAdjacentPolygonIndices =
275 comp::AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType,
true>;
277template<
typename ParentFaceType>
278using VerticalAdjacentTriangleIndices =
279 comp::AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType, true>;
281template<
typename ParentFaceType>
282using OptionalAdjacentPolygonIndices = comp::
283 AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType,
true,
true>;
285template<
typename ParentFaceType>
286using OptionalAdjacentTriangleIndices = comp::
287 AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType, true, true>;
289template<
typename ParentFaceType>
290using AdjacentPolygonPointers =
291 comp::AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType>;
293template<
typename ParentFaceType>
294using AdjacentTrianglePointers =
295 comp::AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType>;
297template<
typename ParentFaceType>
298using VerticalAdjacentPolygonPointers =
299 comp::AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType,
true>;
301template<
typename ParentFaceType>
302using VerticalAdjacentTrianglePointers =
303 comp::AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType, true>;
305template<
typename ParentFaceType>
306using OptionalAdjacentPolygonPointers = comp::
307 AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType,
true,
true>;
309template<
typename ParentFaceType>
310using OptionalAdjacentTrianglePointers = comp::
311 AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType, true, true>;
314using BitFlags = comp::BitFlags<>;
316template<
typename ParentFaceType>
317using VerticalBitFlags = comp::BitFlags<ParentFaceType>;
320using Color = comp::Color<>;
322template<
typename VertexType>
323using VerticalColor = comp::Color<VertexType>;
325template<
typename ParentFaceType>
326using OptionalColor = comp::Color<ParentFaceType, true>;
329template<
typename ParentFaceType>
330using CustomComponents = comp::CustomComponents<ParentFaceType>;
333using Mark = comp::Mark<>;
335template<
typename ParentFaceType>
336using VerticalMark = comp::Mark<ParentFaceType>;
338template<
typename ParentFaceType>
339using OptionalMark = comp::Mark<ParentFaceType, true>;
342using MaterialIndex = comp::MaterialIndex<>;
344template<
typename ParentFaceType>
345using VerticalMaterialIndex = comp::MaterialIndex<ParentFaceType>;
347template<
typename ParentFaceType>
348using OptionalMaterialIndex = comp::MaterialIndex<ParentFaceType, true>;
351template<
typename ScalarType,
int N>
352using Normal = comp::Normal<Point<ScalarType, N>>;
354template<
typename ScalarType>
355using Normal3 = comp::Normal3<ScalarType>;
357using Normal3f = comp::Normal3f<>;
358using Normal3d = comp::Normal3d<>;
360template<
typename ScalarType,
int N,
typename VertexType>
361using VerticalNormal = comp::Normal<Point<ScalarType, N>, VertexType>;
363template<
typename ScalarType,
typename VertexType>
364using VerticalNormal3 = comp::Normal3<ScalarType, VertexType>;
366template<
typename VertexType>
367using VerticalNormal3f = comp::Normal3f<VertexType>;
369template<
typename VertexType>
370using VerticalNormal3d = comp::Normal3d<VertexType>;
372template<
typename ScalarType,
int N,
typename ParentFaceType>
373using OptionalNormal = comp::Normal<Point<ScalarType, N>, ParentFaceType,
true>;
375template<
typename ScalarType,
typename ParentFaceType>
376using OptionalNormal3 = comp::Normal3<ScalarType, ParentFaceType, true>;
378template<
typename ParentFaceType>
379using OptionalNormal3f = comp::Normal3f<ParentFaceType, true>;
381template<
typename ParentFaceType>
382using OptionalNormal3d = comp::Normal3d<ParentFaceType, true>;
385template<
typename MeshType>
386using ParentMeshPointer = comp::ParentMeshPointer<MeshType>;
389using PolygonBitFlags = comp::PolygonBitFlags<-1>;
391template<
typename ParentFaceType>
392using VerticalPolygonBitFlags = comp::PolygonBitFlags<-1, ParentFaceType>;
395template<
typename ParentFaceType>
396using PrincipalCurvature = comp::PrincipalCurvature<ParentFaceType>;
398using PrincipalCurvaturef = comp::PrincipalCurvaturef<>;
399using PrincipalCurvatured = comp::PrincipalCurvatured<>;
401template<
typename ScalarType,
typename ParentFaceType>
402using VerticalPrincipalCurvature =
403 comp::PrincipalCurvature<ScalarType, ParentFaceType>;
405template<
typename ParentFaceType>
406using VerticalPrincipalCurvaturef = comp::PrincipalCurvaturef<ParentFaceType>;
407template<
typename ParentFaceType>
408using VerticalPrincipalCurvatured = comp::PrincipalCurvatured<ParentFaceType>;
410template<
typename ScalarType,
typename ParentFaceType>
411using OptionalPrincipalCurvature =
412 comp::PrincipalCurvature<ScalarType, ParentFaceType, true>;
414template<
typename ParentFaceType>
415using OptionalPrincipalCurvaturef =
416 comp::PrincipalCurvaturef<ParentFaceType, true>;
417template<
typename ParentFaceType>
418using OptionalPrincipalCurvatured =
419 comp::PrincipalCurvatured<ParentFaceType, true>;
422template<
typename QualityType>
423using Quality = comp::Quality<QualityType>;
425using Qualityf = comp::Qualityf<>;
426using Qualityd = comp::Qualityd<>;
428template<
typename QualityType,
typename ParentFaceType>
429using VerticalQuality = comp::Quality<QualityType, ParentFaceType>;
431template<
typename ParentFaceType>
432using VerticalQualityf = comp::Quality<float, ParentFaceType>;
434template<
typename ParentFaceType>
435using VerticalQualityd = comp::Quality<double, ParentFaceType>;
437template<
typename QualityType,
typename ParentFaceType>
438using OptionalQuality = comp::Quality<QualityType, ParentFaceType, true>;
440template<
typename ParentFaceType>
441using OptionalQualityf = comp::Quality<float, ParentFaceType, true>;
443template<
typename ParentFaceType>
444using OptionalQualityd = comp::Quality<double, ParentFaceType, true>;
447using TriangleBitFlags = comp::TriangleBitFlags<>;
449template<
typename ParentFaceType>
450using VerticalTriangleBitFlags = comp::TriangleBitFlags<ParentFaceType>;
453template<
bool INDEXED,
typename Vertex,
int N,
typename FaceType>
454using VertexReferences = comp::VertexReferences<INDEXED, Vertex, N, FaceType>;
456template<
bool INDEXED,
typename Vertex,
typename FaceType>
457using TriangleVertexRefs = comp::VertexReferences<INDEXED, Vertex, 3, FaceType>;
459template<
bool INDEXED,
typename Vertex,
typename FaceType>
460using PolygonVertexRefs = comp::VertexReferences<INDEXED, Vertex, -1, FaceType>;
462template<
typename Vertex,
int N,
typename FaceType>
463using VertexIndices = comp::VertexReferences<true, Vertex, N, FaceType>;
465template<
typename Vertex,
typename FaceType>
466using TriangleVertexInds = comp::VertexReferences<true, Vertex, 3, FaceType>;
468template<
typename Vertex,
typename FaceType>
469using PolygonVertexInds = comp::VertexReferences<
true, Vertex, -1, FaceType>;
471template<
typename Vertex,
int N,
typename FaceType>
472using VertexPointers = comp::VertexReferences<false, Vertex, N, FaceType>;
474template<
typename Vertex,
typename FaceType>
475using TriangleVertexPtrs = comp::VertexReferences<false, Vertex, 3, FaceType>;
477template<
typename Vertex,
typename FaceType>
478using PolygonVertexPtrs = comp::VertexReferences<
false, Vertex, -1, FaceType>;
481using PolygonWedgeColors = comp::WedgeColors<-1>;
483using TriangleWedgeColors = comp::WedgeColors<3>;
485template<
typename ParentFaceType>
486using VerticalPolygonWedgeColors = comp::WedgeColors<-1, ParentFaceType>;
488template<
typename ParentFaceType>
489using VerticalTriangleWedgeColors = comp::WedgeColors<3, ParentFaceType>;
491template<
typename ParentFaceType>
492using OptionalPolygonWedgeColors = comp::WedgeColors<-1, ParentFaceType,
true>;
494template<
typename ParentFaceType>
495using OptionalTriangleWedgeColors = comp::WedgeColors<3, ParentFaceType, true>;
498template<
typename ScalarType>
499using PolygonWedgeTexCoords = comp::WedgeTexCoords<ScalarType, -1>;
501template<
typename ScalarType>
502using TriangleWedgeTexCoords = comp::WedgeTexCoords<ScalarType, 3>;
504using PolygonWedgeTexCoordsf = PolygonWedgeTexCoords<float>;
505using PolygonWedgeTexCoordsd = PolygonWedgeTexCoords<double>;
506using TriangleWedgeTexCoordsf = TriangleWedgeTexCoords<float>;
507using TriangleWedgeTexCoordsd = TriangleWedgeTexCoords<double>;
509template<
typename ScalarType,
typename ParentFaceType>
510using VerticalPolygonWedgeTexCoords =
511 comp::WedgeTexCoords<ScalarType, -1, ParentFaceType,
true>;
513template<
typename ScalarType,
typename ParentFaceType>
514using VerticalTriangleWedgeTexCoords =
515 comp::WedgeTexCoords<ScalarType, 3, ParentFaceType, true>;
517template<
typename ParentFaceType>
518using VerticalPolygonWedgeTexCoordsf =
519 comp::WedgeTexCoords<float, -1, ParentFaceType>;
520template<
typename ParentFaceType>
521using VerticalPolygonWedgeTexCoordsd =
522 comp::WedgeTexCoords<double, -1, ParentFaceType>;
523template<
typename ParentFaceType>
524using VerticalTriangleWedgeTexCoordsf =
525 comp::WedgeTexCoords<float, 3, ParentFaceType>;
526template<
typename ParentFaceType>
527using VerticalTriangleWedgeTexCoordsd =
528 comp::WedgeTexCoords<double, 3, ParentFaceType>;
530template<
typename ScalarType,
typename ParentFaceType>
531using OptionalPolygonWedgeTexCoords =
532 comp::WedgeTexCoords<ScalarType, -1, ParentFaceType,
true>;
534template<
typename ScalarType,
typename ParentFaceType>
535using OptionalTriangleWedgeTexCoords =
536 comp::WedgeTexCoords<ScalarType, 3, ParentFaceType, true>;
538template<
typename ParentFaceType>
539using OptionalPolygonWedgeTexCoordsf =
540 comp::WedgeTexCoords<float, -1, ParentFaceType,
true>;
541template<
typename ParentFaceType>
542using OptionalPolygonWedgeTexCoordsd =
543 comp::WedgeTexCoords<double, -1, ParentFaceType,
true>;
544template<
typename ParentFaceType>
545using OptionalTriangleWedgeTexCoordsf =
546 comp::WedgeTexCoords<float, 3, ParentFaceType, true>;
547template<
typename ParentFaceType>
548using OptionalTriangleWedgeTexCoordsd =
549 comp::WedgeTexCoords<double, 3, ParentFaceType, true>;
A concept that checks whether a type T (that should be a Element) has the AdjacentEdges component (in...
Definition adjacent_edges.h:668
A concept that checks whether a type T (that should be a Element) has the AdjacentFaces component (in...
Definition adjacent_faces.h:672
A concept that checks whether a type T (that should be an Element) has the one of the BitFlags compon...
Definition bit_flags.h:101
A concept that checks whether a type T (that should be a Element or a Mesh) has the Color component (...
Definition color.h:132
A concept that checks whether a type T (that should be an Element or a Mesh) has the CustomComponents...
Definition custom_components.h:316
A concept that checks whether a type T (that should be a Face Element) has either the PolygonBitFlags...
Definition bit_flags.h:86
A concept that checks whether a type T (that should be a Element or a Mesh) has the Mark component (i...
Definition mark.h:198
A concept that checks whether a type T (that should be a Element or a Mesh) has the MaterialIndex com...
Definition material_index.h:142
A concept that checks whether a type T (that should be a Element) has the Normal component (inherits ...
Definition normal.h:133
A concept that checks whether a type T (that should be a Element) has the AdjacentEdges component (in...
Definition adjacent_edges.h:682
A concept that checks whether a type T (that should be a Element) has the AdjacentFaces component (in...
Definition adjacent_faces.h:686
A concept that checks whether a type T (that should be a Element or a Mesh) has the Color component (...
Definition color.h:144
A concept that checks whether a type T (that should be a Element or a Mesh) has the Mark component (i...
Definition mark.h:210
A concept that checks whether a type T (that should be a Element or a Mesh) has the MaterialIndex com...
Definition material_index.h:155
A concept that checks whether a type T (that should be a Element) has the Normal component (inherits ...
Definition normal.h:146
A concept that checks whether a type T (that should be a Element) has the PrincipalCurvature componen...
Definition principal_curvature.h:159
A concept that checks whether a type T (that should be a Element or a Mesh) has the Quality component...
Definition quality.h:144
A concept that checks whether a type T (that should be a Element) has the WedgeColors component (inhe...
Definition wedge_colors.h:350
A concept that checks whether a type T (that should be a Element) has the WedgeTexCoords component (i...
Definition wedge_tex_coords.h:386
A concept that checks whether a type T (that should be a Face Element) has the PolygonBitFlags compon...
Definition bit_flags.h:54
A concept that checks whether a type T (that should be a Element) has the PrincipalCurvature componen...
Definition principal_curvature.h:145
A concept that checks whether a type T (that should be a Element or a Mesh) has the Quality component...
Definition quality.h:132
A concept that checks whether a type T (that should be a Face Element) has the TriangleBitFlags compo...
Definition bit_flags.h:69
A concept that checks whether a type T (that should be a Element) has the VertexReferences component ...
Definition vertex_references.h:712
A concept that checks whether a type T (that should be a Element) has the WedgeColors component (inhe...
Definition wedge_colors.h:337
A concept that checks whether a type T (that should be a Element) has the WedgeTexCoords component (i...
Definition wedge_tex_coords.h:372
Definition face_components.h:69
Definition face_components.h:73
Definition face_components.h:77
Definition face_components.h:79
Definition face_components.h:83
Definition face_components.h:85
Definition face_components.h:87
Definition face_components.h:91
Definition face_components.h:95
Definition face_components.h:71
Definition face_components.h:75
Definition face_components.h:81
Definition face_components.h:89
Definition face_components.h:93
Definition face_components.h:97
Definition face_components.h:103
Definition face_components.h:107
Definition face_components.h:115
Definition face_components.h:119
Definition face_components.h:99
Definition face_components.h:101
Definition face_components.h:105
Definition face_components.h:109
Definition face_components.h:111
Definition face_components.h:113
Definition face_components.h:117