16using Tet = std::array<Vid, 4>;
17using Tri = std::array<Vid, 3>;
18using Tets = std::vector<Tet>;
24bool contains(
const Tet& t, Vid v);
25bool contains(
const Tri& t, Vid v);
27std::array<Tri, 4>
faces_of(
const Tet& t);
29std::set<Tet>
keys(
const Tets& T);
32std::optional<Faces>
boundary(
const Tets& T);
41std::optional<Tets>
collapse(
const Tets& T, Vid a, Vid b);
43std::vector<Tets> sides(
const Tets& T, Vid c,
const Faces& surf);
57 Faces fixed, cap_before, cap_after;
61 const std::string& kind,
66 std::string* why =
nullptr);
72std::vector<Vid>
chords(
const Tets& M, Vid i, Vid j);
79 std::vector<PairSpec> pairs;
85std::optional<Decomposition> decompose_collapse(
Definition volume_complex.cpp:8
std::vector< Tets > side_groups(const Tets &T, const Faces &surf)
Definition volume_complex.cpp:223
std::set< Tet > keys(const Tets &T)
The tets as a set of sorted tets.
Definition volume_complex.cpp:41
char side_class(const Tets &M, const Vid i, const Vid j)
Definition volume_complex.cpp:333
bool is_ball(const Tets &T)
Definition volume_complex.cpp:90
std::vector< Vid > chords(const Tets &M, const Vid i, const Vid j)
The ring vertices x of side M with a triangle (i, j, x) inside it.
Definition volume_complex.cpp:308
std::optional< Tets > collapse(const Tets &T, const Vid a, const Vid b)
Definition volume_complex.cpp:185
std::set< Tri > Faces
Faces by their corners, sorted.
Definition volume_complex.hpp:20
std::array< Tri, 4 > faces_of(const Tet &t)
The four faces of a tet, each sorted.
Definition volume_complex.cpp:32
std::optional< Faces > boundary(const Tets &T)
The faces of T on one tet only; nothing if a face is on more than two.
Definition volume_complex.cpp:48
Faces surf_after(const Faces &surf, const Vid i, const Vid j)
surf after collapsing (i, j) into j.
Definition volume_complex.cpp:240
std::optional< PairSpec > make_pair(const std::string &kind, const Tets &Tb, const Tets &Ta, const Faces &sb, const Faces &sa, std::string *why)
The pair (Tb, Ta) if it is one; sb and sa are the tracked faces before and after.
Definition volume_complex.cpp:254
std::optional< std::vector< Vid > > disk_cycle(const Faces &F)
Definition volume_complex.cpp:143
Definition volume_complex.hpp:78
Tets split
The tets after the splits (K1) and after the collapse, before the unsplits (K2).
Definition volume_complex.hpp:83
std::vector< std::pair< Vid, Vid > > virtuals
(w, x) per chord, in the order split.
Definition volume_complex.hpp:81
Definition volume_complex.hpp:54