Project Geode-Common
class TetrahedralSolidModifier
Inherits from VerticesModifier
Inherits from VerticesModifier
Records
SidedSolidSplitEdgeInfo
AlongSolidSplitEdgeInfo
SolidSplitEdgeInfo
SolidSplitInfo
SolidCollapseEdgeInfo
SolidSwapFacetInfo
SolidSwapEdgeInfo
SolidRemoveMultipleAdjacencyInfo
Impl
Functions
TetrahedralSolidModifier
public void TetrahedralSolidModifier(const TetrahedralSolid3D & solid, TetrahedralSolidBuilder3D & builder)
public void TetrahedralSolidModifier(const TetrahedralSolid3D & solid, TetrahedralSolidBuilder3D & builder)
TetrahedralSolidModifier
public void TetrahedralSolidModifier(TetrahedralSolidModifier && other)
public void TetrahedralSolidModifier(TetrahedralSolidModifier && other)
~TetrahedralSolidModifier
public void ~TetrahedralSolidModifier()
public void ~TetrahedralSolidModifier()
is_tetrahedron_active
public bool is_tetrahedron_active(index_t tetrahedron_id)
public bool is_tetrahedron_active(index_t tetrahedron_id)
is_facet_active
public bool is_facet_active(index_t facet_id)
public bool is_facet_active(index_t facet_id)
split_tetrahedron
public SolidSplitInfo split_tetrahedron(index_t tetrahedron_id, const Point3D & point)
public SolidSplitInfo split_tetrahedron(index_t tetrahedron_id, const Point3D & point)
Split a tetrahedron into four new tetrahedra.
tetrahedron_id [in] Index of the tetrahedron to split.
point [in] Coordinates of the split point.
warning Given tetrahedron is set as inactive but not deleted.
return new vertex index and mappings between old and new mesh.
split_facet
public SolidSplitInfo split_facet(index_t facet_id, const Point3D & point)
public SolidSplitInfo split_facet(index_t facet_id, const Point3D & point)
Split a facet into three new ones. The tetrahedra incident to this facet are also split into three new tetrahedra.
facet_id [in] Unique index of the facet to split.
point [in] Coordinates of the split point.
warning Split tetrahedra are set as inactive but not deleted.
return new vertex index and mappings between old and new mesh.
split_facet
public SolidSplitInfo split_facet(const PolyhedronFacet & facet, const Point3D & point)
public SolidSplitInfo split_facet(const PolyhedronFacet & facet, const Point3D & point)
Split a facet into three new ones. The tetrahedra incident to this facet are also split into three new tetrahedra.
facet [in] Index of the PolyhedronFacet to split.
point [in] Coordinates of the split point.
warning Split tetrahedra are set as inactive but not deleted.
details Edge unique index is found and then the above function is called.
return new vertex index and mappings between old and new mesh.
split_edge
public SolidSplitEdgeInfo split_edge(index_t edge_id, const Point3D & point)
public SolidSplitEdgeInfo split_edge(index_t edge_id, const Point3D & point)
Split an edge into two new ones. Each tetrahedron incident to this edge is also split into two new tetrahedra.
edge_id [in] Unique index of the edge to split.
point [in] Coordinates of the split point.
warning Split tetrahedra are set as inactive but not deleted.
return new vertex index and mappings between old and new mesh.
split_edge
public SolidSplitEdgeInfo split_edge(const PolyhedronFacetEdge & edge, const Point3D & point)
public SolidSplitEdgeInfo split_edge(const PolyhedronFacetEdge & edge, const Point3D & point)
Split an edge into two new ones. Each tetrahedron incident to this edge is also split into two new tetrahedra.
edge [in] Index of the PolyhedronFacetEdge to split.
point [in] Coordinates of the split point.
warning Split tetrahedra are set as inactive but not deleted.
return new vertex index and mappings between old and new mesh.
collapse_edge
public SolidCollapseEdgeInfo collapse_edge(const PolyhedronFacetEdge & edge, const Point3D & point)
public SolidCollapseEdgeInfo collapse_edge(const PolyhedronFacetEdge & edge, const Point3D & point)
Collapse an edge. The tetrahedra incident to this edge are set as inactive but not deleted.
edge [in] Index of the PolyhedronFacetEdge to collapse.
point [in] Coordinates of the collapse point.
return new vertex index and mappings between old and new mesh.
collapse_edge
public SolidCollapseEdgeInfo collapse_edge(index_t edge_id, const Point3D & point)
public SolidCollapseEdgeInfo collapse_edge(index_t edge_id, const Point3D & point)
Collapse an edge. The tetrahedra incident to this edge are set as inactive but not deleted.
edge_id [in] Unique index of the edge to collapse.
point [in] Coordinates of the collapse point.
return new vertex index and mappings between old and new mesh.
swap_facet
public SolidSwapFacetInfo swap_facet(const PolyhedronFacet & facet)
public SolidSwapFacetInfo swap_facet(const PolyhedronFacet & facet)
Swap a facet. Two tetrahedra should be incident to this facet. These two tetrahedra are set as inactive and three new tetrahedra are created.
facet [in] Index of the PolyhedronFacet to swap.
warning Old tetrahedra are set as inactive but not deleted.
swap_edge
public SolidSwapEdgeInfo swap_edge(const PolyhedronFacetEdge & edge, index_t apex)
public SolidSwapEdgeInfo swap_edge(const PolyhedronFacetEdge & edge, index_t apex)
Swap an edge. The edge can be on border. The tetrahedra around given edge are set as inactive and new tetrahedra are created.
edge [in] Index of the PolyhedronFacetEdge to swap.
apex [in] Index of the vertex used as the new facets fan common vertex.
warning Old tetrahedra are set as inactive but not deleted.
remove_double_adjacency
public SolidRemoveMultipleAdjacencyInfo remove_double_adjacency(const PolyhedronFacetEdge & edge)
public SolidRemoveMultipleAdjacencyInfo remove_double_adjacency(const PolyhedronFacetEdge & edge)
Remove an edge bearing a double adjacency. The two tetrahedra around given edge are set as inactive.
edge [in] Index of the PolyhedronFacetEdge shared by the two PolyhedronFacet adjacent to the same tetrahedron.
warning Old tetrahedra are set as inactive but not deleted.
remove_triple_adjacency
public SolidRemoveMultipleAdjacencyInfo remove_triple_adjacency(const PolyhedronVertex & vertex)
public SolidRemoveMultipleAdjacencyInfo remove_triple_adjacency(const PolyhedronVertex & vertex)
Remove a vertex bearing a triple adjacency. The two tetrahedra around given vertex are set as inactive.
vertex [in] Index of the PolyhedronVertex shared by the three PolyhedronFacet adjacent to the same tetrahedron.
warning Old tetrahedra are set as inactive but not deleted.
clean_tetrahedra
public vector clean_tetrahedra()
public vector clean_tetrahedra()
Clean up the mesh removing inactive tetrahedra
return old2new mappings for tetrahedra
clean_vertices
public vector clean_vertices()
public vector clean_vertices()
Clean up the mesh removing isolated vertices
return old2new mappings for vertices
warning This method should be called after clean_tetrahedra()
clean_edges
public vector clean_edges()
public vector clean_edges()
Clean up the mesh removing edges
return old2new mappings for edges
warning This method should be called after clean_tetrahedra()
clean_facets
public vector clean_facets()
public vector clean_facets()
Clean up the mesh removing facets
return old2new mappings for facets
warning This method should be called after clean_tetrahedra()
clean
public std::tuple<std::vector<index_t>, std::vector<index_t>, std::vector<index_t>, std::vector<index_t> > clean()
public std::tuple<std::vector<index_t>, std::vector<index_t>, std::vector<index_t>, std::vector<index_t> > clean()
Clean up the mesh removing inactive tetrahedra, isolated vertices, edges and facets.
return old2new mappings for tetrahedra, vertices, edges and facets.
solid
protected const TetrahedralSolid3D & solid()
protected const TetrahedralSolid3D & solid()