Class for a mesh that stores vertices and indexed simplices. More...
#include <IndSimpSet.h>
Public Types | |
| enum | { N = _N, M = _M, A = _A } |
The space dimension, simplex dimension and allocation. | |
| typedef T | Number |
| The number type. | |
| typedef V | Vertex |
| A vertex. | |
| typedef geom::Simplex< M, Vertex > | Simplex |
| A simplex of vertices. | |
| typedef Simplex::Face | SimplexFace |
| The face of a simplex of vertices. | |
| typedef IS | IndexedSimplex |
| An indexed simplex. (A simplex of indices.). | |
| typedef IndexedSimplex::Face | IndexedSimplexFace |
| The face of an indexed simplex. | |
| typedef ads::Array< 1, Vertex, A > | VertexContainer |
| The vertex container. | |
|
typedef VertexContainer::const_iterator | VertexConstIterator |
| A vertex const iterator. | |
| typedef VertexContainer::iterator | VertexIterator |
| A vertex iterator. | |
|
typedef ads::Array < 1, IndexedSimplex, A > | IndexedSimplexContainer |
| The indexed simplex container. | |
|
typedef IndexedSimplexContainer::const_iterator | IndexedSimplexConstIterator |
| An indexed simplex const iterator. | |
|
typedef IndexedSimplexContainer::iterator | IndexedSimplexIterator |
| An indexed simplex iterator. | |
|
typedef SimplexIterator < IndSimpSet > | SimplexConstIterator |
| A simplex const iterator. | |
| typedef VertexContainer::size_type | SizeType |
| The size type. | |
Public Member Functions | |
Constructors etc. | |
Suppose that we are dealing with a tetrahedron mesh in 3-D. Below we instantiate a mesh that allocates its own memory for the vertices and indexed simplices. geom::IndSimpSet<3,3> mesh; We can construct the mesh from vertices and indexed simplices stored in ADS arrays: typedef geom::IndSimpSet<3,3> ISS; typedef typename ISS:Vertex Vertex; typedef typename ISS:IndexedSimplex IndexedSimplex; ads::Array<1,Vertex> vertices(numberOfVertices); ads::Array<1,IndexedSimplex> indexedSimplices(numberOfSimplices); ... geom::IndSimpSet<3,3> mesh(vertices, indexedSimplices); or use C arrays: double* vertices = new[3 * numberOfVertices] int* indexedSimplices = new[4 * numberOfSimplices]; ... geom::IndSimpSet<3,3> mesh(numberOfVertices, vertices, numberOfSimplices, simplices); We can also make meshes that borrow externally allocated memory. One can use ADS arrays: geom::IndSimpSet<3,3,false> mesh(vertices, indexedSimplices); or C arrays: geom::IndSimpSet<3,3,false> mesh(numberOfVertices, vertices, numberOfSimplices, indexedSimplices); | |
| IndSimpSet () | |
| Default constructor. Empty simplex set. | |
| template<bool A1, bool A2> | |
| IndSimpSet (const ads::Array< 1, Vertex, A1 > &vertices, const ads::Array< 1, IndexedSimplex, A2 > &indexedSimplices) | |
| Construct from arrays of vertices and indexed simplices. | |
| template<bool A1, bool A2> | |
| void | build (const ads::Array< 1, Vertex, A1 > &vertices, const ads::Array< 1, IndexedSimplex, A2 > &indexedSimplices) |
| Build from arrays of vertices and indexed simplices. | |
| IndSimpSet (const SizeType numVertices, void *vertices, const SizeType numSimplices, void *indexedSimplices) | |
| Construct from pointers to the vertices and indexed simplices. | |
| void | build (const SizeType numVertices, void *vertices, const SizeType numSimplices, void *indexedSimplices) |
| Build from pointers to the vertices and indexed simplices. | |
| IndSimpSet (const SizeType numVertices, const void *vertices, const SizeType numSimplices, const void *indexedSimplices) | |
| Construct from pointers to the vertices and indexed simplices. | |
| void | build (const SizeType numVertices, const void *vertices, const SizeType numSimplices, const void *indexedSimplices) |
| Build from pointers to the vertices and indexed simplices. | |
| IndSimpSet (const SizeType numVertices, const SizeType numSimplices) | |
| Construct from the number of vertices and simplices. | |
| void | build (const SizeType numVertices, const SizeType numSimplices) |
| Build from the number of vertices and simplices. | |
| void | swap (IndSimpSet &x) |
| Swap data with another mesh. | |
| IndSimpSet (const IndSimpSet &other) | |
| Copy constructor. | |
| IndSimpSet & | operator= (const IndSimpSet &other) |
| Assignment operator. | |
| virtual | ~IndSimpSet () |
| Destructor. Deletes memory only if it was allocated internally. | |
Vertex Accessors | |
| int | getSpaceDimension () const |
| Return the dimension of the space. | |
| SizeType | getVerticesSize () const |
| Return the number of vertices. | |
| SizeType | areVerticesEmpty () const |
| Return true if there are no vertices. | |
| VertexConstIterator | getVerticesBeginning () const |
| Return a const iterator to the beginning of the vertices. | |
| VertexConstIterator | getVerticesEnd () const |
| Return a const iterator to the end of the vertices. | |
| const Vertex & | getVertex (const int n) const |
| Return a const reference to the n_th vertex. | |
| const VertexContainer & | getVertices () const |
| Return a const reference to the vertex container. | |
Simplex Accessors | |
| int | getSimplexDimension () const |
| Return the dimension of the simplices. | |
| SizeType | getSimplicesSize () const |
| Return the number of simplices. | |
| SizeType | areSimplicesEmpty () const |
| Return true if there are no simplices. | |
| SizeType | isEmpty () const |
| Return true if there are no vertices or simplices. | |
| IndexedSimplexConstIterator | getIndexedSimplicesBeginning () const |
| Return a const iterator to the beginning of the indexed simplices. | |
| IndexedSimplexConstIterator | getIndexedSimplicesEnd () const |
| Return a const iterator to the end of the indexed simplices. | |
| const IndexedSimplex & | getIndexedSimplex (const int n) const |
| Return a const reference to the n_th indexed simplex. | |
| const IndexedSimplexContainer & | getIndexedSimplices () const |
| Return a const reference to the indexed simplex container. | |
| SimplexConstIterator | getSimplicesBeginning () const |
| Return a const iterator to the beginning of the simplices. | |
| SimplexConstIterator | getSimplicesEnd () const |
| Return a const iterator to the end of the simplices. | |
| const Vertex & | getSimplexVertex (const int n, const int m) const |
| Return a const reference to the m_th vertex of the n_th simplex. | |
| void | getSimplex (const int n, Simplex *s) const |
| Get the n_th simplex. | |
| void | getSimplex (IndexedSimplexConstIterator i, Simplex *s) const |
| Get the simplex given an iterator to the indexed simplex. | |
Vertex Manipulators | |
| VertexIterator | getVerticesBeginning () |
| Return an iterator to the beginning of the vertices. | |
| VertexIterator | getVerticesEnd () |
| Return an iterator to the end of the vertices. | |
| void | setVertex (const int n, const Vertex &vertex) |
| Set the specified vertex. | |
| VertexContainer & | getVertices () |
| Return a reference to the vertex container. | |
Simplex Manipulators | |
| IndexedSimplexIterator | getIndexedSimplicesBeginning () |
| Return an iterator to the beginning of the indexed simplices. | |
| IndexedSimplexIterator | getIndexedSimplicesEnd () |
| Return an iterator to the end of the indexed simplices. | |
| IndexedSimplexContainer & | getIndexedSimplices () |
| Return a reference to the indexed simplex container. | |
Update the topology. | |
| virtual void | updateTopology () |
| Update the data structure following a change in the topology. | |
Related Functions | |
(Note that these are not member functions.) | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | getFace (const IndSimpSet< N, M, A, T, V, IS > &mesh, int simplexIndex, int vertexIndex, typename IndSimpSet< N, M, A, T, V, IS >::SimplexFace *face) |
| Get the face in the simplex that is opposite to the given vertex. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | getIndexedFace (const IndSimpSet< N, M, A, T, V, IS > &mesh, int simplexIndex, int vertexIndex, typename IndSimpSet< N, M, A, T, V, IS >::IndexedSimplexFace *face) |
| Get the indexed face in the simplex that is opposite to the given vertex. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | getCentroid (const IndSimpSet< N, M, A, T, V, IS > &mesh, int n, typename IndSimpSet< N, M, A, T, V, IS >::Vertex *x) |
| Get the centroid of the specified simplex. | |
| template<int N, bool A, typename T , typename V , typename IF , typename IS > | |
| void | buildFromQuadMesh (const QuadMesh< N, A, T, V, IF > &quadMesh, IndSimpSet< N, 2, true, T, V, IS > *mesh) |
| Build from a quadrilateral mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename IntForIter > | |
| void | buildFromSubsetVertices (const IndSimpSet< N, M, A, T, V, IS > &in, IntForIter verticesBeginning, IntForIter verticesEnd, IndSimpSet< N, M, true, T, V, IS > *out) |
| Make a mesh from a subset of vertices of a mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename IntForIter > | |
| void | buildFromSubsetSimplices (const IndSimpSet< N, M, A, T, V, IS > &in, IntForIter simplicesBeginning, IntForIter simplicesEnd, IndSimpSet< N, M, true, T, V, IS > *out) |
| Make a new mesh from the subset of simplices. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class LSF > | |
| void | buildFromVerticesInside (const IndSimpSet< N, M, A, T, V, IS > &in, const LSF &f, IndSimpSet< N, M, true, T, V, IS > *out) |
| Make a mesh by selecting vertices from the input mesh that are inside the object. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class LSF > | |
| void | buildFromSimplicesInside (const IndSimpSet< N, M, A, T, V, IS > &in, const LSF &f, IndSimpSet< N, M, true, T, V, IS > *out) |
| Make a mesh by selecting simplices from the input mesh that are inside the object. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace , typename IntOutputIterator > | |
| void | buildBoundary (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out, IntOutputIterator usedVertexIndices) |
| Make a mesh that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace > | |
| void | buildBoundary (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out) |
| Make a mesh that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace , typename IntOutputIterator > | |
| void | buildBoundaryWithoutPacking (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out, IntOutputIterator incidentSimplices) |
| Make a mesh that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace > | |
| void | buildBoundaryWithoutPacking (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out) |
| Make a mesh that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace , typename IntOutputIterator1 , typename IntOutputIterator2 > | |
| void | buildBoundaryOfComponentsWithoutPacking (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out, IntOutputIterator1 delimiterIterator, IntOutputIterator2 incidentSimplices) |
| Make a mesh (separated into connected components) that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace , typename IntOutputIterator > | |
| void | buildBoundaryOfComponentsWithoutPacking (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out, IntOutputIterator delimiterIterator) |
| Make a mesh (separated into connected components) that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace , typename IntOutputIterator1 , typename IntOutputIterator2 > | |
| void | buildBoundaryOfComponents (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out, IntOutputIterator1 delimiterIterator, IntOutputIterator2 incidentSimplices) |
| Make a mesh (separated into connected components) that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace , typename IntOutputIterator > | |
| void | buildBoundaryOfComponents (const IndSimpSetIncAdj< N, M, A, T, V, ISimp > &in, IndSimpSet< N, M-1, true, T, V, IFace > *out, IntOutputIterator delimiterIterator) |
| Make a mesh (separated into connected components) that is the boundary of the input mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename ISimp , typename IFace > | |
| void | centerPointMesh (const IndSimpSet< N, M-1, A, T, V, IFace > &boundary, IndSimpSet< N, M, true, T, V, ISimp > *mesh) |
| Make a mesh by connecting the boundary nodes to a new center point. | |
| template<int N, int M, typename T , typename V , typename IS , typename MeshInputIterator > | |
| void | merge (MeshInputIterator beginning, MeshInputIterator end, IndSimpSet< N, M, true, T, V, IS > *out) |
| Merge a range of meshes to make a single mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | merge2 (const IndSimpSet< N, M, A, T, V, IS > &a, const IndSimpSet< N, M, A, T, V, IS > &b, IndSimpSet< N, M, true, T, V, IS > *out) |
| Merge two meshes to make a single mesh. | |
| template<int N, int M, typename T , typename V , typename IS , typename VertexForIter > | |
| void | buildFromSimplices (VertexForIter verticesBeginning, VertexForIter verticesEnd, IndSimpSet< N, M, true, T, V, IS > *mesh) |
| Build from the simplices. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename OutputIterator > | |
| void | computeMeanRatio (const IndSimpSet< N, M, A, T, V, IS > &iss, OutputIterator output) |
| Calculate the mean ratio function for each simplex in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename OutputIterator > | |
| void | computeModifiedMeanRatio (const IndSimpSet< N, M, A, T, V, IS > &iss, OutputIterator output) |
| Calculate the modified mean ratio function for each simplex in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename OutputIterator > | |
| void | computeConditionNumber (const IndSimpSet< N, M, A, T, V, IS > &iss, OutputIterator output) |
| Calculate the condition number function for each simplex in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename OutputIterator > | |
| void | computeModifiedConditionNumber (const IndSimpSet< N, M, A, T, V, IS > &iss, OutputIterator output) |
| Calculate the modified condition number function for each simplex in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename OutputIterator > | |
| void | computeContent (const IndSimpSet< N, M, A, T, V, IS > &iss, OutputIterator output) |
| Calculate the content for each simplex in the mesh. | |
| template<int N, bool A, typename T , typename V , typename IS , typename VertexForwardIterator > | |
| int | removeContact (const IndSimpSet< N, N-1, A, T, V, IS > &surface, VertexForwardIterator verticesBeginning, VertexForwardIterator verticesEnd) |
| Move the vertices to remove contact. | |
| template<int N, int M, bool A1, bool A2, typename T , typename V1 , typename V2 , typename IS1 , typename IS2 > | |
| bool | operator== (const IndSimpSet< N, M, A1, T, V1, IS1 > &x, const IndSimpSet< N, M, A2, T, V2, IS2 > &y) |
| Return true if the vertices and indexed simplices are equal. | |
| template<int N, int M, bool A1, bool A2, typename T , typename V1 , typename V2 , typename IS1 , typename IS2 > | |
| bool | operator!= (const IndSimpSet< N, M, A1, T, V1, IS1 > &x, const IndSimpSet< N, M, A2, T, V2, IS2 > &y) |
| Return true if the vertices and indexed simplices are not equal. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | writeAscii (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &x) |
| Write an indexed simplex set in ascii format. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | writeBinary (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &x) |
| Write an indexed simplex set in binary format. | |
| template<int N, int M, typename T , typename V , typename IS > | |
| void | readAscii (std::istream &in, IndSimpSet< N, M, true, T, V, IS > *x) |
| Read an indexed simplex set in ascii format. | |
| template<int N, int M, typename T , typename V , typename IS > | |
| void | readBinary (std::istream &in, IndSimpSet< N, M, true, T, V, IS > *x) |
| Read an indexed simplex set in binary format. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | writeVtkXml (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &x) |
| Write in VTK XML unstructured grid format. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename F , bool A2> | |
| void | writeVtkXml (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &x, const ads::Array< 1, F, A2 > &cellData, std::string dataName) |
| Write the mesh and the cell data in VTK XML unstructured grid format. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename ContainerIter , typename StringIter > | |
| void | writeVtkXml (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &x, ContainerIter cellDataContainersBeginning, ContainerIter cellDataContainersEnd, StringIter dataNamesBeginning, StringIter dataNamesEnd) |
| Write the mesh and the cell data in VTK XML unstructured grid format. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | writeVtkLegacy (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &x, std::string title="") |
| Write in legacy VTK unstructured grid format. | |
| template<bool A, typename T , typename V , typename IS , class ISS > | |
| void | fit (IndSimpSetIncAdj< 2, 2, A, T, V, IS > *mesh, const ISS_SignedDistance< ISS, 2 > &signedDistance, T deviationTangent, int numSweeps) |
| Fit the boundary of a mesh to a level-set description. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , int MM, bool MA, typename MT , typename MV , typename MIS , typename IntOutIter > | |
| void | determineVerticesOnManifold (const IndSimpSet< N, M, A, T, V, IS > &mesh, const IndSimpSet< N, MM, MA, MT, MV, MIS > &manifold, IntOutIter indexIterator, T epsilon=std::sqrt(std::numeric_limits< T >::epsilon())) |
| Get the vertices on the manifold. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename IntInIter , int MM, bool MA, typename MT , typename MV , typename MIS , typename IntOutIter > | |
| void | determineVerticesOnManifold (const IndSimpSet< N, M, A, T, V, IS > &mesh, IntInIter indicesBeginning, IntInIter indicesEnd, const IndSimpSet< N, MM, MA, MT, MV, MIS > &manifold, IntOutIter indexIterator, T epsilon=std::sqrt(std::numeric_limits< T >::epsilon())) |
| Get the vertices (from the set of vertices) on the manifold. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | countAdjacencies (const IndSimpSetIncAdj< N, M, A, T, V, IS > &iss, ads::FixedArray< M+2, int > *counts) |
| Calculate the adjacency counts for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| T | computeMinimumEdgeLength (const IndSimpSet< N, M, A, T, V, IS > &mesh) |
| Return the minimum edge length. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| T | computeMaximumEdgeLength (const IndSimpSet< N, M, A, T, V, IS > &mesh) |
| Return the maximum edge length. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| T | computeContent (const IndSimpSet< N, M, A, T, V, IS > &iss) |
| Return the total content of the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | computeContentStatistics (const IndSimpSet< N, M, A, T, V, IS > &iss, T *minimumContent, T *maximumContent, T *meanContent) |
| Calculate content (hypervolume) statistics for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | computeDeterminantStatistics (const IndSimpSet< N, M, A, T, V, IS > &iss, T *minimumDeterminant, T *maximumDeterminant, T *meanDeterminant) |
| Calculate determinant statistics for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | computeModifiedMeanRatioStatistics (const IndSimpSet< N, M, A, T, V, IS > &iss, T *minimumModMeanRatio, T *maximumModMeanRatio, T *meanModMeanRatio) |
| Calculate modified mean ratio function statistics for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | computeModifiedConditionNumberStatistics (const IndSimpSet< N, M, A, T, V, IS > &iss, T *minimumModCondNum, T *maximumModCondNum, T *meanModCondNum) |
| Calculate modified condition number function statistics for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | computeQualityStatistics (const IndSimpSet< N, M, A, T, V, IS > &iss, T *minimumContent, T *maximumContent, T *meanContent, T *minimumDeterminant, T *maximumDeterminant, T *meanDeterminant, T *minimumModMeanRatio, T *maximumModMeanRatio, T *meanModMeanRatio, T *minimumModCondNum, T *maximumModCondNum, T *meanModCondNum) |
| Calculate quality statistics for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | printQualityStatistics (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &mesh) |
| Print quality statistics for the simplices in the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | printInformation (std::ostream &out, const IndSimpSet< N, M, A, T, V, IS > &mesh) |
| Print information about the mesh. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class LSF , typename IntOutIter > | |
| void | determineVerticesInside (const IndSimpSet< N, M, A, T, V, IS > &mesh, const LSF &f, IntOutIter indexIterator) |
| Determine the vertices that are inside the object. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class LSF , typename IntOutIter > | |
| void | determineSimplicesInside (const IndSimpSet< N, M, A, T, V, IS > &mesh, const LSF &f, IntOutIter indexIterator) |
| Determine the simplices that are inside the object. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class UnaryFunction , typename IntOutIter > | |
| void | determineSimplicesThatSatisfyCondition (const IndSimpSet< N, M, A, T, V, IS > &mesh, const UnaryFunction &f, IntOutIter indexIterator) |
| Determine the simplices which satisfy the specified condition. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename IntOutIter > | |
| void | determineOverlappingSimplices (const IndSimpSet< N, M, A, T, V, IS > &mesh, const BBox< N, T > &domain, IntOutIter indexIterator) |
| Determine the simplices whose bounding boxes overlap the domain. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename IntInIter , typename IntOutIter > | |
| void | determineIncidentVertices (const IndSimpSet< N, M, A, T, V, IS > &mesh, IntInIter simplexIndicesBeginning, IntInIter simplexIndicesEnd, IntOutIter vertexIndicesIterator) |
| Add the vertices which are incident to the simplices. | |
| template<int N, bool A, typename T , typename V , typename IS > | |
| void | subdivide (const IndSimpSet< N, 1, A, T, V, IS > &in, IndSimpSet< N, 1, true, T, V, IS > *out) |
| Subdivide by splitting each simplex in half. | |
| template<int N, bool A, typename T , typename V , typename IS > | |
| void | subdivide (const IndSimpSetIncAdj< N, 2, A, T, V, IS > &in, IndSimpSet< N, 2, true, T, V, IS > *out) |
| Subdivide by splitting each simplex into four similar simplices. | |
| template<typename T , typename V , typename IS , class LSF > | |
| void | tile (const BBox< 2, T > &domain, T length, const LSF &f, IndSimpSet< 2, 2, true, T, V, IS > *mesh) |
| Tile the object with equilateral triangles. | |
| template<typename T , typename V , typename IS > | |
| void | tile (const BBox< 2, T > &domain, const T length, IndSimpSet< 2, 2, true, T, V, IS > *mesh) |
| Tile the rectangular region with equilateral triangles. | |
| template<typename T , typename V , typename IS , class LSF > | |
| void | tile (const BBox< 3, T > &domain, const T length, const LSF &f, IndSimpSet< 3, 3, true, T, V, IS > *mesh) |
| Tile the object with a body-centered cubic lattice. | |
| template<typename T , typename V , typename IS > | |
| void | tile (const BBox< 3, T > &domain, const T length, IndSimpSet< 3, 3, true, T, V, IS > *mesh) |
| Tile the rectilinear region with a body-centered cubic lattice. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class PointArray , class IndexArray > | |
| void | transferIndices (const IndSimpSet< N, M, A, T, V, IS > &mesh, const PointArray &points, IndexArray *indices) |
| Determine the simplex indices in an ISS for transfering fields. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class SourceFieldArray , class PointArray , class TargetFieldArray > | |
| void | transfer (const IndSimpSet< N, M, A, T, V, IS > &mesh, const SourceFieldArray &sourceFields, const PointArray &points, TargetFieldArray *targetFields) |
| Transfer fields for indexed simplex sets. | |
| template<int N, int M, typename T , typename V , typename IS , typename IntOutputIterator > | |
| void | pack (IndSimpSet< N, M, true, T, V, IS > *mesh, IntOutputIterator usedVertexIndices) |
| Pack the ISS to get rid of unused vertices. | |
| template<int N, int M, typename T , typename V , typename IS > | |
| void | pack (IndSimpSet< N, M, true, T, V, IS > *mesh) |
| Pack the ISS to get rid of unused vertices. | |
| template<int N, bool A, typename T , typename V , typename IS > | |
| void | orientPositive (IndSimpSet< N, N, A, T, V, IS > *mesh) |
| Orient each simplex so it has non-negative volume. | |
| template<int N, int M, bool A, typename T , typename V , typename IS > | |
| void | reverseOrientation (IndSimpSet< N, M, A, T, V, IS > *mesh) |
| Reverse the orientation of each simplex. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , typename IntForIter , class UnaryFunction > | |
| void | transform (IndSimpSet< N, M, A, T, V, IS > *mesh, IntForIter beginning, IntForIter end, const UnaryFunction &f) |
| Transform each vertex in the range with the specified function. | |
| template<int N, int M, bool A, typename T , typename V , typename IS , class UnaryFunction > | |
| void | transform (IndSimpSet< N, M, A, T, V, IS > mesh, const UnaryFunction &f) |
| Transform each vertex in the mesh with the specified function. | |
Class for a mesh that stores vertices and indexed simplices.
| N | is the space dimension. | |
| M | is the simplex dimension By default it is N. | |
| A | determines whether the mesh will allocate its own memory or use externally allocated memory. By default A is true. | |
| T | is the number type. By default it is double. | |
| V | is the vertex type, an N-tuple of the number type. It must be subscriptable. By default it is ads::FixedArray<N,T>. | |
| IS | is the indexed simplex type, a tuple of M+1 integers. It must be subscriptable. By default it is Simplex<M,int>. |
Note that the indices for indexed simplices follow the C convention of starting at 0.
The free functions that operate on this class are grouped into the following categories:
| IndSimpSet< _N, _M, _A, T, V, IS >::IndSimpSet | ( | const ads::Array< 1, Vertex, A1 > & | vertices, | |
| const ads::Array< 1, IndexedSimplex, A2 > & | indexedSimplices | |||
| ) | [inline] |
Construct from arrays of vertices and indexed simplices.
If A is true, the arrays will be copied. If A is false, the memory is adopted. It will not be freed when the class destructor is called.
| vertices | is the array of vertices. | |
| indexedSimplices | is the array of indexed simplices. |
| IndSimpSet< _N, _M, _A, T, V, IS >::IndSimpSet | ( | const SizeType | numVertices, | |
| void * | vertices, | |||
| const SizeType | numSimplices, | |||
| void * | indexedSimplices | |||
| ) | [inline] |
Construct from pointers to the vertices and indexed simplices.
If A is true, the arrays will be copied. If A is false, the memory is adopted. It will not be freed when the class destructor is called. The objects to which vertices and indexedSimplices point will be cast to Vertex and IndexedSimplex, respectively. Thus they should have the same memory layout as these classes.
| numVertices | is the number of vertices. | |
| vertices | points to the data for the vertices. | |
| numSimplices | is the number of simplices. | |
| indexedSimplices | points to the data for the indexed simplices. |
| IndSimpSet< _N, _M, _A, T, V, IS >::IndSimpSet | ( | const SizeType | numVertices, | |
| const void * | vertices, | |||
| const SizeType | numSimplices, | |||
| const void * | indexedSimplices | |||
| ) | [inline] |
Construct from pointers to the vertices and indexed simplices.
A must be true to use this constructor.
The objects to which vertices and indexedSimplices point will be cast to Vertex and IndexedSimplex, respectively. Thus they should have the same memory layout as these classes.
| numVertices | is the number of vertices. | |
| vertices | points to the data for the vertices. | |
| numSimplices | is the number of simplices. | |
| indexedSimplices | points to the data for the indexed simplices. |
| IndSimpSet< _N, _M, _A, T, V, IS >::IndSimpSet | ( | const SizeType | numVertices, | |
| const SizeType | numSimplices | |||
| ) | [inline] |
Construct from the number of vertices and simplices.
A must be true.
The vertices and indexed simplices are left uninitialized.
| numVertices | is the number of vertices. | |
| numSimplices | is the number of simplices. |
| void IndSimpSet< _N, _M, _A, T, V, IS >::build | ( | const SizeType | numVertices, | |
| const SizeType | numSimplices | |||
| ) | [inline] |
Build from the number of vertices and simplices.
Performs same actions as the constructor.
| numVertices | is the number of vertices. | |
| numSimplices | is the number of simplices. |
Reimplemented in IndSimpSetIncAdj< _N, _M, _A, T, V, IS >, IndSimpSetIncAdj< N, M, true, T >, and IndSimpSetIncAdj< N, M-1, true, T >.
| void IndSimpSet< _N, _M, _A, T, V, IS >::build | ( | const SizeType | numVertices, | |
| const void * | vertices, | |||
| const SizeType | numSimplices, | |||
| const void * | indexedSimplices | |||
| ) |
Build from pointers to the vertices and indexed simplices.
Performs same actions as the constructor.
| numVertices | is the number of vertices. | |
| vertices | points to the data for the vertices. | |
| numSimplices | is the number of simplices. | |
| indexedSimplices | points to the data for the indexed simplices. |
Reimplemented in IndSimpSetIncAdj< _N, _M, _A, T, V, IS >, IndSimpSetIncAdj< N, M, true, T >, and IndSimpSetIncAdj< N, M-1, true, T >.
| void IndSimpSet< _N, _M, _A, T, V, IS >::build | ( | const SizeType | numVertices, | |
| void * | vertices, | |||
| const SizeType | numSimplices, | |||
| void * | indexedSimplices | |||
| ) |
Build from pointers to the vertices and indexed simplices.
Performs same actions as the constructor.
| numVertices | is the number of vertices. | |
| vertices | points to the data for the vertices. | |
| numSimplices | is the number of simplices. | |
| indexedSimplices | points to the data for the indexed simplices. |
Reimplemented in IndSimpSetIncAdj< _N, _M, _A, T, V, IS >, IndSimpSetIncAdj< N, M, true, T >, and IndSimpSetIncAdj< N, M-1, true, T >.
| void IndSimpSet< _N, _M, _A, T, V, IS >::build | ( | const ads::Array< 1, Vertex, A1 > & | vertices, | |
| const ads::Array< 1, IndexedSimplex, A2 > & | indexedSimplices | |||
| ) | [inline] |
Build from arrays of vertices and indexed simplices.
Performs same actions as the constructor.
| vertices | is the array of vertices. | |
| indexedSimplices | is the array of indexed simplices. |
Reimplemented in IndSimpSetIncAdj< _N, _M, _A, T, V, IS >, IndSimpSetIncAdj< N, M, true, T >, and IndSimpSetIncAdj< N, M-1, true, T >.
| virtual void IndSimpSet< _N, _M, _A, T, V, IS >::updateTopology | ( | ) | [inline, virtual] |
Update the data structure following a change in the topology.
For this class, this function does nothing. For derived classes, it updates data structures that hold auxillary topological information.
Reimplemented in IndSimpSetIncAdj< _N, _M, _A, T, V, IS >, IndSimpSetIncAdj< N, M, true, T >, and IndSimpSetIncAdj< N, M-1, true, T >.
1.6.3