#include <TriangleSetTopologyModifier.h>


Public Member Functions | |
| TriangleSetTopologyModifier () | |
| virtual | ~TriangleSetTopologyModifier () |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| void | addTrianglesWarning (const unsigned int nTriangles, const sofa::helper::vector< Triangle > &trianglesList, const sofa::helper::vector< unsigned int > &trianglesIndexList) |
| Sends a message to warn that some triangles were added in this topology. | |
| void | addTrianglesWarning (const unsigned int nTriangles, const sofa::helper::vector< Triangle > &trianglesList, const sofa::helper::vector< unsigned int > &trianglesIndexList, const sofa::helper::vector< sofa::helper::vector< unsigned int > > &ancestors, const sofa::helper::vector< sofa::helper::vector< double > > &baryCoefs) |
| Sends a message to warn that some triangles were added in this topology. | |
| void | addTriangleProcess (Triangle e) |
| Add a triangle. | |
| virtual void | addTrianglesProcess (const sofa::helper::vector< Triangle > &triangles) |
| Actually Add some triangles to this topology. | |
| virtual void | removeTrianglesWarning (sofa::helper::vector< unsigned int > &triangles) |
| Sends a message to warn that some triangles are about to be deleted. | |
| virtual void | removeTrianglesProcess (const sofa::helper::vector< unsigned int > &indices, const bool removeIsolatedEdges=false, const bool removeIsolatedPoints=false) |
| Remove a subset of triangles. | |
| void | addEdgesWarning (const unsigned int nEdges, const sofa::helper::vector< Edge > &edgesList, const sofa::helper::vector< unsigned int > &edgesIndexList) |
| Sends a message to warn that some edges were added in this topology. | |
| void | addEdgesWarning (const unsigned int nEdges, const sofa::helper::vector< Edge > &edgesList, const sofa::helper::vector< unsigned int > &edgesIndexList, const sofa::helper::vector< sofa::helper::vector< unsigned int > > &ancestors, const sofa::helper::vector< sofa::helper::vector< double > > &baryCoefs) |
| Sends a message to warn that some edges were added in this topology. | |
| void | addEdgesProcess (const sofa::helper::vector< Edge > &edges) |
| Add some edges to this topology. | |
| virtual void | removeEdgesProcess (const sofa::helper::vector< unsigned int > &indices, const bool removeIsolatedItems=false) |
| Remove a subset of edges. | |
| virtual void | addPointsProcess (const unsigned int nPoints) |
| Add some points to this topology. | |
| virtual void | removePointsProcess (sofa::helper::vector< unsigned int > &indices, const bool removeDOF=true) |
| Remove a subset of points. | |
| virtual void | renumberPointsProcess (const sofa::helper::vector< unsigned int > &index, const sofa::helper::vector< unsigned int > &inv_index, const bool renumberDOF=true) |
| Reorder this topology. | |
| virtual void | removeTriangles (sofa::helper::vector< unsigned int > &triangles, const bool removeIsolatedEdges, const bool removeIsolatedPoints) |
| Remove a set of triangles. | |
| virtual void | removeItems (sofa::helper::vector< unsigned int > &items) |
| Generic method to remove a list of items. | |
| virtual void | renumberPoints (const sofa::helper::vector< unsigned int > &index, const sofa::helper::vector< unsigned int > &inv_index) |
| Generic method for points renumbering. | |
Private Attributes | |
| TriangleSetTopologyContainer * | m_container |
Definition at line 49 of file TriangleSetTopologyModifier.h.
| sofa::component::topology::TriangleSetTopologyModifier::TriangleSetTopologyModifier | ( | ) | [inline] |
Definition at line 52 of file TriangleSetTopologyModifier.h.
| virtual sofa::component::topology::TriangleSetTopologyModifier::~TriangleSetTopologyModifier | ( | ) | [inline, virtual] |
Definition at line 56 of file TriangleSetTopologyModifier.h.
| void sofa::component::topology::TriangleSetTopologyModifier::addEdgesProcess | ( | const sofa::helper::vector< Edge > & | edges | ) | [virtual] |
Add some edges to this topology.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 295 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::createEdgeSetArray(), sofa::component::topology::EdgeSetTopologyContainer::hasEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdgeShell(), m_container, and sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdgeShell.
Referenced by addTriangleProcess().
| void sofa::component::topology::TriangleSetTopologyModifier::addEdgesWarning | ( | const unsigned int | nEdges, | |
| const sofa::helper::vector< Edge > & | edgesList, | |||
| const sofa::helper::vector< unsigned int > & | edgesIndexList, | |||
| const sofa::helper::vector< sofa::helper::vector< unsigned int > > & | ancestors, | |||
| const sofa::helper::vector< sofa::helper::vector< double > > & | baryCoefs | |||
| ) | [inline, virtual] |
Sends a message to warn that some edges were added in this topology.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Definition at line 123 of file TriangleSetTopologyModifier.h.
References addEdgesWarning().
| void sofa::component::topology::TriangleSetTopologyModifier::addEdgesWarning | ( | const unsigned int | nEdges, | |
| const sofa::helper::vector< Edge > & | edgesList, | |||
| const sofa::helper::vector< unsigned int > & | edgesIndexList | |||
| ) | [inline, virtual] |
Sends a message to warn that some edges were added in this topology.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Definition at line 112 of file TriangleSetTopologyModifier.h.
Referenced by addEdgesWarning(), and addTriangleProcess().
| void sofa::component::topology::TriangleSetTopologyModifier::addPointsProcess | ( | const unsigned int | nPoints | ) | [virtual] |
Add some points to this topology.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 285 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::PointSetTopologyContainer::getNbPoints(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleVertexShell(), m_container, and sofa::component::topology::TriangleSetTopologyContainer::m_triangleVertexShell.
Referenced by sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongEdge(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongLinesList(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongPointsList(), and sofa::component::topology::Quad2TriangleTopologicalMapping::updateTopologicalMapping().
| void sofa::component::topology::TriangleSetTopologyModifier::addTriangleProcess | ( | Triangle | e | ) |
Add a triangle.
Definition at line 57 of file TriangleSetTopologyModifier.cpp.
References addEdgesProcess(), addEdgesWarning(), sofa::component::topology::EdgeSetTopologyContainer::getEdgeIndex(), sofa::component::topology::TriangleSetTopologyContainer::getNumberOfTriangles(), sofa::component::topology::TriangleSetTopologyContainer::getTriangleIndex(), sofa::component::topology::TriangleSetTopologyContainer::getTriangleVertexShellForModification(), sofa::component::topology::EdgeSetTopologyContainer::hasEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdgeShell(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleVertexShell(), m_container, sofa::component::topology::TriangleSetTopologyContainer::m_triangle, sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdge, and sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdgeShell.
Referenced by addTrianglesProcess(), sofa::component::topology::Tetra2TriangleTopologicalMapping::init(), and sofa::component::topology::Quad2TriangleTopologicalMapping::init().
| void sofa::component::topology::TriangleSetTopologyModifier::addTrianglesProcess | ( | const sofa::helper::vector< Triangle > & | triangles | ) | [virtual] |
Actually Add some triangles to this topology.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 132 of file TriangleSetTopologyModifier.cpp.
References addTriangleProcess(), m_container, and sofa::component::topology::TriangleSetTopologyContainer::m_triangle.
Referenced by sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongEdge(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongLinesList(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongPointsList(), sofa::component::topology::Tetra2TriangleTopologicalMapping::updateTopologicalMapping(), and sofa::component::topology::Quad2TriangleTopologicalMapping::updateTopologicalMapping().
| void sofa::component::topology::TriangleSetTopologyModifier::addTrianglesWarning | ( | const unsigned int | nTriangles, | |
| const sofa::helper::vector< Triangle > & | trianglesList, | |||
| const sofa::helper::vector< unsigned int > & | trianglesIndexList, | |||
| const sofa::helper::vector< sofa::helper::vector< unsigned int > > & | ancestors, | |||
| const sofa::helper::vector< sofa::helper::vector< double > > & | baryCoefs | |||
| ) |
Sends a message to warn that some triangles were added in this topology.
Definition at line 153 of file TriangleSetTopologyModifier.cpp.
References sofa::core::componentmodel::topology::TopologyModifier::addTopologyChange().
| void sofa::component::topology::TriangleSetTopologyModifier::addTrianglesWarning | ( | const unsigned int | nTriangles, | |
| const sofa::helper::vector< Triangle > & | trianglesList, | |||
| const sofa::helper::vector< unsigned int > & | trianglesIndexList | |||
| ) |
Sends a message to warn that some triangles were added in this topology.
Definition at line 143 of file TriangleSetTopologyModifier.cpp.
References sofa::core::componentmodel::topology::TopologyModifier::addTopologyChange().
Referenced by sofa::component::topology::TetrahedronSetTopologyModifier::addTetrahedronProcess(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongEdge(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongLinesList(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongPointsList(), sofa::component::topology::Tetra2TriangleTopologicalMapping::updateTopologicalMapping(), and sofa::component::topology::Quad2TriangleTopologicalMapping::updateTopologicalMapping().
| void sofa::component::topology::TriangleSetTopologyModifier::init | ( | void | ) | [virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 50 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::EdgeSetTopologyModifier::init().
| void sofa::component::topology::TriangleSetTopologyModifier::removeEdgesProcess | ( | const sofa::helper::vector< unsigned int > & | indices, | |
| const bool | removeIsolatedItems = false | |||
| ) | [virtual] |
Remove a subset of edges.
Important : some structures might need to be warned BEFORE the points are actually deleted, so always use method removeEdgesWarning before calling removeEdgesProcess.
| removeIsolatedItems | if true isolated vertices are also removed Important : parameter indices is not const because it is actually sorted from the highest index to the lowest one. |
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 346 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::createTriangleEdgeShellArray(), sofa::component::topology::TriangleSetTopologyContainer::getEdgeIndexInTriangle(), sofa::component::topology::EdgeSetTopologyContainer::getNumberOfEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdgeShell(), m_container, sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdge, and sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdgeShell.
Referenced by removeTrianglesProcess().
| void sofa::component::topology::TriangleSetTopologyModifier::removeItems | ( | sofa::helper::vector< unsigned int > & | items | ) | [virtual] |
Generic method to remove a list of items.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 420 of file TriangleSetTopologyModifier.cpp.
References removeTriangles().
| void sofa::component::topology::TriangleSetTopologyModifier::removePointsProcess | ( | sofa::helper::vector< unsigned int > & | indices, | |
| const bool | removeDOF = true | |||
| ) | [virtual] |
Remove a subset of points.
Elements corresponding to these points are removed from the mechanical object's state vectors.
Important : some structures might need to be warned BEFORE the points are actually deleted, so always use method removePointsWarning before calling removePointsProcess.
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 309 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::createTriangleVertexShellArray(), sofa::component::topology::PointSetTopologyContainer::getNbPoints(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangles(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleVertexShell(), m_container, sofa::component::topology::TriangleSetTopologyContainer::m_triangle, and sofa::component::topology::TriangleSetTopologyContainer::m_triangleVertexShell.
Referenced by removeTrianglesProcess(), sofa::component::topology::Tetra2TriangleTopologicalMapping::updateTopologicalMapping(), and sofa::component::topology::Quad2TriangleTopologicalMapping::updateTopologicalMapping().
| void sofa::component::topology::TriangleSetTopologyModifier::removeTriangles | ( | sofa::helper::vector< unsigned int > & | triangles, | |
| const bool | removeIsolatedEdges, | |||
| const bool | removeIsolatedPoints | |||
| ) | [virtual] |
Remove a set of triangles.
| triangles | an array of triangle indices to be removed (note that the array is not const since it needs to be sorted) | |
| removeIsolatedEdges | if true isolated edges are also removed | |
| removeIsolatedPoints | if true isolated vertices are also removed |
add the topological changes in the queue
Definition at line 406 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::checkTopology(), m_container, sofa::component::topology::PointSetTopologyModifier::propagateTopologicalChanges(), removeTrianglesProcess(), and removeTrianglesWarning().
Referenced by sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongEdge(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongLinesList(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::InciseAlongPointsList(), sofa::component::topology::TriangleSetTopologyAlgorithms< DataTypes >::RemoveAlongTrianglesList(), removeItems(), sofa::component::topology::Tetra2TriangleTopologicalMapping::updateTopologicalMapping(), and sofa::component::topology::Quad2TriangleTopologicalMapping::updateTopologicalMapping().
| void sofa::component::topology::TriangleSetTopologyModifier::removeTrianglesProcess | ( | const sofa::helper::vector< unsigned int > & | indices, | |
| const bool | removeIsolatedEdges = false, |
|||
| const bool | removeIsolatedPoints = false | |||
| ) | [virtual] |
Remove a subset of triangles.
Eventually remove isolated edges and vertices
Important : some structures might need to be warned BEFORE the points are actually deleted, so always use method removeEdgesWarning before calling removeEdgesProcess.
| removeIsolatedEdges | if true isolated edges are also removed | |
| removeIsolatedPoints | if true isolated vertices are also removed |
warn that edges will be deleted
actually remove edges without looking for isolated vertices
propagate to all components
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 176 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::createTriangleEdgeArray(), sofa::component::topology::TriangleSetTopologyContainer::createTriangleEdgeShellArray(), sofa::component::topology::TriangleSetTopologyContainer::createTriangleVertexShellArray(), sofa::component::topology::TriangleSetTopologyContainer::getNumberOfTriangles(), sofa::component::topology::EdgeSetTopologyContainer::hasEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdges(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdgeShell(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangles(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleVertexShell(), m_container, sofa::component::topology::TriangleSetTopologyContainer::m_triangle, sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdge, sofa::component::topology::TriangleSetTopologyContainer::m_triangleEdgeShell, sofa::component::topology::TriangleSetTopologyContainer::m_triangleVertexShell, sofa::component::topology::PointSetTopologyModifier::propagateTopologicalChanges(), removeEdgesProcess(), sofa::component::topology::EdgeSetTopologyModifier::removeEdgesWarning(), removePointsProcess(), and sofa::component::topology::PointSetTopologyModifier::removePointsWarning().
Referenced by removeTriangles().
| void sofa::component::topology::TriangleSetTopologyModifier::removeTrianglesWarning | ( | sofa::helper::vector< unsigned int > & | triangles | ) | [virtual] |
Sends a message to warn that some triangles are about to be deleted.
sort vertices to remove in a descendent order
Definition at line 165 of file TriangleSetTopologyModifier.cpp.
References sofa::core::componentmodel::topology::TopologyModifier::addTopologyChange().
Referenced by sofa::component::topology::TetrahedronSetTopologyModifier::removeTetrahedraProcess(), and removeTriangles().
| void sofa::component::topology::TriangleSetTopologyModifier::renumberPoints | ( | const sofa::helper::vector< unsigned int > & | index, | |
| const sofa::helper::vector< unsigned int > & | inv_index | |||
| ) | [virtual] |
Generic method for points renumbering.
add the topological changes in the queue
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 425 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::checkTopology(), m_container, sofa::component::topology::PointSetTopologyModifier::propagateTopologicalChanges(), renumberPointsProcess(), and sofa::component::topology::PointSetTopologyModifier::renumberPointsWarning().
| void sofa::component::topology::TriangleSetTopologyModifier::renumberPointsProcess | ( | const sofa::helper::vector< unsigned int > & | index, | |
| const sofa::helper::vector< unsigned int > & | inv_index, | |||
| const bool | renumberDOF = true | |||
| ) | [virtual] |
Reorder this topology.
Important : the points are actually renumbered in the mechanical object's state vectors iff (renumberDOF == true)
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 379 of file TriangleSetTopologyModifier.cpp.
References sofa::component::topology::TriangleSetTopologyContainer::hasTriangles(), sofa::component::topology::TriangleSetTopologyContainer::hasTriangleVertexShell(), m_container, sofa::component::topology::TriangleSetTopologyContainer::m_triangle, and sofa::component::topology::TriangleSetTopologyContainer::m_triangleVertexShell.
Referenced by renumberPoints(), sofa::component::topology::Tetra2TriangleTopologicalMapping::updateTopologicalMapping(), and sofa::component::topology::Quad2TriangleTopologicalMapping::updateTopologicalMapping().
TriangleSetTopologyContainer* sofa::component::topology::TriangleSetTopologyModifier::m_container [private] |
Reimplemented from sofa::component::topology::EdgeSetTopologyModifier.
Reimplemented in sofa::component::topology::TetrahedronSetTopologyModifier.
Definition at line 197 of file TriangleSetTopologyModifier.h.
Referenced by addEdgesProcess(), addPointsProcess(), addTriangleProcess(), addTrianglesProcess(), removeEdgesProcess(), removePointsProcess(), removeTriangles(), removeTrianglesProcess(), renumberPoints(), and renumberPointsProcess().
1.5.7.1