|
Wildmeshing Toolkit
|
Per-vertex data the shared 2D optimizer knows nothing about. More...
#include <TopoOffsetTriMesh.h>
Public Attributes | |
| int | label = 0 |
| bool | m_is_on_input = false |
| bool | m_is_on_offset = false |
| bool | m_is_on_region = false |
| Vector2d | m_turn_start = Vector2d::Zero() |
| bool | m_turn_start_valid = false |
| uint64_t | m_boundary_mask = 0 |
| Which tag boundaries this vertex lies on – one bit per input tag, ambient included. See TopoOffsetTriMesh::m_tag_envelopes for what the bits dispatch to. | |
| uint32_t | m_born_epoch = 0 |
Per-vertex data the shared 2D optimizer knows nothing about.
Position, rounding, bbox membership, sizing and partition all live on wmtk::TriOptimizerMesh::VertexAttributes. The three flags here say which tracked surface a vertex belongs to; the base's m_is_on_surface is their union, and they are not exclusive – a vertex where the offset boundary meets another region's boundary carries both.
| uint32_t wmtk::components::topological_offset::VertexExtra2d::m_born_epoch = 0 |
Churn instrumentation: which split pass created this vertex, from wmtk::TriOptimizerMesh::m_op_epoch; 0 means not created by an optimization split. Read only by collapse_after_vertex(). Assigned at each split, never OR'd – a recycled slot carries a dead vertex's epoch.
| uint64_t wmtk::components::topological_offset::VertexExtra2d::m_boundary_mask = 0 |
Which tag boundaries this vertex lies on – one bit per input tag, ambient included. See TopoOffsetTriMesh::m_tag_envelopes for what the bits dispatch to.
Seeded in init_surfaces_and_boundaries() from the input partition, then propagated by the operations: a split's new vertex takes the AND of its endpoints (it lies on a boundary only if the whole edge did), a collapse's survivor the OR (it carries both vertices' geometry).
| Vector2d wmtk::components::topological_offset::VertexExtra2d::m_turn_start = Vector2d::Zero() |
Where this vertex stood at the start of the turn (single phase), so the convergence states can read its net movement – a vertex jiggling back and forth in a pressed seam has a large summed motion and a small net one, and only the net one says whether the seam has settled. A split copies it on, so a new vertex reads as moved for the turn it was born in.