class geode::TetrahedralSolidEpsilonModifier
Overview
#include <tetrahedral_solid_epsilon_modifier.h> class TetrahedralSolidEpsilonModifier: public geode::TetrahedralSolidModifier { public: // construction TetrahedralSolidEpsilonModifier( const SolidMesh3D& solid, TetrahedralSolidBuilder3D& builder ); // methods SolidSplitInfo insert_point_in_tetrahedron( index_t tetrahedron_id, const Point3D& point ); SolidSplitInfo insert_point_on_facet( const PolyhedronFacet& facet, const Point3D& point ); SolidSplitEdgeInfo insert_point_on_edge( const PolyhedronFacetEdge& edge, const Point3D& point ); SolidSplitEdgeInfo insert_point_on_edge(index_t edge_id, const Point3D& point); };
Inherited Members
public: // methods index_t updated_vertex(index_t vertex_id) const; bool is_tetrahedron_active(index_t tetrahedron_id) const; bool is_facet_active(index_t facet_id) const; void set_tetrahedron_inactive(index_t tetrahedron_id); void set_facet_inactive(index_t facet_id); bool is_split_tetrahedron_valid(index_t tetrahedron_id, const Point3D& point) const; SolidSplitInfo split_tetrahedron(index_t tetrahedron_id, const Point3D& point); bool is_split_facet_valid(const PolyhedronFacet& facet, const Point3D& point) const; bool is_split_facet_valid(index_t facet_id, const Point3D& point) const; absl::optional<PolyhedronFacet> invalid_element_on_split_facet( const PolyhedronFacet& facet, const Point3D& point ) const; absl::optional<PolyhedronFacet> invalid_element_on_split_facet( index_t facet_id, const Point3D& point ) const; SolidSplitInfo split_facet(index_t facet_id, const Point3D& point); SolidSplitInfo split_facet(const PolyhedronFacet& facet, const Point3D& point); bool is_split_edge_valid(const PolyhedronFacetEdge& edge, const Point3D& point) const; bool is_split_edge_valid(index_t edge_id, const Point3D& point) const; absl::optional<index_t> invalid_element_on_split_edge( const PolyhedronFacetEdge& edge, const Point3D& point ) const; absl::optional<index_t> invalid_element_on_split_edge( index_t edge_id, const Point3D& point ) const; SolidSplitEdgeInfo split_edge(index_t edge_id, const Point3D& point); SolidSplitEdgeInfo split_edge( const PolyhedronFacetEdge& edge, const Point3D& point ); bool is_collapse_edge_valid( const PolyhedronFacetEdge& edge, const Point3D& point ) const; bool is_collapse_edge_valid(index_t _id, const Point3D& point) const; SolidCollapseEdgeInfo collapse_edge( const PolyhedronFacetEdge& edge, const Point3D& point ); SolidCollapseEdgeInfo collapse_edge(index_t edge_id, const Point3D& point); SolidSwapFacetInfo swap_facet(const PolyhedronFacet& facet); std::vector<index_t> clean_tetrahedra(); std::vector<index_t> clean_vertices(); std::vector<index_t> clean_edges(); std::vector<index_t> clean_facets(); std::tuple<std::vector<index_t>, std::vector<index_t>, std::vector<index_t>, std::vector<index_t>> clean();
Detailed Documentation
Methods
SolidSplitInfo insert_point_in_tetrahedron( index_t tetrahedron_id, const Point3D& point )
Insert a point in a tetrahedron either by spliting the tetrahedron into four new ones, or by snapping the point on a facet (three new tetrahedra for each side), an edge (each incident tetrahedra is split into two new tetrahedra) or a vertex (no new tetrahedron).
Parameters:
tetrahedron_id |
Index of the tetrahedron to split. |
point |
Coordinates of the split point. @warn Split tetrahedron is set as inactive but not deleted. |
Returns:
new vertex index and mappings between old and new mesh.
SolidSplitInfo insert_point_on_facet( const PolyhedronFacet& facet, const Point3D& point )
Insert a point on a facet either by spliting the facet into three new ones, or by snapping the point on a edge or a vertex.
Parameters:
facet |
Index of the PolyhedronFacet to split. |
point |
Coordinates of the split point. @warn Potential split tetrahedra are set as inactive but not deleted. |
Returns:
new vertex index and mappings between old and new mesh.
SolidSplitEdgeInfo insert_point_on_edge( const PolyhedronFacetEdge& edge, const Point3D& point )
Insert a point on an edge either by spliting the edge into two new ones, or by snapping the point on a vertex.
Parameters:
edge |
Index of the PolyhedronFacetEdge to split. |
point |
Coordinates of the split point. @warn Potential split tetrahedra are set as inactive but not deleted. |
Returns:
new vertex index and mappings between old and new mesh.
SolidSplitEdgeInfo insert_point_on_edge(index_t edge_id, const Point3D& point)
Insert a point on an edge either by spliting the edge into two new ones, or by snapping the point on a vertex.
Parameters:
edge_id |
Unique index of the edge to split. |
point |
Coordinates of the split point. @warn Potential split tetrahedra are set as inactive but not deleted. |
Returns:
new vertex index and mappings between old and new mesh.