Wildmeshing Toolkit
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
wmtk::components::tetwild::orig::EdgeCollapser Class Reference
Inheritance diagram for wmtk::components::tetwild::orig::EdgeCollapser:
wmtk::components::tetwild::orig::LocalOperations

Public Member Functions

 EdgeCollapser (LocalOperations &lo, double ideal_w)
 
void init ()
 
void collapse ()
 
int collapseAnEdge (int v1_id, int v2_id)
 
void postProcess ()
 
bool isCollapsable_cd1 (int v1_id, int v2_id)
 
bool isCollapsable_cd3 (int v1_id, int v2_id, double weight)
 
bool isCollapsable_epsilon (int v1_id, int v2_id)
 
bool isEdgeValid (const std::array< int, 2 > &e)
 
- Public Member Functions inherited from wmtk::components::tetwild::orig::LocalOperations
 LocalOperations (std::vector< TetVertex > &t_vs, std::vector< std::array< int, 4 > > &ts, std::vector< std::array< int, 4 > > &is_sf_fs, std::vector< bool > &v_is_rm, std::vector< bool > &t_is_rm, std::vector< TetQuality > &tet_qs, const SampleEnvelope &geo_tree, const SampleEnvelope &b_t, const Args &ar, State &st)
 
void outputInfo (int op_type, double time, bool is_log=true)
 
void calTetQualities (const std::vector< std::array< int, 4 > > &new_tets, std::vector< TetQuality > &tet_qs)
 
double calEdgeLength (int v1_id, int v2_id)
 
void calTetQuality_AMIPS (const std::array< int, 4 > &tet, TetQuality &t_quality)
 
bool isFlip (const std::vector< std::array< int, 4 > > &new_tets)
 
bool isTetFlip (const std::array< int, 4 > &t)
 
bool isTetFlip (int t_id)
 
void getAvgMaxEnergy (double &avg_tq, double &max_tq)
 
double getMaxEnergy ()
 
void getCheckQuality (const std::vector< TetQuality > &tet_qs, TetQuality &tq)
 
void getCheckQuality (const std::vector< int > &t_ids, TetQuality &tq)
 
bool isEdgeOnSurface (int v1_id, int v2_id)
 
bool isEdgeOnBbox (int v1_id, int v2_id)
 
bool isEdgeOnSurface (int v1_id, int v2_id, const std::vector< int > &t_ids)
 
bool isEdgeOnBbox (int v1_id, int v2_id, const std::vector< int > &t_ids)
 
bool isEdgeOnBoundary (int v1_id, int v2_id)
 
bool isFaceOutEnvelop (const std::array< Vector3d, 3 > &tri)
 
bool isPointOutEnvelop (const Vector3d &p)
 
bool isPointOutBoundaryEnvelop (const Vector3d &p)
 
void getFaceConnTets (int v1_id, int v2_id, int v3_id, std::vector< int > &t_ids)
 
bool isIsolated (int v_id)
 
bool isBoundaryPoint (int v_id)
 
bool isLocked_ui (const std::array< int, 2 > &e)
 
bool isTetLocked_ui (int tid)
 

Public Attributes

std::priority_queue< ElementInQueue_ec, std::vector< ElementInQueue_ec >, cmp_ecec_queue
 
double ideal_weight = 0
 
bool is_limit_length = true
 
bool is_check_quality = true
 
int envelop_accept_cnt = 0
 
const int SUCCESS = 0
 
const int FLIP = 1
 
const int QUALITY = 2
 
const int ENVELOP = 3
 
const int ENVELOP_SUC = 4
 
bool is_soft = false
 
double soft_energy = 6
 
int budget = 0
 
int ts = 0
 
std::vector< std::array< int, 2 > > inf_es
 
std::vector< int > inf_e_tss
 
std::vector< int > tet_tss
 
int tmp = 0
 
int tmp0 = 0
 
double energy_time = 0
 
int id_postprocessing = 0
 
int id_flip_fail = 1
 
int id_env_fail = 2
 
int id_success = 3
 
int id_env_success = 4
 
int id_energy_fail = 5
 
std::array< double, 6 > breakdown_timing
 
std::array< std::string, 6 > breakdown_name
 
igl::Timer igl_timer
 
- Public Attributes inherited from wmtk::components::tetwild::orig::LocalOperations
const Argsargs
 
Statestate
 
std::vector< TetVertex > & tet_vertices
 
std::vector< std::array< int, 4 > > & tets
 
std::vector< std::array< int, 4 > > & is_surface_fs
 
std::vector< bool > & v_is_removed
 
std::vector< bool > & t_is_removed
 
std::vector< TetQuality > & tet_qualities
 
const SampleEnvelopegeo_sf_tree
 
const SampleEnvelopegeo_b_tree
 
int counter = 0
 
int suc_counter = 0
 
igl::Timer igl_timer0
 
int id_sampling = 0
 
int id_aabb = 1
 
int mid_id = 0
 

Member Function Documentation

◆ isCollapsable_cd1()

bool wmtk::components::tetwild::orig::EdgeCollapser::isCollapsable_cd1 ( int  v1_id,
int  v2_id 
)

DZ: Check if v1 can be collapsed into v2 if v1 is on the bbox.

◆ isCollapsable_cd3()

bool wmtk::components::tetwild::orig::EdgeCollapser::isCollapsable_cd3 ( int  v1_id,
int  v2_id,
double  weight 
)

DZ: Check if edge is short enough to be collapsed.

◆ isCollapsable_epsilon()

bool wmtk::components::tetwild::orig::EdgeCollapser::isCollapsable_epsilon ( int  v1_id,
int  v2_id 
)

DZ: Envelope check for edge (v1,v2)

  • Find all surface triangles incident to v1 that are NOT incident to v2.
  • Replace v1 with v2 and perform envelope check for these triangles

note that tris.size() can be 0 when v1 is on the boundary of the surface!!!

Member Data Documentation

◆ breakdown_name

std::array<std::string, 6> wmtk::components::tetwild::orig::EdgeCollapser::breakdown_name
Initial value:
= {
{"Postprocessing",
"Failed (flip)",
"Failed (envelop)",
"Successful (non-surface)",
"Successful (surface)",
"Failed (energy)"}}

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