|
|
Tri | sorted (Tri t) |
| |
|
Tet | sorted (Tet t) |
| |
|
bool | contains (const Tet &t, const Vid v) |
| |
|
bool | contains (const Tri &t, const Vid v) |
| |
|
std::array< Tri, 4 > | faces_of (const Tet &t) |
| | The four faces of a tet, each sorted.
|
| |
|
std::set< Tet > | keys (const Tets &T) |
| | The tets as a set of sorted tets.
|
| |
|
std::optional< Faces > | boundary (const Tets &T) |
| | The faces of T on one tet only; nothing if a face is on more than two.
|
| |
| bool | is_ball (const Tets &T) |
| |
| std::optional< std::vector< Vid > > | disk_cycle (const Faces &F) |
| |
| std::optional< Tets > | collapse (const Tets &T, const Vid a, const Vid b) |
| |
|
std::vector< Tets > | sides (const Tets &T, Vid c, const Faces &surf) |
| | The tets of T at c, grouped across the faces at c that are not in surf.
|
| |
| std::vector< Tets > | side_groups (const Tets &T, const Faces &surf) |
| |
|
Faces | surf_after (const Faces &surf, Vid i, Vid j) |
| | surf after collapsing (i, j) into j.
|
| |
|
std::optional< PairSpec > | make_pair (const std::string &kind, const Tets &Tb, const Tets &Ta, const Faces &sb, const Faces &sa, std::string *why=nullptr) |
| | The pair (Tb, Ta) if it is one; sb and sa are the tracked faces before and after.
|
| |
|
std::vector< Vid > | chords (const Tets &M, Vid i, Vid j) |
| | The ring vertices x of side M with a triangle (i, j, x) inside it.
|
| |
| char | side_class (const Tets &M, const Vid i, const Vid j) |
| |
|
std::optional< Decomposition > | decompose_collapse (const Tets &K, const Vid i, const Vid j, const Faces &surf, const Vid first_virtual, std::string *why) |
| |
|
int | orient (const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const Eigen::Vector3d &d) |
| | The sign of det(b - a, c - a, d - a), exactly.
|
| |
|
bool | inside (const Eigen::Vector3d &p, const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const Eigen::Vector3d &d) |
| | Whether p is in the closed tet (a, b, c, d), exactly.
|
| |
| Eigen::Vector4d | barycentric (const Eigen::Vector3d &p, const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const Eigen::Vector3d &d) |
| |
|
Outside | outside_of (const Eigen::Vector3d &p, const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const Eigen::Vector3d &d) |
| |
| Eigen::Vector4d | exact_barycentric (const Eigen::Vector3d &p, const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const Eigen::Vector3d &d) |
| |
|
std::optional< std::pair< Eigen::Vector3d, double > > | chebyshev (const std::vector< Eigen::Vector3d > &N, const std::vector< double > &b, const Eigen::Vector3d &x0, double L, double t_max) |
| | max t subject to N_i . x + t <= b_i, |x - x0|_inf <= L and t <= t_max, by a dense simplex: the largest ball (in the normals' metric) around a point of the polytope. x0 need not be inside: the start is t at its most negative. Returns (x, t), nothing if the solver fails.
|
| |
| std::optional< Eigen::Vector3d > | kernel (const std::vector< const StarPatch * > &patches) |
| |
| std::optional< Eigen::Vector3d > | apex_centre (const StarPatch &S) |
| |
| std::optional< Eigen::Vector3d > | centre_of (const StarPatch &S, bool *thin) |
| |
|
std::optional< Positions > | spherical (const Tets &T, const Positions &P, double fat=0.05) |
| | A fallback embedding of a cone from a boundary apex c: every vertex keeps its distance from c, and its direction from c is laid out again, on the sphere, so the cone is star-shaped about a point next to c. The directions live in the gnomonic plane of a direction d; the link's triangles rest in the shapes of their real spherical triangles (near-degenerate ones opened to a height of fat of their longest edge), the outline is kept star-shaped about the origin by a scaffold of fan triangles (SLIM). Then the directions and radii are polished by L-BFGS on the symmetric Dirichlet energy of the tets themselves. Nothing if T is not a cone with a disk for a link.
|
| |
| std::optional< Positions > | bowl (const Tets &T, const Positions &P) |
| |
| std::optional< Positions > | convex (const Tets &T, const Positions &P) |
| |
|
template<typename Accept > |
| std::optional< Location > | locate_in (const Tets &T, const Positions &X, const Eigen::Vector3d &p, const Accept &accept) |
| |
The combinatorics of a volume map's local maps: patches of tets on the vertices of one operation (VolumeEdit's local ids, and virtual vertices past them).
The geometry of a volume map's local maps: patches embedded star-shaped, and the radial map between two of them.