Wildmeshing Toolkit
Loading...
Searching...
No Matches
Public Attributes | List of all members
wmtk::components::topological_offset::VertexExtra2d Class Reference

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
 

Detailed Description

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.

Member Data Documentation

◆ m_born_epoch

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.

◆ m_boundary_mask

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).

◆ m_turn_start

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.


The documentation for this class was generated from the following file: