12#ifndef NEW_GTET_EDGECOLLAPSER_H
13#define NEW_GTET_EDGECOLLAPSER_H
16#include "LocalOperations.h"
18namespace wmtk::components::tetwild::orig {
23 std::array<int, 2> v_ids;
37 if (e1.weight == e2.weight)
return e1.v_ids < e2.v_ids;
38 return e1.weight > e2.weight;
45 std::priority_queue<ElementInQueue_ec, std::vector<ElementInQueue_ec>,
cmp_ec> ec_queue;
46 double ideal_weight = 0;
48 bool is_limit_length =
true;
49 bool is_check_quality =
true;
51 int envelop_accept_cnt = 0;
54 , ideal_weight(ideal_w)
60 const int SUCCESS = 0;
62 const int QUALITY = 2;
63 const int ENVELOP = 3;
64 const int ENVELOP_SUC = 4;
65 int collapseAnEdge(
int v1_id,
int v2_id);
68 double soft_energy = 6;
72 std::vector<std::array<int, 2>> inf_es;
73 std::vector<int> inf_e_tss;
74 std::vector<int> tet_tss;
83 bool isEdgeValid(
const std::array<int, 2>& e);
89 double energy_time = 0;
92 int id_postprocessing = 0;
96 int id_env_success = 4;
97 int id_energy_fail = 5;
98 std::array<double, 6> breakdown_timing;
99 std::array<std::string, 6> breakdown_name = {
103 "Successful (non-surface)",
104 "Successful (surface)",
106 igl::Timer igl_timer;
Definition EdgeCollapser.h:43
bool isCollapsable_cd3(int v1_id, int v2_id, double weight)
Definition EdgeCollapser.cpp:480
bool isCollapsable_epsilon(int v1_id, int v2_id)
Definition EdgeCollapser.cpp:495
bool isCollapsable_cd1(int v1_id, int v2_id)
Definition EdgeCollapser.cpp:458
Definition EdgeCollapser.h:21
Definition LocalOperations.h:27
Definition EdgeCollapser.h:34