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/normal.h"
33#include "../components/parent_mesh_pointer.h"
34#include "../components/polygon_bit_flags.h"
35#include "../components/principal_curvature.h"
36#include "../components/quality.h"
37#include "../components/triangle_bit_flags.h"
38#include "../components/vertex_references.h"
39#include "../components/wedge_colors.h"
40#include "../components/wedge_tex_coords.h"
124template<
bool INDEXED,
typename EdgeType>
125using AdjacentEdges = comp::AdjacentEdges<INDEXED, EdgeType, -1,
false>;
127template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
128using AdjacentPolygonEdges =
129 comp::AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType>;
131template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
132using AdjacentTriangleEdges =
133 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType>;
135template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
136using VerticalAdjacentEdges =
137 comp::AdjacentEdges<INDEXED, EdgeType, -1,
false, ParentFaceType,
true>;
139template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
140using VerticalAdjacentPolygonEdges =
141 comp::AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType,
true>;
143template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
144using VerticalAdjacentTriangleEdges =
145 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType, true>;
147template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
148using OptionalAdjacentEdges = comp::
149 AdjacentEdges<INDEXED, EdgeType, -1,
false, ParentFaceType,
true,
true>;
151template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
152using OptionalAdjacentPolygonEdges = comp::
153 AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType,
true,
true>;
155template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
156using OptionalAdjacentTriangleEdges =
157 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType, true, true>;
159template<
typename EdgeType>
160using AdjacentEdgeIndices = comp::AdjacentEdges<
true, EdgeType, -1,
false>;
162template<
typename EdgeType,
typename ParentFaceType>
163using AdjacentPolygonEdgeIndices =
164 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType>;
166template<
typename EdgeType,
typename ParentFaceType>
167using AdjacentTriangleEdgeIndices =
168 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType>;
170template<
typename EdgeType,
typename ParentFaceType>
171using VerticalAdjacentEdgeIndices =
172 comp::AdjacentEdges<
true, EdgeType, -1,
false, ParentFaceType,
true>;
174template<
typename EdgeType,
typename ParentFaceType>
175using VerticalAdjacentPolygonEdgeIndices =
176 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType,
true>;
178template<
typename EdgeType,
typename ParentFaceType>
179using VerticalAdjacentTriangleEdgeIndices =
180 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType, true>;
182template<
typename EdgeType,
typename ParentFaceType>
183using OptionalAdjacentEdgeIndices =
184 comp::AdjacentEdges<
true, EdgeType, -1,
false, ParentFaceType,
true,
true>;
186template<
typename EdgeType,
typename ParentFaceType>
187using OptionalAdjacentPolygonEdgeIndices =
188 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType,
true,
true>;
190template<
typename EdgeType,
typename ParentFaceType>
191using OptionalAdjacentTriangleEdgeIndices =
192 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType, true, true>;
194template<
typename EdgeType>
195using AdjacentEdgePointers = comp::AdjacentEdges<
false, EdgeType, -1,
false>;
197template<
typename EdgeType,
typename ParentFaceType>
198using AdjacentPolygonEdgePointers =
199 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType>;
201template<
typename EdgeType,
typename ParentFaceType>
202using AdjacentTriangleEdgePointers =
203 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType>;
205template<
typename EdgeType,
typename ParentFaceType>
206using VerticalAdjacentEdgePointers =
207 comp::AdjacentEdges<
false, EdgeType, -1,
false, ParentFaceType,
true>;
209template<
typename EdgeType,
typename ParentFaceType>
210using VerticalAdjacentPolygonEdgePointers =
211 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType,
true>;
213template<
typename EdgeType,
typename ParentFaceType>
214using VerticalAdjacentTriangleEdgePointers =
215 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType, true>;
217template<
typename EdgeType,
typename ParentFaceType>
218using OptionalAdjacentEdgePointers =
219 comp::AdjacentEdges<
false, EdgeType, -1,
false, ParentFaceType,
true,
true>;
221template<
typename EdgeType,
typename ParentFaceType>
222using OptionalAdjacentPolygonEdgePointers =
223 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType,
true,
true>;
225template<
typename EdgeType,
typename ParentFaceType>
226using OptionalAdjacentTriangleEdgePointers =
227 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType, true, true>;
230template<
bool INDEXED,
typename ParentFaceType>
231using AdjacentPolygons =
232 comp::AdjacentFaces<INDEXED, ParentFaceType, -1,
true, ParentFaceType>;
234template<
bool INDEXED,
typename ParentFaceType>
235using AdjacentTriangles =
236 comp::AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType>;
238template<
bool INDEXED,
typename ParentFaceType>
239using VerticalAdjacentPolygons = comp::
240 AdjacentFaces<INDEXED, ParentFaceType, -1,
true, ParentFaceType,
true>;
242template<
bool INDEXED,
typename ParentFaceType>
243using VerticalAdjacentTriangles =
244 comp::AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType, true>;
246template<
bool INDEXED,
typename ParentFaceType>
247using OptionalAdjacentPolygons = comp::AdjacentFaces<
256template<
bool INDEXED,
typename ParentFaceType>
257using OptionalAdjacentTriangles = comp::
258 AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType, true, true>;
260template<
typename ParentFaceType>
261using AdjacentPolygonIndices =
262 comp::AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType>;
264template<
typename ParentFaceType>
265using AdjacentTriangleIndices =
266 comp::AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType>;
268template<
typename ParentFaceType>
269using VerticalAdjacentPolygonIndices =
270 comp::AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType,
true>;
272template<
typename ParentFaceType>
273using VerticalAdjacentTriangleIndices =
274 comp::AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType, true>;
276template<
typename ParentFaceType>
277using OptionalAdjacentPolygonIndices = comp::
278 AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType,
true,
true>;
280template<
typename ParentFaceType>
281using OptionalAdjacentTriangleIndices = comp::
282 AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType, true, true>;
284template<
typename ParentFaceType>
285using AdjacentPolygonPointers =
286 comp::AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType>;
288template<
typename ParentFaceType>
289using AdjacentTrianglePointers =
290 comp::AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType>;
292template<
typename ParentFaceType>
293using VerticalAdjacentPolygonPointers =
294 comp::AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType,
true>;
296template<
typename ParentFaceType>
297using VerticalAdjacentTrianglePointers =
298 comp::AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType, true>;
300template<
typename ParentFaceType>
301using OptionalAdjacentPolygonPointers = comp::
302 AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType,
true,
true>;
304template<
typename ParentFaceType>
305using OptionalAdjacentTrianglePointers = comp::
306 AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType, true, true>;
309using BitFlags = comp::BitFlags<>;
311template<
typename ParentFaceType>
312using VerticalBitFlags = comp::BitFlags<ParentFaceType>;
315using Color = comp::Color<>;
317template<
typename VertexType>
318using VerticalColor = comp::Color<VertexType>;
320template<
typename ParentFaceType>
321using OptionalColor = comp::Color<ParentFaceType, true>;
324template<
typename ParentFaceType>
325using CustomComponents = comp::CustomComponents<ParentFaceType>;
328using Mark = comp::Mark<>;
330template<
typename ParentFaceType>
331using VerticalMark = comp::Mark<ParentFaceType>;
333template<
typename ParentFaceType>
334using OptionalMark = comp::Mark<ParentFaceType, true>;
337template<
typename ScalarType,
int N>
338using Normal = comp::Normal<Point<ScalarType, N>>;
340template<
typename ScalarType>
341using Normal3 = comp::Normal3<ScalarType>;
343using Normal3f = comp::Normal3f<>;
344using Normal3d = comp::Normal3d<>;
346template<
typename ScalarType,
int N,
typename VertexType>
347using VerticalNormal = comp::Normal<Point<ScalarType, N>, VertexType>;
349template<
typename ScalarType,
typename VertexType>
350using VerticalNormal3 = comp::Normal3<ScalarType, VertexType>;
352template<
typename VertexType>
353using VerticalNormal3f = comp::Normal3f<VertexType>;
355template<
typename VertexType>
356using VerticalNormal3d = comp::Normal3d<VertexType>;
358template<
typename ScalarType,
int N,
typename ParentFaceType>
359using OptionalNormal = comp::Normal<Point<ScalarType, N>, ParentFaceType,
true>;
361template<
typename ScalarType,
typename ParentFaceType>
362using OptionalNormal3 = comp::Normal3<ScalarType, ParentFaceType, true>;
364template<
typename ParentFaceType>
365using OptionalNormal3f = comp::Normal3f<ParentFaceType, true>;
367template<
typename ParentFaceType>
368using OptionalNormal3d = comp::Normal3d<ParentFaceType, true>;
371template<
typename MeshType>
372using ParentMeshPointer = comp::ParentMeshPointer<MeshType>;
375using PolygonBitFlags = comp::PolygonBitFlags<-1>;
377template<
typename ParentFaceType>
378using VerticalPolygonBitFlags = comp::PolygonBitFlags<-1, ParentFaceType>;
381template<
typename ParentFaceType>
382using PrincipalCurvature = comp::PrincipalCurvature<ParentFaceType>;
384using PrincipalCurvaturef = comp::PrincipalCurvaturef<>;
385using PrincipalCurvatured = comp::PrincipalCurvatured<>;
387template<
typename ScalarType,
typename ParentFaceType>
388using VerticalPrincipalCurvature =
389 comp::PrincipalCurvature<ScalarType, ParentFaceType>;
391template<
typename ParentFaceType>
392using VerticalPrincipalCurvaturef = comp::PrincipalCurvaturef<ParentFaceType>;
393template<
typename ParentFaceType>
394using VerticalPrincipalCurvatured = comp::PrincipalCurvatured<ParentFaceType>;
396template<
typename ScalarType,
typename ParentFaceType>
397using OptionalPrincipalCurvature =
398 comp::PrincipalCurvature<ScalarType, ParentFaceType, true>;
400template<
typename ParentFaceType>
401using OptionalPrincipalCurvaturef =
402 comp::PrincipalCurvaturef<ParentFaceType, true>;
403template<
typename ParentFaceType>
404using OptionalPrincipalCurvatured =
405 comp::PrincipalCurvatured<ParentFaceType, true>;
408template<
typename QualityType>
409using Quality = comp::Quality<QualityType>;
411using Qualityf = comp::Qualityf<>;
412using Qualityd = comp::Qualityd<>;
414template<
typename QualityType,
typename ParentFaceType>
415using VerticalQuality = comp::Quality<QualityType, ParentFaceType>;
417template<
typename ParentFaceType>
418using VerticalQualityf = comp::Quality<float, ParentFaceType>;
420template<
typename ParentFaceType>
421using VerticalQualityd = comp::Quality<double, ParentFaceType>;
423template<
typename QualityType,
typename ParentFaceType>
424using OptionalQuality = comp::Quality<QualityType, ParentFaceType, true>;
426template<
typename ParentFaceType>
427using OptionalQualityf = comp::Quality<float, ParentFaceType, true>;
429template<
typename ParentFaceType>
430using OptionalQualityd = comp::Quality<double, ParentFaceType, true>;
433using TriangleBitFlags = comp::TriangleBitFlags<>;
435template<
typename ParentFaceType>
436using VerticalTriangleBitFlags = comp::TriangleBitFlags<ParentFaceType>;
439template<
bool INDEXED,
typename Vertex,
int N,
typename FaceType>
440using VertexReferences = comp::VertexReferences<INDEXED, Vertex, N, FaceType>;
442template<
bool INDEXED,
typename Vertex,
typename FaceType>
443using TriangleVertexRefs = comp::VertexReferences<INDEXED, Vertex, 3, FaceType>;
445template<
bool INDEXED,
typename Vertex,
typename FaceType>
446using PolygonVertexRefs = comp::VertexReferences<INDEXED, Vertex, -1, FaceType>;
448template<
typename Vertex,
int N,
typename FaceType>
449using VertexIndices = comp::VertexReferences<true, Vertex, N, FaceType>;
451template<
typename Vertex,
typename FaceType>
452using TriangleVertexInds = comp::VertexReferences<true, Vertex, 3, FaceType>;
454template<
typename Vertex,
typename FaceType>
455using PolygonVertexInds = comp::VertexReferences<
true, Vertex, -1, FaceType>;
457template<
typename Vertex,
int N,
typename FaceType>
458using VertexPointers = comp::VertexReferences<false, Vertex, N, FaceType>;
460template<
typename Vertex,
typename FaceType>
461using TriangleVertexPtrs = comp::VertexReferences<false, Vertex, 3, FaceType>;
463template<
typename Vertex,
typename FaceType>
464using PolygonVertexPtrs = comp::VertexReferences<
false, Vertex, -1, FaceType>;
467using PolygonWedgeColors = comp::WedgeColors<-1>;
469using TriangleWedgeColors = comp::WedgeColors<3>;
471template<
typename ParentFaceType>
472using VerticalPolygonWedgeColors = comp::WedgeColors<-1, ParentFaceType>;
474template<
typename ParentFaceType>
475using VerticalTriangleWedgeColors = comp::WedgeColors<3, ParentFaceType>;
477template<
typename ParentFaceType>
478using OptionalPolygonWedgeColors = comp::WedgeColors<-1, ParentFaceType,
true>;
480template<
typename ParentFaceType>
481using OptionalTriangleWedgeColors = comp::WedgeColors<3, ParentFaceType, true>;
484template<
typename ScalarType>
485using PolygonWedgeTexCoords = comp::WedgeTexCoords<ScalarType, -1>;
487template<
typename ScalarType>
488using TriangleWedgeTexCoords = comp::WedgeTexCoords<ScalarType, 3>;
490using PolygonWedgeTexCoordsf = PolygonWedgeTexCoords<float>;
491using PolygonWedgeTexCoordsd = PolygonWedgeTexCoords<double>;
492using TriangleWedgeTexCoordsf = TriangleWedgeTexCoords<float>;
493using TriangleWedgeTexCoordsd = TriangleWedgeTexCoords<double>;
495template<
typename ScalarType,
typename ParentFaceType>
496using VerticalPolygonWedgeTexCoords =
497 comp::WedgeTexCoords<ScalarType, -1, ParentFaceType,
true>;
499template<
typename ScalarType,
typename ParentFaceType>
500using VerticalTriangleWedgeTexCoords =
501 comp::WedgeTexCoords<ScalarType, 3, ParentFaceType, true>;
503template<
typename ParentFaceType>
504using VerticalPolygonWedgeTexCoordsf =
505 comp::WedgeTexCoords<float, -1, ParentFaceType>;
506template<
typename ParentFaceType>
507using VerticalPolygonWedgeTexCoordsd =
508 comp::WedgeTexCoords<double, -1, ParentFaceType>;
509template<
typename ParentFaceType>
510using VerticalTriangleWedgeTexCoordsf =
511 comp::WedgeTexCoords<float, 3, ParentFaceType>;
512template<
typename ParentFaceType>
513using VerticalTriangleWedgeTexCoordsd =
514 comp::WedgeTexCoords<double, 3, ParentFaceType>;
516template<
typename ScalarType,
typename ParentFaceType>
517using OptionalPolygonWedgeTexCoords =
518 comp::WedgeTexCoords<ScalarType, -1, ParentFaceType,
true>;
520template<
typename ScalarType,
typename ParentFaceType>
521using OptionalTriangleWedgeTexCoords =
522 comp::WedgeTexCoords<ScalarType, 3, ParentFaceType, true>;
524template<
typename ParentFaceType>
525using OptionalPolygonWedgeTexCoordsf =
526 comp::WedgeTexCoords<float, -1, ParentFaceType,
true>;
527template<
typename ParentFaceType>
528using OptionalPolygonWedgeTexCoordsd =
529 comp::WedgeTexCoords<double, -1, ParentFaceType,
true>;
530template<
typename ParentFaceType>
531using OptionalTriangleWedgeTexCoordsf =
532 comp::WedgeTexCoords<float, 3, ParentFaceType, true>;
533template<
typename ParentFaceType>
534using OptionalTriangleWedgeTexCoordsd =
535 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) 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) 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:413
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:399
Definition face_components.h:68
Definition face_components.h:72
Definition face_components.h:76
Definition face_components.h:78
Definition face_components.h:82
Definition face_components.h:84
Definition face_components.h:86
Definition face_components.h:90
Definition face_components.h:70
Definition face_components.h:74
Definition face_components.h:80
Definition face_components.h:88
Definition face_components.h:92
Definition face_components.h:98
Definition face_components.h:102
Definition face_components.h:110
Definition face_components.h:114
Definition face_components.h:94
Definition face_components.h:96
Definition face_components.h:100
Definition face_components.h:104
Definition face_components.h:106
Definition face_components.h:108
Definition face_components.h:112