Wildmeshing Toolkit
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Private Attributes | List of all members
wmtk::components::tracking::volume::StarPatch Class Reference

Tets embedded with every one the same way round, and a centre that sees every boundary face from inside: a ray from it leaves the patch through one face, once. More...

#include <volume_geometry.hpp>

Classes

struct  Exit
 
struct  Located
 

Public Member Functions

const Tets & tets () const
 
const Positions & positions () const
 
const std::vector< Tri > & faces () const
 The boundary faces, sorted, and the same faces oriented outwards.
 
double scale () const
 The diameter of the patch's bounding box.
 
std::optional< Vid > boundary_apex () const
 Whether every vertex is the apex of a cone: shared by every tet and on the boundary.
 
std::optional< Vid > interior_apex () const
 The vertex every tet shares, inside the patch (the star of a vertex).
 
bool sees_all (const Eigen::Vector3d &s) const
 Whether s is strictly inside every boundary face's plane, exactly.
 
bool set_centre (const Eigen::Vector3d &s)
 Sets the centre; false (and nothing set) if it does not see every face.
 
const Eigen::Vector3d & centre () const
 
double margin () const
 The centre's distance to the nearest face plane, over scale().
 
Exit exit (const Eigen::Vector3d &x) const
 
Located locate (const Eigen::Vector3d &y) const
 
std::optional< size_t > index_of (const Tet &t) const
 The index in tets() of a tet given by its vertices, any order.
 
size_t bytes () const
 About the memory it holds, in bytes.
 

Static Public Member Functions

static std::optional< StarPatch > make (const Tets &T, const Positions &P)
 Nothing if a tet is flat, or the tets are not all the same way round (exactly).
 

Public Attributes

std::vector< Eigen::Vector3d > normals
 The outward normal and a corner of each face (the plane is n.(x - a) = 0).
 
std::vector< Eigen::Vector3d > corners
 

Private Attributes

Tets m_T
 
Positions m_P
 
std::vector< Tri > m_F
 
std::vector< Tri > m_Fo
 
std::vector< std::pair< Tet, uint32_t > > m_index
 
double m_scale = 0
 
Eigen::Vector3d m_s = Eigen::Vector3d::Zero()
 

Detailed Description

Tets embedded with every one the same way round, and a centre that sees every boundary face from inside: a ray from it leaves the patch through one face, once.


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