|
Wildmeshing Toolkit
|
Which input triangles each output surface face came from. More...
#include <EmbedTriangles.hpp>
Public Attributes | |
| std::vector< std::array< uint32_t, 2 > > | face_groups |
| std::vector< uint32_t > | triangle_group |
| bool | want_face_triangles = false |
| Set to have face_triangles filled. | |
| std::vector< std::vector< uint32_t > > | face_triangles |
Which input triangles each output surface face came from.
The arrangement answers this per coplanar group rather than per input triangle: the remesher first partitions the input into maximal sets of triangles that are transitively edge-adjacent and exactly coplanar, then tracks which output faces tile each set. A flat region tiled by many input triangles is therefore one group, and – the case to design around – a group can span triangles from several input surfaces where they meet coplanarly along a shared edge.
Optional: pass nullptr (the default) if the boolean polygon_faces_on_input is enough, as it is for tetwild, and neither vector is built.
| std::vector<std::array<uint32_t, 2> > wmtk::utils::EmbedTrianglesProvenance::face_groups |
(facet, coplanar group) pairs, sorted, indexing polygon_faces. Only facets on the input surface appear, and a facet where two exactly-coplanar groups meet appears once per group.
| std::vector<std::vector<uint32_t> > wmtk::utils::EmbedTrianglesProvenance::face_triangles |
Per facet (indexing polygon_faces): the input triangles it lies in, exactly – every one, where input triangles overlap; none for a facet off the input.
| std::vector<uint32_t> wmtk::utils::EmbedTrianglesProvenance::triangle_group |
Per input triangle (same indexing as triangle_indices): its coplanar group, or UINT32_MAX if it was degenerate and dropped before the arrangement.