3#include <wmtk/history/History.hpp>
12namespace wmtk::components::tracking {
75enum class CollapsePatch {
91 Smoothing smoothing = Smoothing::flatten;
92 Scaffold scaffold = Scaffold::box;
93 CollapsePatch collapse_patch = CollapsePatch::both_stars;
113 std::vector<SurfacePoint> points,
117 std::vector<SurfacePoint> points,
123 const std::vector<size_t>&
warned_edits()
const {
return m_warned_edits; }
130 std::array<Eigen::Vector2d, 3> uv;
131 std::array<Eigen::Vector3d, 3> sub = {
132 {Eigen::Vector3d::UnitX(), Eigen::Vector3d::UnitY(), Eigen::Vector3d::UnitZ()}};
137 std::vector<Face> before, after;
142 std::vector<const Cell*>
cells_of(
size_t edit)
const;
146 const std::vector<Eigen::Vector3d>&
input_vertices()
const {
return m_in_vertices; }
147 const std::vector<std::array<uint64_t, 3>>& input_faces()
const {
return m_in_faces; }
148 const std::vector<uint8_t>& input_face_alive()
const {
return m_in_face_alive; }
149 const std::vector<Eigen::Vector3d>& output_vertices()
const {
return m_out_vertices; }
150 const std::vector<std::array<uint64_t, 3>>& output_faces()
const {
return m_out_faces; }
151 const std::vector<uint8_t>& output_face_alive()
const {
return m_out_face_alive; }
156 const std::array<size_t, 16>&
cells_by_kind()
const {
return m_cells_by_kind; }
173 std::vector<std::array<Eigen::Vector3d, 3>> before, after;
174 std::vector<std::vector<uint64_t>> to_after, to_before;
179 std::vector<Cell> cells;
194 std::vector<SurfacePoint>
195 map(std::vector<SurfacePoint> points,
bool forward,
MapWarnings* warnings)
const;
197 std::vector<Step> m_steps;
199 std::vector<size_t> m_warned_edits;
200 std::array<size_t, 16> m_cells_by_kind = {};
201 size_t m_curve_collapses = 0;
202 size_t m_kept_moves = 0;
203 size_t m_folded_cells = 0;
205 std::vector<Eigen::Vector3d> m_in_vertices, m_out_vertices;
206 std::vector<std::array<uint64_t, 3>> m_in_faces, m_out_faces;
207 std::vector<uint8_t> m_in_face_alive, m_out_face_alive;
208 std::set<std::array<uint64_t, 2>> m_out_features;
The map between the first and the last state of a SurfaceHistory.
Definition SurfaceMap.hpp:106
const MapWarnings & build_warnings() const
What building the map found.
Definition SurfaceMap.hpp:121
std::vector< SurfacePoint > to_output(std::vector< SurfacePoint > points, MapWarnings *warnings=nullptr) const
Points on the first state, mapped onto the last; see to_input.
Definition SurfaceMap.cpp:1092
const std::set< std::array< uint64_t, 2 > > & output_feature_edges() const
The feature edges at the end, smaller vertex id first.
Definition SurfaceMap.hpp:153
const std::array< size_t, 16 > & cells_by_kind() const
How many operations needed a local map, by kind (index: history::EditKind).
Definition SurfaceMap.hpp:156
const std::vector< Eigen::Vector3d > & input_vertices() const
The complex at the start and at the end, every slot, as the history holds them.
Definition SurfaceMap.hpp:146
size_t kept_moves() const
Definition SurfaceMap.hpp:163
std::vector< SurfacePoint > to_input(std::vector< SurfacePoint > points, MapWarnings *warnings=nullptr) const
Definition SurfaceMap.cpp:1085
std::vector< const Cell * > cells_of(size_t edit) const
Definition SurfaceMap.cpp:1252
size_t folded_cells() const
Definition SurfaceMap.hpp:166
const std::vector< size_t > & warned_edits() const
The edits (indices into the history) whose local map raised a build warning.
Definition SurfaceMap.hpp:123
size_t curve_collapses() const
Definition SurfaceMap.hpp:160
EditKind
The kinds of edit a complex goes through.
Definition History.hpp:27
Where a map stops being a bijection. Counted, never fatal: the map still answers.
Definition SurfaceMap.hpp:24
size_t not_a_disk
A collapse whose patch is not a disk; its faces are mapped by relabelling alone.
Definition SurfaceMap.hpp:26
size_t flat_triangle
Definition SurfaceMap.hpp:30
size_t merged_faces
A collapse that merged duplicate faces: two faces map onto one.
Definition SurfaceMap.hpp:34
size_t inverted
An atlas with a triangle that is not positively oriented.
Definition SurfaceMap.hpp:32
size_t unlocated
Definition SurfaceMap.hpp:37
size_t replaced
Definition SurfaceMap.hpp:40
One flattened patch: the faces it covers before and after an edit, in a shared domain.
Definition SurfaceMap.hpp:136
Definition SurfaceMap.hpp:172
Definition SurfaceMap.hpp:128
Definition SurfaceMap.hpp:177
std::vector< uint64_t > born
Definition SurfaceMap.hpp:189
std::vector< uint64_t > dead
Definition SurfaceMap.hpp:186
size_t edit
The history edit this step maps.
Definition SurfaceMap.hpp:191
std::vector< uint64_t > old_to_new
consolidate (and relabel, which renumbers faces as one does): face renumbering.
Definition SurfaceMap.hpp:181
Embedding embedding
embed only.
Definition SurfaceMap.hpp:183
How a SurfaceMap is built.
Definition SurfaceMap.hpp:90
Definition SurfaceMap.hpp:17
A complex and the edits it went through, in commit order.
Definition History.hpp:101