3#include <wmtk/MeshData.hpp>
5#include <wmtk/TriOptimizerMesh.h>
7#include <wmtk/SurfaceTagAttributes.h>
10#include <wmtk/utils/PartitionMesh.h>
11#include <wmtk/utils/VectorUtils.h>
12#include <polysolve/nonlinear/Problem.hpp>
13#include <wmtk/AttributeCollection.hpp>
14#include <wmtk/Types.hpp>
15#include <wmtk/envelope/CompositeEnvelopes.hpp>
16#include <wmtk/envelope/Envelope.hpp>
17#include <wmtk/optimization/SmoothVertex.hpp>
18#include <wmtk/optimization/solver.hpp>
19#include <wmtk/threading/enumerable_thread_specific.hpp>
22#include <wmtk/utils/DisableWarnings.hpp>
23#include <fastenvelope/FastEnvelope.h>
24#include <wmtk/utils/EnableWarnings.hpp>
27#include "Parameters.h"
32namespace wmtk::components::triwild {
46 std::vector<Vector2d> m_V_envelope;
47 std::vector<Vector2i> m_E_envelope;
63 const std::array<size_t, 2>& vids,
94 m_envelope_eps = envelope_eps;
95 NUM_THREADS = _num_threads;
97 optimization::deactivate_opt_logger();
102 logger().info(
"w_envelope = {}", we);
139 const std::vector<Vector2r>& V_rational,
142 const std::vector<std::string>& tag_names,
143 const MatrixXd& V_env,
144 const MatrixXi& E_env,
145 const std::vector<int>* E_orientation =
nullptr,
146 const std::vector<size_t>& free_point_vids = {},
147 const std::vector<int>* E_env_input =
nullptr,
148 const std::vector<InputSet>* E_input_set =
nullptr);
150 void init_surfaces_and_boundaries();
152 void init_envelope(
const MatrixXd& V,
const MatrixXi& F);
176 void write_vtu(
const std::string& path, MeshMap* output =
nullptr)
const;
211 void write_smoothing_debug_output(
const std::string& path)
const override { write_vtu(path); }
Definition SurfaceTagAttributes.h:24
What triwild and simwild's 2D mesh share.
Definition TriOptimizerMesh.h:42
void enable_feature_point_tracking(const bool preserve)
Turn on feature-point tracking, and the policy when preserve.
Definition TriOptimizerMesh.h:309
OptimizerParameters & m_params
Definition TriOptimizerMesh.h:175
double m_feature_eps
Definition TriOptimizerMesh.h:262
Definition TriWildMesh.h:40
std::shared_ptr< Envelope > smoothing_energy_envelope(const size_t vid) const override
Definition TriWildMesh.cpp:747
void compute_winding_numbers(const std::vector< MatrixXd > &Vs, const std::vector< MatrixXi > &Es)
Tag every face with the inputs it lies inside, by winding number.
Definition TriWildMesh.cpp:496
void filter_with_input_winding_number()
Remove the faces that lie inside no input (needs compute_winding_numbers).
Definition TriWildMesh.cpp:593
std::shared_ptr< Envelope > surface_envelope_for_edge(const std::array< size_t, 2 > &vids, const EdgeAttributes &attr) const override
Definition TriWildMesh.h:62
Parameters & m_tri_params
Definition TriWildMesh.h:44
void init_mesh(const MatrixXd &V, const std::vector< Vector2r > &V_rational, const MatrixXi &F, const MatrixXi &E, const std::vector< std::string > &tag_names, const MatrixXd &V_env, const MatrixXi &E_env, const std::vector< int > *E_orientation=nullptr, const std::vector< size_t > &free_point_vids={}, const std::vector< int > *E_env_input=nullptr, const std::vector< InputSet > *E_input_set=nullptr)
Init mesh from IGL-style matrices.
Definition TriWildMesh.cpp:42
bool m_has_parts
Definition TriWildMesh.h:208
void filter_with_tracked_winding_number()
Remove the faces whose tracked winding number is at most 1/2.
Definition TriWildMesh.cpp:580
wmtk::InputEnvelopes m_input_envelopes
One envelope per input curve file, when there are several: a tracked segment is held to those of its ...
Definition TriWildMesh.h:57
void filter_with_flood_fill()
Remove the flood-fill region that dominates the mesh boundary (needs flood_fill).
Definition TriWildMesh.cpp:607
size_t refine_sizing_around_worst(double max_energy) override
The old global sizing-field update (KNN R-ball around every low-quality triangle)....
Definition TriWildMesh.cpp:428
void compute_tracked_winding_number()
Winding number of every face's centroid w.r.t. the tracked curves, oriented as the input was (m_track...
Definition TriWildMesh.cpp:542
double w_amips
Definition OptimizerParameters.h:172
Definition TriOptimizerMesh.h:95
Definition TriOptimizerMesh.h:45
The fields shared with tetwild and simwild live in wmtk::OptimizerParameters.
Definition Parameters.h:10
bool preserve_feature_points
Definition Parameters.h:22