22 std::map<PrimitiveType, attribute::MeshAttributeHandle>& label_handles,
23 const std::vector<int64_t>& input_values,
24 const int64_t output_value);
51 void add_pass_through(
const std::vector<attribute::MeshAttributeHandle>& pass_through);
95 double m_isovalue = std::numeric_limits<double>::lowest();
This component implements a marching triangle/tetrahedra.
std::vector< attribute::MeshAttributeHandle > m_pass_through_attributes
void add_filter(const attribute::MeshAttributeHandle &label, const int64_t value)
Add an edge filter to marching.
std::vector< int64_t > m_input_values
Marching(attribute::MeshAttributeHandle &pos_handle, std::map< PrimitiveType, attribute::MeshAttributeHandle > &label_handles, const std::vector< int64_t > &input_values, const int64_t output_value)
Initialize the marching method.
std::optional< attribute::MeshAttributeHandle > m_face_tag_handle
std::vector< attribute::MeshAttributeHandle > m_filter_labels
attribute::MeshAttributeHandle m_vertex_tag_handle
void set_isovalue_linesearch_iterations(const int64_t linesearch_iterations)
Set the number of iterations for the linesearch when trying to match the isovalue.
attribute::MeshAttributeHandle m_pos_handle
void invert_filter()
Invert the filter such that everything covered by the filter is ignored.
void add_isovalue(const attribute::MeshAttributeHandle &scalar_field, const double isovalue)
Position the new vertices along an edge according to an isovalue in a scalar field.
int64_t m_linesearch_iterations
void process()
Perform the actual marching.
void add_pass_through(const attribute::MeshAttributeHandle &pass_through)
Add pass through attributes.
std::optional< attribute::MeshAttributeHandle > m_edge_tag_handle
std::optional< attribute::MeshAttributeHandle > m_scalar_field
std::vector< int64_t > m_filter_values