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"
60template<
bool INDEXED,
typename EdgeType>
61using AdjacentEdges = comp::AdjacentEdges<INDEXED, EdgeType, -1,
false>;
63template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
64using AdjacentPolygonEdges =
65 comp::AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType>;
67template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
68using AdjacentTriangleEdges =
69 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType>;
71template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
72using VerticalAdjacentEdges =
73 comp::AdjacentEdges<INDEXED, EdgeType, -1,
false, ParentFaceType,
true>;
75template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
76using VerticalAdjacentPolygonEdges =
77 comp::AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType,
true>;
79template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
80using VerticalAdjacentTriangleEdges =
81 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType, true>;
83template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
84using OptionalAdjacentEdges = comp::
85 AdjacentEdges<INDEXED, EdgeType, -1,
false, ParentFaceType,
true,
true>;
87template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
88using OptionalAdjacentPolygonEdges = comp::
89 AdjacentEdges<INDEXED, EdgeType, -1,
true, ParentFaceType,
true,
true>;
91template<
bool INDEXED,
typename EdgeType,
typename ParentFaceType>
92using OptionalAdjacentTriangleEdges =
93 comp::AdjacentEdges<INDEXED, EdgeType, 3, true, ParentFaceType, true, true>;
95template<
typename EdgeType>
96using AdjacentEdgeIndices = comp::AdjacentEdges<
true, EdgeType, -1,
false>;
98template<
typename EdgeType,
typename ParentFaceType>
99using AdjacentPolygonEdgeIndices =
100 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType>;
102template<
typename EdgeType,
typename ParentFaceType>
103using AdjacentTriangleEdgeIndices =
104 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType>;
106template<
typename EdgeType,
typename ParentFaceType>
107using VerticalAdjacentEdgeIndices =
108 comp::AdjacentEdges<
true, EdgeType, -1,
false, ParentFaceType,
true>;
110template<
typename EdgeType,
typename ParentFaceType>
111using VerticalAdjacentPolygonEdgeIndices =
112 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType,
true>;
114template<
typename EdgeType,
typename ParentFaceType>
115using VerticalAdjacentTriangleEdgeIndices =
116 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType, true>;
118template<
typename EdgeType,
typename ParentFaceType>
119using OptionalAdjacentEdgeIndices =
120 comp::AdjacentEdges<
true, EdgeType, -1,
false, ParentFaceType,
true,
true>;
122template<
typename EdgeType,
typename ParentFaceType>
123using OptionalAdjacentPolygonEdgeIndices =
124 comp::AdjacentEdges<
true, EdgeType, -1,
true, ParentFaceType,
true,
true>;
126template<
typename EdgeType,
typename ParentFaceType>
127using OptionalAdjacentTriangleEdgeIndices =
128 comp::AdjacentEdges<true, EdgeType, 3, true, ParentFaceType, true, true>;
130template<
typename EdgeType>
131using AdjacentEdgePointers = comp::AdjacentEdges<
false, EdgeType, -1,
false>;
133template<
typename EdgeType,
typename ParentFaceType>
134using AdjacentPolygonEdgePointers =
135 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType>;
137template<
typename EdgeType,
typename ParentFaceType>
138using AdjacentTriangleEdgePointers =
139 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType>;
141template<
typename EdgeType,
typename ParentFaceType>
142using VerticalAdjacentEdgePointers =
143 comp::AdjacentEdges<
false, EdgeType, -1,
false, ParentFaceType,
true>;
145template<
typename EdgeType,
typename ParentFaceType>
146using VerticalAdjacentPolygonEdgePointers =
147 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType,
true>;
149template<
typename EdgeType,
typename ParentFaceType>
150using VerticalAdjacentTriangleEdgePointers =
151 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType, true>;
153template<
typename EdgeType,
typename ParentFaceType>
154using OptionalAdjacentEdgePointers =
155 comp::AdjacentEdges<
false, EdgeType, -1,
false, ParentFaceType,
true,
true>;
157template<
typename EdgeType,
typename ParentFaceType>
158using OptionalAdjacentPolygonEdgePointers =
159 comp::AdjacentEdges<
false, EdgeType, -1,
true, ParentFaceType,
true,
true>;
161template<
typename EdgeType,
typename ParentFaceType>
162using OptionalAdjacentTriangleEdgePointers =
163 comp::AdjacentEdges<false, EdgeType, 3, true, ParentFaceType, true, true>;
166template<
bool INDEXED,
typename ParentFaceType>
167using AdjacentPolygons =
168 comp::AdjacentFaces<INDEXED, ParentFaceType, -1,
true, ParentFaceType>;
170template<
bool INDEXED,
typename ParentFaceType>
171using AdjacentTriangles =
172 comp::AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType>;
174template<
bool INDEXED,
typename ParentFaceType>
175using VerticalAdjacentPolygons = comp::
176 AdjacentFaces<INDEXED, ParentFaceType, -1,
true, ParentFaceType,
true>;
178template<
bool INDEXED,
typename ParentFaceType>
179using VerticalAdjacentTriangles =
180 comp::AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType, true>;
182template<
bool INDEXED,
typename ParentFaceType>
183using OptionalAdjacentPolygons = comp::AdjacentFaces<
192template<
bool INDEXED,
typename ParentFaceType>
193using OptionalAdjacentTriangles = comp::
194 AdjacentFaces<INDEXED, ParentFaceType, 3, true, ParentFaceType, true, true>;
196template<
typename ParentFaceType>
197using AdjacentPolygonIndices =
198 comp::AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType>;
200template<
typename ParentFaceType>
201using AdjacentTriangleIndices =
202 comp::AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType>;
204template<
typename ParentFaceType>
205using VerticalAdjacentPolygonIndices =
206 comp::AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType,
true>;
208template<
typename ParentFaceType>
209using VerticalAdjacentTriangleIndices =
210 comp::AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType, true>;
212template<
typename ParentFaceType>
213using OptionalAdjacentPolygonIndices = comp::
214 AdjacentFaces<
true, ParentFaceType, -1,
true, ParentFaceType,
true,
true>;
216template<
typename ParentFaceType>
217using OptionalAdjacentTriangleIndices = comp::
218 AdjacentFaces<true, ParentFaceType, 3, true, ParentFaceType, true, true>;
220template<
typename ParentFaceType>
221using AdjacentPolygonPointers =
222 comp::AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType>;
224template<
typename ParentFaceType>
225using AdjacentTrianglePointers =
226 comp::AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType>;
228template<
typename ParentFaceType>
229using VerticalAdjacentPolygonPointers =
230 comp::AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType,
true>;
232template<
typename ParentFaceType>
233using VerticalAdjacentTrianglePointers =
234 comp::AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType, true>;
236template<
typename ParentFaceType>
237using OptionalAdjacentPolygonPointers = comp::
238 AdjacentFaces<
false, ParentFaceType, -1,
true, ParentFaceType,
true,
true>;
240template<
typename ParentFaceType>
241using OptionalAdjacentTrianglePointers = comp::
242 AdjacentFaces<false, ParentFaceType, 3, true, ParentFaceType, true, true>;
245using BitFlags = comp::BitFlags<>;
247template<
typename ParentFaceType>
248using VerticalBitFlags = comp::BitFlags<ParentFaceType>;
251using Color = comp::Color<>;
253template<
typename VertexType>
254using VerticalColor = comp::Color<VertexType>;
256template<
typename ParentFaceType>
257using OptionalColor = comp::Color<ParentFaceType, true>;
260template<
typename ParentFaceType>
261using CustomComponents = comp::CustomComponents<ParentFaceType>;
264using Mark = comp::Mark<>;
266template<
typename ParentFaceType>
267using VerticalMark = comp::Mark<ParentFaceType>;
269template<
typename ParentFaceType>
270using OptionalMark = comp::Mark<ParentFaceType, true>;
273template<
typename ScalarType,
int N>
274using Normal = comp::Normal<Point<ScalarType, N>>;
276template<
typename ScalarType>
277using Normal3 = comp::Normal3<ScalarType>;
282template<
typename ScalarType,
int N,
typename VertexType>
283using VerticalNormal = comp::Normal<Point<ScalarType, N>, VertexType>;
285template<
typename ScalarType,
typename VertexType>
286using VerticalNormal3 = comp::Normal3<ScalarType, VertexType>;
288template<
typename VertexType>
289using VerticalNormal3f = comp::Normal3f<VertexType>;
291template<
typename VertexType>
292using VerticalNormal3d = comp::Normal3d<VertexType>;
294template<
typename ScalarType,
int N,
typename ParentFaceType>
295using OptionalNormal = comp::Normal<Point<ScalarType, N>, ParentFaceType,
true>;
297template<
typename ScalarType,
typename ParentFaceType>
298using OptionalNormal3 = comp::Normal3<ScalarType, ParentFaceType, true>;
300template<
typename ParentFaceType>
301using OptionalNormal3f = comp::Normal3f<ParentFaceType, true>;
303template<
typename ParentFaceType>
304using OptionalNormal3d = comp::Normal3d<ParentFaceType, true>;
307template<
typename MeshType>
308using ParentMeshPointer = comp::ParentMeshPointer<MeshType>;
311using PolygonBitFlags = comp::PolygonBitFlags<-1>;
313template<
typename ParentFaceType>
314using VerticalPolygonBitFlags = comp::PolygonBitFlags<-1, ParentFaceType>;
317template<
typename ParentFaceType>
318using PrincipalCurvature = comp::PrincipalCurvature<ParentFaceType>;
323template<
typename ScalarType,
typename ParentFaceType>
324using VerticalPrincipalCurvature =
325 comp::PrincipalCurvature<ScalarType, ParentFaceType>;
327template<
typename ParentFaceType>
328using VerticalPrincipalCurvaturef = comp::PrincipalCurvaturef<ParentFaceType>;
329template<
typename ParentFaceType>
330using VerticalPrincipalCurvatured = comp::PrincipalCurvatured<ParentFaceType>;
332template<
typename ScalarType,
typename ParentFaceType>
333using OptionalPrincipalCurvature =
334 comp::PrincipalCurvature<ScalarType, ParentFaceType, true>;
336template<
typename ParentFaceType>
337using OptionalPrincipalCurvaturef =
338 comp::PrincipalCurvaturef<ParentFaceType, true>;
339template<
typename ParentFaceType>
340using OptionalPrincipalCurvatured =
341 comp::PrincipalCurvatured<ParentFaceType, true>;
344template<
typename QualityType>
345using Quality = comp::Quality<QualityType>;
350template<
typename QualityType,
typename ParentFaceType>
351using VerticalQuality = comp::Quality<QualityType, ParentFaceType>;
353template<
typename ParentFaceType>
354using VerticalQualityf = comp::Quality<float, ParentFaceType>;
356template<
typename ParentFaceType>
357using VerticalQualityd = comp::Quality<double, ParentFaceType>;
359template<
typename QualityType,
typename ParentFaceType>
360using OptionalQuality = comp::Quality<QualityType, ParentFaceType, true>;
362template<
typename ParentFaceType>
363using OptionalQualityf = comp::Quality<float, ParentFaceType, true>;
365template<
typename ParentFaceType>
366using OptionalQualityd = comp::Quality<double, ParentFaceType, true>;
369using TriangleBitFlags = comp::TriangleBitFlags<>;
371template<
typename ParentFaceType>
372using VerticalTriangleBitFlags = comp::TriangleBitFlags<ParentFaceType>;
375template<
bool INDEXED,
typename Vertex,
int N,
typename FaceType>
376using VertexReferences = comp::VertexReferences<INDEXED, Vertex, N, FaceType>;
378template<
bool INDEXED,
typename Vertex,
typename FaceType>
379using TriangleVertexRefs = comp::VertexReferences<INDEXED, Vertex, 3, FaceType>;
381template<
bool INDEXED,
typename Vertex,
typename FaceType>
382using PolygonVertexRefs = comp::VertexReferences<INDEXED, Vertex, -1, FaceType>;
384template<
typename Vertex,
int N,
typename FaceType>
385using VertexIndices = comp::VertexReferences<true, Vertex, N, FaceType>;
387template<
typename Vertex,
typename FaceType>
388using TriangleVertexInds = comp::VertexReferences<true, Vertex, 3, FaceType>;
390template<
typename Vertex,
typename FaceType>
391using PolygonVertexInds = comp::VertexReferences<
true, Vertex, -1, FaceType>;
393template<
typename Vertex,
int N,
typename FaceType>
394using VertexPointers = comp::VertexReferences<false, Vertex, N, FaceType>;
396template<
typename Vertex,
typename FaceType>
397using TriangleVertexPtrs = comp::VertexReferences<false, Vertex, 3, FaceType>;
399template<
typename Vertex,
typename FaceType>
400using PolygonVertexPtrs = comp::VertexReferences<
false, Vertex, -1, FaceType>;
403using PolygonWedgeColors = comp::WedgeColors<-1>;
405using TriangleWedgeColors = comp::WedgeColors<3>;
407template<
typename ParentFaceType>
408using VerticalPolygonWedgeColors = comp::WedgeColors<-1, ParentFaceType>;
410template<
typename ParentFaceType>
411using VerticalTriangleWedgeColors = comp::WedgeColors<3, ParentFaceType>;
413template<
typename ParentFaceType>
414using OptionalPolygonWedgeColors = comp::WedgeColors<-1, ParentFaceType,
true>;
416template<
typename ParentFaceType>
417using OptionalTriangleWedgeColors = comp::WedgeColors<3, ParentFaceType, true>;
420template<
typename ScalarType>
421using PolygonWedgeTexCoords = comp::WedgeTexCoords<ScalarType, -1>;
423template<
typename ScalarType>
424using TriangleWedgeTexCoords = comp::WedgeTexCoords<ScalarType, 3>;
426using PolygonWedgeTexCoordsf = PolygonWedgeTexCoords<float>;
427using PolygonWedgeTexCoordsd = PolygonWedgeTexCoords<double>;
428using TriangleWedgeTexCoordsf = TriangleWedgeTexCoords<float>;
429using TriangleWedgeTexCoordsd = TriangleWedgeTexCoords<double>;
431template<
typename ScalarType,
typename ParentFaceType>
432using VerticalPolygonWedgeTexCoords =
433 comp::WedgeTexCoords<ScalarType, -1, ParentFaceType,
true>;
435template<
typename ScalarType,
typename ParentFaceType>
436using VerticalTriangleWedgeTexCoords =
437 comp::WedgeTexCoords<ScalarType, 3, ParentFaceType, true>;
439template<
typename ParentFaceType>
440using VerticalPolygonWedgeTexCoordsf =
441 comp::WedgeTexCoords<float, -1, ParentFaceType>;
442template<
typename ParentFaceType>
443using VerticalPolygonWedgeTexCoordsd =
444 comp::WedgeTexCoords<double, -1, ParentFaceType>;
445template<
typename ParentFaceType>
446using VerticalTriangleWedgeTexCoordsf =
447 comp::WedgeTexCoords<float, 3, ParentFaceType>;
448template<
typename ParentFaceType>
449using VerticalTriangleWedgeTexCoordsd =
450 comp::WedgeTexCoords<double, 3, ParentFaceType>;
452template<
typename ScalarType,
typename ParentFaceType>
453using OptionalPolygonWedgeTexCoords =
454 comp::WedgeTexCoords<ScalarType, -1, ParentFaceType,
true>;
456template<
typename ScalarType,
typename ParentFaceType>
457using OptionalTriangleWedgeTexCoords =
458 comp::WedgeTexCoords<ScalarType, 3, ParentFaceType, true>;
460template<
typename ParentFaceType>
461using OptionalPolygonWedgeTexCoordsf =
462 comp::WedgeTexCoords<float, -1, ParentFaceType,
true>;
463template<
typename ParentFaceType>
464using OptionalPolygonWedgeTexCoordsd =
465 comp::WedgeTexCoords<double, -1, ParentFaceType,
true>;
466template<
typename ParentFaceType>
467using OptionalTriangleWedgeTexCoordsf =
468 comp::WedgeTexCoords<float, 3, ParentFaceType, true>;
469template<
typename ParentFaceType>
470using OptionalTriangleWedgeTexCoordsd =
471 comp::WedgeTexCoords<double, 3, ParentFaceType, true>;
Normal< Point3< Scalar >, ElementType, OPT > Normal3
The Normal3 class is an alias of the Normal component that uses 3 dimensional Points.
Definition normal.h:156
PrincipalCurvature< float, ElementType, OPT > PrincipalCurvaturef
Definition principal_curvature.h:167
Normal3< double, ElementType, OPT > Normal3d
The Normal3d class is an alias of the Normal component that uses 3 dimensional Points with double pre...
Definition normal.h:186
Quality< float, ElementType, OPT > Qualityf
Definition quality.h:153
PrincipalCurvature< double, ElementType, OPT > PrincipalCurvatured
Definition principal_curvature.h:182
Normal3< float, ElementType, OPT > Normal3f
The Normal3f class is an alias of the Normal component that uses 3 dimensional Points with float prec...
Definition normal.h:171
Quality< double, ElementType, OPT > Qualityd
Definition quality.h:168