Classes | |
class | RegularGrid |
A regular grid in N-D. More... | |
class | Ball |
A ball in N dimensional space. More... | |
class | BBox |
An axes-oriented bounding box in the specified dimension. More... | |
class | Circle3 |
A circle in 3-dimensional space. More... | |
class | CircularArc3 |
A circular arc in 3-dimensional space. More... | |
class | Interval |
An axes-oriented interval in the specified dimension. More... | |
class | Line_2 |
A line in 2-D. More... | |
class | ParametrizedLine |
A parametrized line in N-D. More... | |
class | ParametrizedPlane |
A parametrized plane in N-D. More... | |
class | Plane |
A plane in 3 dimensions. More... | |
class | Segment |
A segment in N dimensional space. More... | |
class | SegmentMath |
A segment in N dimensional space designed for doing math operations. More... | |
class | SemiOpenInterval |
An axes-oriented semi-open interval in N dimensions. More... | |
class | Triangle |
A class for a triangle in N dimensions. More... | |
class | IndSimpSet |
Class for a mesh that stores vertices and indexed simplices. More... | |
class | IndSimpSetIncAdj |
An indexed simplex set that stores vertex-simplex incidences and simplex adjacencies. More... | |
class | ISS_Interpolate |
Interpolation for an indexed simplex set with fields at the vertices. More... | |
class | ISS_Distance |
Functor that returns the distance to a mesh. More... | |
class | ISS_SD_Distance |
Functor that returns the signed distance to an (N-1)-D mesh in N-D space. More... | |
class | ISS_SD_ClosestPoint |
Functor that returns the closest point to an (N-1)-D mesh in N-D space. More... | |
class | ISS_SD_ClosestPointDirection |
Functor that returns the closest point along a specified direction to an (N-1)-D mesh in N-D space. More... | |
class | ISS_SD_CloserPointDirection |
Functor that returns the closest point along a specified direction to an (N-1)-D mesh in N-D space. More... | |
class | ISS_SD_CloserPoint |
Functor that returns a closer point to an (N-1)-D mesh in N-D space. More... | |
class | ISS_SimplexQuery |
Simplex queries on an indexed simplex set. More... | |
class | ISS_VertexField |
Indexed simplex set with fields at the vertices. More... | |
class | SimplexAdj |
Simplex-simplex adjacencies in an M-D indexed simplex set. More... | |
class | VertexSimplexInc |
Vertex-simplex incidences in an M-D indexed simplex set. More... | |
class | ComplexWithFreeVertex |
A local simplicial complex with a free node at the center. More... | |
class | ComplexContentConstraint |
Functor that evaluates the content constraint for a local simplicial mesh. More... | |
class | ComplexNorm2 |
Functor that evaluates the 2-norm of the quality metric for a local simplicial mesh. More... | |
class | ComplexNorm2Mod |
Functor that evaluates the 2-norm of the modified quality metric for a local simplicial mesh. More... | |
class | ComplexWithFreeVertexOnManifoldBase |
A base class for a local simplicial complex with a free node on a manifold. More... | |
class | ComplexWithFreeVertexOnManifold< QF, N, 1, _Manifold, T > |
A local simplicial complex with a free node on a manifold. More... | |
class | ComplexWithFreeVertexOnManifold< QF, N, 2, _Manifold, T > |
A local simplicial complex with a free node on a manifold. More... | |
class | ComplexManifoldNorm2 |
Functor that evaluates the 2-norm of the quality metric for a local simplicial mesh. More... | |
class | ComplexManifoldNorm2Mod |
Functor that evaluates the 2-norm of the modified quality metric for a local simplicial mesh. More... | |
class | SimplexDeterminant |
Functor for the determinant of the Jacobian matrix. More... | |
class | SimplexContent |
Functor for the content of a simplex. More... | |
class | SimplexMinimumEdgeLength |
Functor for the minimum edge length of a simplex. More... | |
class | SimplexMaximumEdgeLength |
Functor for the minimum edge length of a simplex. More... | |
class | Simplex |
A simplex in N dimensions. More... | |
class | SimplexAdjJac |
Implements operations for the adjoint Jacobian matrix of a simplex. More... | |
class | SimplexAdjJacQF |
Quality function of the Jacobian and its adjoint. More... | |
class | SimplexCondNum |
Implements the condition number quality metric. More... | |
class | SimplexJac |
Implements operations for the Jacobian matrix of a simplex. More... | |
class | SimplexJacQF |
Simplex quality functions of the Jacobian matrix. More... | |
class | SimplexMeanRatio |
Implements the mean ratio quality metric. More... | |
class | SimplexModCondNum |
Implements the modified condition number quality metric. More... | |
class | SimplexModDet |
Implements operations for modifying the determinant of the Jacobian. More... | |
class | SimplexModMeanRatio |
Implements the mean ratio quality metric. More... | |
class | SimplexWithFreeVertex |
A simplex with a free vertex. More... | |
class | EdgeRemoval |
Edge removal in a tetrahedral mesh. More... | |
class | FaceRemoval |
Edge removal in a tetrahedral mesh. More... | |
class | IsNotSharpAngle |
Functor that returns true iff the boundary angle is not sharp. More... | |
class | Node_AllIncCells |
Node in a simplicial mesh that stores iterators to all incident cells. More... | |
class | Node_OneIncCell |
Vertex in a simplicial mesh that stores one cell incidence. More... | |
class | Node_VertSelf |
A node in a simplicial mesh that stores a vertex and an iterator to itself. More... | |
class | Node_VertSelfId |
A node in a simplicial mesh that stores a vertex, an iterator to itself, and an identifier. More... | |
class | SimpMeshRed |
A simplicial mesh data structure. More... | |
class | SmrCell |
Cell in a simplicial mesh that stores handles to the adjacent cells. More... | |
class | SmrNode |
Node in a simplicial mesh that stores iterators to all incident cells. More... | |
class | StructuredGrid |
Class for a structured grid. More... | |
class | CyclicIndex |
A class for a cyclic index. More... | |
class | IndexedEdgePolyhedron |
Class for an indexed edge polyhedron in 3-D. More... | |
class | Polygon |
Class for a polygon in 2-D. More... | |
class | ScanConversionPolygon |
Class for a polygon in 2-D. More... | |
class | ScanConversionPolyhedron |
A class for a polyhedron in 3-D designed for scan conversion. More... | |
class | BBoxTreeTypes |
Define types for a BBoxTree. More... | |
class | BBoxTreeNode |
Abstract base class for nodes in a BBoxTree. More... | |
class | BBoxTreeLeaf |
Class for a leaf in a BBoxTree. More... | |
class | BBoxTreeBranch |
Class for an internal node in a BBoxTree. More... | |
class | BBoxTree |
A bounding box tree in N-D. More... | |
Functions | |
template<int N, int M, typename T> | |
void | readAscii (std::istream &in, IndSimpSet< N, M, true, T > *mesh) |
Read a mesh in ascii format. | |
template<int N, int M, typename T> | |
void | writeAscii (std::ostream &out, const IndSimpSet< N, M, true, T > &mesh) |
Write a mesh in ascii format. | |
template<typename T> | |
void | computeClosestPoint (const Circle3< T > &circle, typename Circle3< T >::Point x, typename Circle3< T >::Point *closestPoint) |
Compute the closest point on the circle. | |
template<typename T> | |
void | computeClosestPoint (const Circle3< T > &circle, const typename Circle3< T >::Point &source, const typename Circle3< T >::Point &target, typename Circle3< T >::Point *closestPoint, T tolerance=std::sqrt(std::numeric_limits< T >::epsilon()), int maximumSteps=10) |
Compute the closest point on the circle to the edge. | |
template<typename T> | |
void | computeClosestPoint (const CircularArc3< T > &circularArc, typename CircularArc3< T >::Point x, typename CircularArc3< T >::Point *closestPoint) |
Compute the closest point on the circular arc. | |
template<typename T> | |
void | computeClosestPoint (const Circle3< T > &circle, const CircularArc3< T > &circularArc, typename CircularArc3< T >::Point *closestPoint, T tolerance=std::sqrt(std::numeric_limits< T >::epsilon()), int maximumSteps=10) |
Compute the closest point on the circle to the circular arc. | |
template<int N, typename T> | |
T | computeDistance (const ads::FixedArray< N, T > &x, const ads::FixedArray< N, T > &y) |
Return the distance between the points x and y . | |
template<int N, typename T> | |
T | computeDistance (const ads::FixedArray< 2, ads::FixedArray< N, T > > &x) |
Return the distance between the points x [0] and x [1]. | |
template<int N, typename T> | |
T | computeContent (const ads::FixedArray< N, T > &x, const ads::FixedArray< N, T > &y) |
Return the distance between the points x and y . | |
template<int N, typename T> | |
T | computeContent (const ads::FixedArray< 2, ads::FixedArray< N, T > > &x) |
Return the distance between the points x [0] and x [1]. | |
template<int N, typename T> | |
void | computeGradientOfDistance (const ads::FixedArray< N, T > &x, const ads::FixedArray< N, T > &y, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to x) of the distance between the points x and y . | |
template<int N, typename T> | |
void | computeGradientOfDistance (const ads::FixedArray< 2, ads::FixedArray< N, T > > &x, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to x[0]) of the distance between the points x [0] and x [1]. | |
template<int N, typename T> | |
void | computeGradientOfContent (const ads::FixedArray< N, T > &x, const ads::FixedArray< N, T > &y, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to x) of the distance between the points x and y . | |
template<int N, typename T> | |
void | computeGradientOfContent (const ads::FixedArray< 2, ads::FixedArray< N, T > > &x, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to x[0]) of the distance between the points x [0] and x [1]. | |
template<typename T> | |
T | computeArea (const ads::FixedArray< 2, T > &a, const ads::FixedArray< 2, T > &b, const ads::FixedArray< 2, T > &c) |
Return the area of the triangle with points a , b and c . | |
template<typename T> | |
T | computeArea (const ads::FixedArray< 3, ads::FixedArray< 2, T > > &p) |
Return the area of the triangle with points p [0], p [1] and p [2]. | |
template<typename T> | |
T | computeArea (const ads::FixedArray< 3, T > &a, const ads::FixedArray< 3, T > &b, const ads::FixedArray< 3, T > &c) |
Return the area of the triangle with points a , b and c . | |
template<typename T> | |
T | computeArea (const ads::FixedArray< 3, ads::FixedArray< 3, T > > &p) |
Return the area of the triangle with points p [0], p [1] and p [2]. | |
template<int N, typename T> | |
T | computeContent (const ads::FixedArray< N, T > &a, const ads::FixedArray< N, T > &b, const ads::FixedArray< N, T > &c) |
Return the area of the triangle with points a , b and c . | |
template<int N, typename T> | |
T | computeContent (const ads::FixedArray< 3, ads::FixedArray< N, T > > &p) |
Return the area of the triangle with points p [0], p [1] and p [2]. | |
template<typename T> | |
void | computeGradientOfArea (const ads::FixedArray< 2, T > &a, const ads::FixedArray< 2, T > &b, const ads::FixedArray< 2, T > &c, ads::FixedArray< 2, T > *gradient) |
Calculate the gradient (with respect to a) of the area of the triangle with points a , b and c . | |
template<typename T> | |
void | computeGradientOfArea (const ads::FixedArray< 3, T > &a, const ads::FixedArray< 3, T > &b, const ads::FixedArray< 3, T > &c, ads::FixedArray< 3, T > *gradient) |
Calculate the gradient (with respect to a) of the area of the triangle with points a , b and c . | |
template<int N, typename T> | |
void | computeGradientOfArea (const ads::FixedArray< 3, ads::FixedArray< N, T > > &p, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to a) of the area of the triangle with points p [0], p [1] and p [2]. | |
template<int N, typename T> | |
void | computeGradientOfContent (const ads::FixedArray< N, T > &a, const ads::FixedArray< N, T > &b, const ads::FixedArray< N, T > &c, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to a) of the area of the triangle with points a , b and c . | |
template<int N, typename T> | |
void | computeGradientOfContent (const ads::FixedArray< 3, ads::FixedArray< N, T > > &p, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to a) of the area of the triangle with points p [0], p [1] and p [2]. | |
template<int N, typename T> | |
T | computeVolume (const ads::FixedArray< N, T > &a, const ads::FixedArray< N, T > &b, const ads::FixedArray< N, T > &c, const ads::FixedArray< N, T > &d) |
Return the volume of the tetrahedron with points a , b , c and d . | |
template<int N, typename T> | |
T | computeVolume (const ads::FixedArray< 4, ads::FixedArray< N, T > > &p) |
Return the volume of the tetrahedron with points p [0], p [1], p [2] and p [3]. | |
template<int N, typename T> | |
T | computeContent (const ads::FixedArray< N, T > &a, const ads::FixedArray< N, T > &b, const ads::FixedArray< N, T > &c, const ads::FixedArray< N, T > &d) |
Return the volume of the tetrahedron with points a , b , c and d . | |
template<int N, typename T> | |
T | computeContent (const ads::FixedArray< 4, ads::FixedArray< N, T > > &p) |
Return the volume of the tetrahedron with points p [0], p [1], p [2] and p [3]. | |
template<typename T> | |
void | computeGradientOfVolume (const ads::FixedArray< 3, T > &a, const ads::FixedArray< 3, T > &b, const ads::FixedArray< 3, T > &c, const ads::FixedArray< 3, T > &d, ads::FixedArray< 3, T > *gradient) |
Calculate the gradient (with respect to a) of the volume of the tetrahedron with points a , b , c and d . | |
template<int N, typename T> | |
void | computeGradientOfVolume (const ads::FixedArray< 4, ads::FixedArray< N, T > > &p, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to a) of the volume of the tetrahedron with points p [0], p [1], p [2] and p [3]. | |
template<int N, typename T> | |
void | computeGradientOfContent (const ads::FixedArray< N, T > &a, const ads::FixedArray< N, T > &b, const ads::FixedArray< N, T > &c, const ads::FixedArray< N, T > &d, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to a) of the volume of the tetrahedron with points a , b , c and d . | |
template<int N, typename T> | |
void | computeGradientOfContent (const ads::FixedArray< 4, ads::FixedArray< N, T > > &p, ads::FixedArray< N, T > *gradient) |
Calculate the gradient (with respect to a) of the volume of the tetrahedron with points p [0], p [1], p [2] and p [3]. | |
template<int N, typename T> | |
T | computeUpperBoundOnSignedDistance (const BBox< N, T > &box, const typename BBox< N, T >::Point &x) |
Return an upper bound on the signed distance from the point to the objects in the box. | |
template<int N, typename T> | |
T | computeLowerBoundOnSignedDistance (const BBox< N, T > &box, const typename BBox< N, T >::Point &x) |
Return an lower bound on the signed distance from the point to the objects in the box. | |
template<int N, typename T> | |
T | computeUpperBoundOnUnsignedDistance (const BBox< N, T > &box, const typename BBox< N, T >::Point &x) |
Return an upper bound on the signed distance. | |
template<int N, typename T> | |
T | computeLowerBoundOnUnsignedDistance (const BBox< N, T > &box, const typename BBox< N, T >::Point &x) |
Return a lower bound on the signed distance. | |
template<typename T> | |
T | computeOrientationDeterminant (const ads::FixedArray< 2, T > &a, const ads::FixedArray< 2, T > &b, const ads::FixedArray< 2, T > &c) |
Compute the orientation determinant. | |
template<typename T> | |
T | computeInCircleDeterminant (const ads::FixedArray< 2, T > &a, const ads::FixedArray< 2, T > &b, const ads::FixedArray< 2, T > &c, const ads::FixedArray< 2, T > &d) |
Compute the in-circle determinant. | |
template<typename T> | |
bool | isInCircle (const ads::FixedArray< 2, T > &a, const ads::FixedArray< 2, T > &b, const ads::FixedArray< 2, T > &c, const ads::FixedArray< 2, T > &d) |
Return true if d is inside the circle with a , b , and c on its boundary. | |
template<int N, typename T> | |
T | computeDotProduct (const ads::FixedArray< N, T > &x, const ads::FixedArray< N, T > &y) |
Return the dot product of x and y. | |
template<typename T> | |
ads::FixedArray< 3, T > | computeCrossProduct (const ads::FixedArray< 3, T > &x, const ads::FixedArray< 3, T > &y) |
Return the cross product of x and y. | |
template<typename T> | |
void | computeCrossProduct (const ads::FixedArray< 3, T > &x, const ads::FixedArray< 3, T > &y, ads::FixedArray< 3, T > *result) |
Compute the cross product of x and y. | |
template<typename T> | |
T | computeTripleProduct (const ads::FixedArray< 3, T > &a, const ads::FixedArray< 3, T > &b, const ads::FixedArray< 3, T > &c) |
The scalar triple product of three vectors: ![]() | |
template<typename T> | |
T | computeDiscriminant (const ads::FixedArray< 2, T > &p, const ads::FixedArray< 2, T > &q) |
Return the discriminant of the vectors. | |
template<typename T> | |
void | computeAnOrthogonalVector (const ads::FixedArray< 3, T > &vector, ads::FixedArray< 3, T > *orthogonal) |
Compute an orthogonal vector. | |
template<int N, typename T> | |
T | computeSquaredMagnitude (const ads::FixedArray< N, T > &x) |
Return the squared magnitude of this vector. | |
template<int N, typename T> | |
T | computeMagnitude (const ads::FixedArray< N, T > &x) |
Return the magnitude of this vector. | |
template<int N, typename T> | |
void | normalize (ads::FixedArray< N, T > *x) |
Normalize this vector so it has unit length. | |
template<int N, typename T> | |
T | computeSquaredDistance (const ads::FixedArray< N, T > &p, const ads::FixedArray< N, T > &q) |
Return the squared distance between two points. | |
template<typename T> | |
int | computeSignOfTurn (const ads::FixedArray< 2, T > &p, const ads::FixedArray< 2, T > &q, const ads::FixedArray< 2, T > &r) |
Positive turn: return 1. No turn: return 0. Negative turn: return -1. | |
template<typename T> | |
int | computeApproximateSignOfTurn (const ads::FixedArray< 2, T > &p, const ads::FixedArray< 2, T > &q, const ads::FixedArray< 2, T > &r) |
Positive turn: return 1. No turn: return 0. Negative turn: return -1. | |
template<typename T> | |
T | computePseudoAngle (const ads::FixedArray< 2, T > &vec) |
Return the pseudo-angle between vec and the x axis. | |
template<int N, typename T> | |
T | computeAngle (const ads::FixedArray< N, T > &a, const ads::FixedArray< N, T > &b) |
Return the angle between the two vectors. | |
template<typename T> | |
void | rotatePiOver2 (ads::FixedArray< 2, T > *p) |
Rotate the vector + pi / 2. | |
template<typename T> | |
void | rotateMinusPiOver2 (ads::FixedArray< 2, T > &p) |
Rotate the vector - pi / 2. | |
template<bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< 2, 1, A, T, V, IS > *mesh, const ISS_SD_ClosestPoint< ISS > &condition, int n) |
Apply the closest point boundary condition at a vertex. | |
template<bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< 2, 1, A, T, V, IS > *mesh, const ISS_SD_ClosestPointDirection< ISS > &condition, int n) |
Apply the closest point in the normal direction boundary condition at a vertex. | |
template<bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< 3, 2, A, T, V, IS > *mesh, const ISS_SD_ClosestPoint< ISS > &condition, int n) |
Apply the closest point boundary condition at a vertex. | |
template<bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< 3, 2, A, T, V, IS > *mesh, const ISS_SD_ClosestPointDirection< ISS > &condition, int n) |
Apply the closest point in the normal direction boundary condition at a vertex. | |
template<int N, bool A, typename T, typename V, typename IS, class UnaryFunction> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const UnaryFunction &condition, int n) |
Apply the condition at a vertex. | |
template<int N, bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const ISS_SD_ClosestPoint< ISS > &condition, int n) |
Apply the closest point boundary condition at a vertex. | |
template<int N, bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const ISS_SD_CloserPoint< ISS > &condition, int n) |
Apply the closer point boundary condition at a vertex. | |
template<int N, bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const ISS_SD_ClosestPointDirection< ISS > &condition, int n) |
Apply the closest point in the normal direction boundary condition at a vertex. | |
template<int N, bool A, typename T, typename V, typename IS, class ISS> | |
void | applyBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const ISS_SD_CloserPointDirection< ISS > &condition, int n) |
Apply the closer point in the normal direction boundary condition at a vertex. | |
template<int M, typename T, typename VertRAIter, typename ISInIter, typename OutputIterator> | |
void | computeMeanRatio (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, OutputIterator output) |
Calculate the mean ratio function for each simplex in the mesh. | |
template<int M, typename T, typename SimpInIter, typename OutputIterator> | |
void | computeMeanRatio (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, OutputIterator output) |
Calculate the mean ratio function for each simplex in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter, typename OutputIterator> | |
void | computeModifiedMeanRatio (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, OutputIterator output) |
Calculate the modified mean ratio function for each simplex in the mesh. | |
template<int M, typename T, typename SimpInIter, typename OutputIterator> | |
void | computeModifiedMeanRatio (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, OutputIterator output) |
Calculate the modified mean ratio function for each simplex in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter, typename OutputIterator> | |
void | computeConditionNumber (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, OutputIterator output) |
Calculate the condition number function for each simplex in the mesh. | |
template<int M, typename T, typename SimpInIter, typename OutputIterator> | |
void | computeConditionNumber (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, OutputIterator output) |
Calculate the condition number function for each simplex in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter, typename OutputIterator> | |
void | computeModifiedConditionNumber (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, OutputIterator output) |
Calculate the modified condition number function for each simplex in the mesh. | |
template<int M, typename T, typename SimpInIter, typename OutputIterator> | |
void | computeModifiedConditionNumber (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, OutputIterator output) |
Calculate the modified condition number function for each simplex in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter, typename OutputIterator> | |
void | computeContent (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, OutputIterator output) |
Calculate the content for each simplex in the mesh. | |
template<int M, typename T, typename SimpInIter, typename OutputIterator> | |
void | computeContent (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, OutputIterator output) |
Calculate the content for each simplex in the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS> | |
IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Number | computeSignedDistance (const IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS > &mesh, const ads::Array< 1, typename IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Number > &squaredHalfLengths, const typename IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Vertex &point, typename IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Vertex *closestPoint) |
Compute the signed distance to the mesh and closest point on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS> | |
IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Number | computeSignedDistance (const IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS > &mesh, const typename IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Vertex &point, typename IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Vertex *closestPoint) |
Compute the signed distance to the mesh and closest point on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS> | |
IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Number | computeSignedDistance (const IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS > &mesh, const typename IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS >::Vertex &point) |
Compute the signed distance to the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS, typename InputIterator, typename NumberOutputIterator, typename PointOutputIterator> | |
void | computeSignedDistance (const IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS > &mesh, InputIterator pointsBeginning, InputIterator pointsEnd, NumberOutputIterator distances, PointOutputIterator closestPoints) |
Compute the signed distances to the mesh and closest points on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS, typename InputIterator, typename NumberOutputIterator> | |
void | computeSignedDistance (const IndSimpSetIncAdj< 2, 1, _A, _T, _V, _IS > &mesh, InputIterator pointsBeginning, InputIterator pointsEnd, NumberOutputIterator distances) |
Compute the signed distances to the mesh and closest points on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS> | |
IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Number | computeSignedDistance (const IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS > &mesh, const ads::Array< 1, typename IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Number > &squaredLongestEdgeLengths, const typename IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Vertex &point, typename IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Vertex *closestPoint) |
Compute the signed distance to the mesh and closest point on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS> | |
IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Number | computeSignedDistance (const IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS > &mesh, const typename IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Vertex &point, typename IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Vertex *closestPoint) |
Compute the signed distance to the mesh and closest point on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS> | |
IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Number | computeSignedDistance (const IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS > &mesh, const typename IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS >::Vertex &point) |
Compute the signed distance to the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS, typename InputIterator, typename NumberOutputIterator, typename PointOutputIterator> | |
void | computeSignedDistance (const IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS > &mesh, InputIterator pointsBeginning, InputIterator pointsEnd, NumberOutputIterator distances, PointOutputIterator closestPoints) |
Compute the signed distances to the mesh and closest points on the mesh. | |
template<bool _A, typename _T, typename _V, typename _IS, typename InputIterator, typename NumberOutputIterator> | |
void | computeSignedDistance (const IndSimpSetIncAdj< 3, 2, _A, _T, _V, _IS > &mesh, InputIterator pointsBeginning, InputIterator pointsEnd, NumberOutputIterator distances) |
Compute the signed distances to the mesh and closest points on the mesh. | |
template<int N, typename PtForIter, typename PtOutIter, typename IntOutIter, typename T> | |
void | buildDistinctPoints (PtForIter pointsBeginning, PtForIter pointsEnd, PtOutIter distinctPointsOutput, IntOutIter indicesOutput, const T minDistance) |
From a set of points, generate an indexed set of distinct points. | |
template<int N, typename PtForIter, typename PtOutIter, typename IntOutIter> | |
void | buildDistinctPoints (PtForIter pointsBeginning, PtForIter pointsEnd, PtOutIter distinctPoints, IntOutIter indices) |
From a set of points, generate an indexed set of distinct points. | |
template<int N, int M, bool A, typename T, typename V, typename IS> | |
void | removeDuplicateVertices (IndSimpSet< N, M, A, T, V, IS > *x, T minDistance) |
Remove duplicate vertices. | |
template<int N, int M, bool A, typename T, typename V, typename IS> | |
void | removeDuplicateVertices (IndSimpSet< N, M, A, T, V, IS > *x) |
Remove duplicate vertices. | |
template<int N, int M, typename VertForIter, typename ISForIter> | |
void | writeIssAscii (std::ostream &out, VertForIter verticesBeginning, VertForIter verticesEnd, ISForIter indexedSimplicesBeginning, ISForIter indexedSimplicesEnd) |
Write an indexed simplex set in ascii format. | |
template<int N, int M, typename VertForIter, typename ISForIter> | |
void | writeIssBinary (std::ostream &out, VertForIter verticesBeginning, VertForIter verticesEnd, ISForIter indexedSimplicesBeginning, ISForIter indexedSimplicesEnd) |
Write an indexed simplex set in binary format. | |
template<int N, int M, typename VertForIter, typename ISForIter, typename ContainerIter, typename StringIter> | |
void | writeIssAndCellDataVtkXml (std::ostream &out, VertForIter verticesBeginning, VertForIter verticesEnd, ISForIter indexedSimplicesBeginning, ISForIter indexedSimplicesEnd, ContainerIter cellDataContainersBeginning, ContainerIter cellDataContainersEnd, StringIter dataNamesBeginning, StringIter dataNamesEnd) |
Write in VTK XML unstructured grid format with a cell field. | |
template<int N, int M, typename VertForIter, typename ISForIter> | |
void | writeIssVtkXml (std::ostream &out, VertForIter verticesBeginning, VertForIter verticesEnd, ISForIter indexedSimplicesBeginning, ISForIter indexedSimplicesEnd) |
Write in VTK XML unstructured grid format. | |
template<int N, int M, typename VertForIter, typename ISForIter> | |
void | writeIssVtkLegacy (std::ostream &out, VertForIter verticesBeginning, VertForIter verticesEnd, ISForIter indexedSimplicesBeginning, ISForIter indexedSimplicesEnd, std::string title="") |
Write in legacy VTK unstructured grid format. | |
template<bool A, typename T, typename V, typename IS> | |
IndSimpSetIncAdj< 2, 1, A, T, V, IS >::Vertex | computeVertexNormal (const IndSimpSetIncAdj< 2, 1, A, T, V, IS > &mesh, int n) |
Return the outward normal at the specified vertex. | |
template<bool A, typename T, typename V, typename IS> | |
void | computeVertexNormal (const IndSimpSetIncAdj< 2, 1, A, T, V, IS > &mesh, int n, typename IndSimpSetIncAdj< 2, 1, A, T, V, IS >::Vertex *normal) |
Compute the outward normal at the specified vertex. | |
template<bool A, typename T, typename V, typename IS> | |
IndSimpSetIncAdj< 2, 2, A, T, V, IS >::Vertex | computeVertexNormal (const IndSimpSetIncAdj< 2, 2, A, T, V, IS > &mesh, int n) |
Return the outward normal at the specified boundary vertex. | |
template<bool A, typename T, typename V, typename IS> | |
void | computeVertexNormal (const IndSimpSetIncAdj< 2, 2, A, T, V, IS > &mesh, int n, typename IndSimpSetIncAdj< 2, 2, A, T, V, IS >::Vertex *normal) |
Compute the outward normal at the specified boundary vertex. | |
template<bool A, typename T, typename V, typename IS> | |
IndSimpSetIncAdj< 3, 2, A, T, V, IS >::Vertex | computeVertexNormal (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, int n) |
Return the outward normal at the specified vertex. | |
template<bool A, typename T, typename V, typename IS> | |
void | computeVertexNormal (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, int n, typename IndSimpSetIncAdj< 3, 2, A, T, V, IS >::Vertex *normal) |
Compute the outward normal at the specified vertex. | |
template<bool A, typename T, typename V, typename IS> | |
IndSimpSetIncAdj< 3, 3, A, T, V, IS >::Vertex | computeVertexNormal (const IndSimpSetIncAdj< 3, 3, A, T, V, IS > &mesh, int n) |
Return the outward normal at the specified boundary vertex. | |
template<bool A, typename T, typename V, typename IS> | |
void | computeVertexNormal (const IndSimpSetIncAdj< 3, 3, A, T, V, IS > &mesh, int n, typename IndSimpSetIncAdj< 3, 3, A, T, V, IS >::Vertex *normal) |
Compute the outward normal at the specified boundary vertex. | |
template<bool A, typename T, typename V, typename IS> | |
void | computeSimplexNormal (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, int simplexIndex, V *simplexNormal) |
Compute the outward normal for the specified simplex (triangle face). | |
template<bool A, typename T, typename V, typename IS, bool AA> | |
void | computeSimplexNormals (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, ads::Array< 1, V, AA > *simplexNormals) |
Compute the outward normals for the simplices (triangle faces). | |
template<bool A, typename T, typename V, typename IS, bool AA> | |
void | computeSimplexNormals (const IndSimpSetIncAdj< 2, 1, A, T, V, IS > &mesh, ads::Array< 1, V, AA > *simplexNormals) |
Compute the outward normals for the simplices (line segments). | |
template<bool A, typename T, typename V, typename IS, bool AA> | |
void | computeVertexNormals (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, const ads::Array< 1, V, AA > &simplexNormals, ads::Array< 1, V, AA > *vertexNormals) |
Compute the outward normals for the vertices. | |
template<bool A, typename T, typename V, typename IS, bool A1, bool A2> | |
void | computeSimplexAndVertexNormals (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, ads::Array< 1, V, A1 > *simplexNormals, ads::Array< 1, V, A2 > *vertexNormals) |
Compute the outward normals for the simplices and vertices. | |
template<int N, bool A, typename T, typename V, typename IS> | |
T | computeCosineAngle (const IndSimpSetIncAdj< N, 1, A, T, V, IS > &mesh, int vertexIndex) |
Return the cosine of the interior angle at the specified vertex. | |
template<bool A, typename T, typename V, typename IS> | |
T | computeCosineAngle (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, const typename IndSimpSetIncAdj< 3, 2, A, T, V, IS >::Face &face) |
Return the cosine of the interior angle at the specified 1-face. | |
template<bool A, typename T, typename V, typename IS> | |
T | computeCosineBoundaryAngle (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, int vertexIndex) |
Return the cosine of the interior angle at the specified boundary vertex. | |
template<bool A, typename T, typename V, typename IS> | |
T | computeAngle (const IndSimpSetIncAdj< 3, 2, A, T, V, IS > &mesh, int n) |
Return the solid interior angle at the specified vertex. | |
template<bool A, typename T, typename V, typename IS, typename OutputIterator> | |
void | projectAndGetSimplices (const IndSimpSet< 2, 1, A, T, V, IS > &mesh, OutputIterator simplices) |
Project the line segments to 1-D and collect them. | |
template<bool A, typename T, typename V, typename IS, typename OutputIterator> | |
void | projectAndGetSimplices (const IndSimpSet< 3, 2, A, T, V, IS > &mesh, OutputIterator simplices) |
Project the triangle simplices to 2-D and collect them. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS> | |
void | geometricOptimizeInterior (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, int numSweeps=1) |
Optimize the position of the interior vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimizeInterior (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, int numSweeps=1) |
Make numSweeps optimization sweeps over the given interior vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS> | |
void | geometricOptimizeInteriorUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const int numSweeps=1) |
Optimize the position of the interior vertices. | |
template<int N, bool A, typename T, typename V, typename IS> | |
void | geometricOptimizeInteriorUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const int numSweeps=1) |
Optimize the position of the interior vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeBoundary (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, int numSweeps=1) |
Optimize the position of all boundary vertices. | |
template<template< int, typename > class QF, bool A, typename T, typename V, typename IS, typename IntForIter, int SD> | |
void | geometricOptimizeBoundary (IndSimpSetIncAdj< 2, 2, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, PointsOnManifold< 2, 1, SD, T > *boundaryManifold, int numSweeps=1) |
Make numSweeps optimization sweeps over the given boundary vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeBoundaryUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of all boundary vertices. | |
template<int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeBoundaryUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of all boundary vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimize (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeWithBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeWithBoundaryConditionUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS, int SD> | |
void | geometricOptimizeWithBoundaryConditionUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, class BoundaryCondition> | |
void | geometricOptimizeWithCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const BoundaryCondition &condition, int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS, class BoundaryCondition> | |
void | geometricOptimizeWithConditionUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const BoundaryCondition &condition, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS, class BoundaryCondition> | |
void | geometricOptimizeWithConditionUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const BoundaryCondition &condition, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS> | |
void | geometricOptimize (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS> | |
void | geometricOptimizeUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<int N, bool A, typename T, typename V, typename IS> | |
void | geometricOptimizeUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, const int numSweeps=1) |
Optimize the position of all vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, typename IntForIter, int SD> | |
void | geometricOptimizeWithBoundaryCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, int numSweeps=1) |
Make numSweeps optimization sweeps over the given vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter, int SD> | |
void | geometricOptimizeWithBoundaryConditionUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of a set of vertices. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter, int SD> | |
void | geometricOptimizeWithBoundaryConditionUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, PointsOnManifold< N, N-1, SD, T > *boundaryManifold, const int numSweeps=1) |
Optimize the position of a set of vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, typename IntForIter, class BoundaryCondition> | |
void | geometricOptimizeWithCondition (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const BoundaryCondition &condition, int numSweeps=1) |
Make numSweeps optimization sweeps over the given vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter, class BoundaryCondition> | |
void | geometricOptimizeWithConditionUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const BoundaryCondition &condition, int numSweeps=1) |
Optimize the position of a set of vertices. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter, class BoundaryCondition> | |
void | geometricOptimizeWithConditionUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const BoundaryCondition &condition, const int numSweeps=1) |
Optimize the position of a set of vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimize (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const int numSweeps=1) |
Make numSweeps optimization sweeps over the given vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimizeUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const int numSweeps=1) |
Optimize the position of a set of vertices. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimizeUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const int numSweeps=1) |
Optimize the position of a set of vertices. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, typename IntForIter, class BoundaryCondition> | |
void | geometricOptimizeWithConditionConstrained (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const BoundaryCondition &condition, const T maxConstraintError, int numSweeps=1) |
Make numSweeps constrained optimization sweeps over the given vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter, class BoundaryCondition> | |
void | geometricOptimizeWithConditionConstrainedUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const BoundaryCondition &condition, const T maxConstraintError, int numSweeps=1) |
Optimize the position of a set of vertices subject to a constant content constraint. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter, class BoundaryCondition> | |
void | geometricOptimizeWithConditionConstrainedUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const BoundaryCondition &condition, const T maxConstraintError, const int numSweeps=1) |
Optimize the position of a set of vertices subject to a constant content constraint. | |
template<template< int, typename > class QF, int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimizeConstrained (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const T maxConstraintError, const int numSweeps=1) |
Make numSweeps constrained optimization sweeps over the given vertices with the quality function given as a template parameter. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimizeConstrainedUsingMeanRatio (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const T maxConstraintError, const int numSweeps=1) |
Optimize the position of a set of vertices subject to a constant content constraint. | |
template<int N, bool A, typename T, typename V, typename IS, typename IntForIter> | |
void | geometricOptimizeConstrainedUsingConditionNumber (IndSimpSetIncAdj< N, N, A, T, V, IS > *mesh, IntForIter begin, IntForIter end, const T maxConstraintError, const int numSweeps=1) |
Optimize the position of a set of vertices subject to a constant content constraint. | |
template<int M, typename SimpInIter, typename T> | |
void | computeEdgeLengthStatistics (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, T *minimumLength, T *maximumLength) |
Compute edge length statistics. | |
template<int M, typename VertRAIter, typename ISInIter, typename T> | |
void | computeEdgeLengthStatistics (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, T *minimumLength, T *maximumLength) |
Compute edge length statistics. | |
template<int N, bool A, typename T, typename V, typename IS> | |
void | computeEdgeLengthStatistics (const IndSimpSetIncAdj< N, 2, A, T, V, IS > &mesh, T *minimumLength, T *maximumLength, T *meanLength) |
Compute edge length statistics. | |
template<int M, typename T, typename SimpInIter> | |
T | computeMinimumEdgeLength (SimpInIter simplicesBeginning, SimpInIter simplicesEnd) |
Return the minimum edge length. | |
template<int M, typename T, typename SimpInIter> | |
T | computeMaximumEdgeLength (SimpInIter simplicesBeginning, SimpInIter simplicesEnd) |
Return the maximum edge length. | |
template<int M, typename T, typename VertRAIter, typename ISInIter> | |
T | computeContent (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd) |
Return the total content of the simplices in the mesh. | |
template<int M, typename T, typename SimpInIter> | |
T | computeContent (SimpInIter simplicesBeginning, SimpInIter simplicesEnd) |
Return the total content of the simplices in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter> | |
void | computeContentStatistics (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, T *minimumContent, T *maximumContent, T *meanContent) |
Calculate content (hypervolume) statistics for the simplices in the mesh. | |
template<int M, typename T, typename SimpInIter> | |
void | computeContentStatistics (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, T *minimumContent, T *maximumContent, T *meanContent) |
Calculate content (hypervolume) statistics for the simplices in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter> | |
void | computeDeterminantStatistics (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, T *minimumDeterminant, T *maximumDeterminant, T *meanDeterminant) |
Calculate determinant statistics for the simplices in the mesh. | |
template<int M, typename T, typename SimpInIter> | |
void | computeDeterminantStatistics (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, T *minimumDeterminant, T *maximumDeterminant, T *meanDeterminant) |
Calculate determinant statistics for the simplices in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter> | |
void | computeModifiedMeanRatioStatistics (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, T *minimumModMeanRatio, T *maximumModMeanRatio, T *meanModMeanRatio) |
Calculate modified mean ratio function statistics for the simplices in the mesh. | |
template<int M, typename T, typename SimpInIter> | |
void | computeModifiedMeanRatioStatistics (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, T *minimumModMeanRatio, T *maximumModMeanRatio, T *meanModMeanRatio) |
Calculate modified mean ratio function statistics for the simplices in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter> | |
void | computeModifiedConditionNumberStatistics (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, T *minimumModCondNum, T *maximumModCondNum, T *meanModCondNum) |
Calculate modified condition number function statistics for the simplices in the mesh. | |
template<int M, typename T, typename SimpInIter> | |
void | computeModifiedConditionNumberStatistics (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, T *minimumModCondNum, T *maximumModCondNum, T *meanModCondNum) |
Calculate modified condition number function statistics for the simplices in the mesh. | |
template<int M, typename T, typename VertRAIter, typename ISInIter> | |
void | computeQualityStatistics (VertRAIter vertices, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd, 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 M, typename T, typename SimpInIter> | |
void | computeQualityStatistics (SimpInIter simplicesBeginning, SimpInIter simplicesEnd, 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, typename T, typename VertRAIter, typename ISInIter> | |
void | printQualityStatistics (std::ostream &out, VertRAIter verticesBeginning, VertRAIter verticesEnd, ISInIter indexedSimplicesBeginning, ISInIter indexedSimplicesEnd) |
Print quality statistics for the simplices in the mesh. | |
template<int N, int M, typename T, typename SimpInIter> | |
void | printQualityStatistics (std::ostream &out, SimpInIter simplicesBeginning, SimpInIter simplicesEnd) |
Print quality statistics for the simplices in the mesh. | |
template<typename IntForIter, typename IntOutIter> | |
void | determineComplementSetOfIndices (const int upperBound, IntForIter beginning, IntForIter end, IntOutIter indexIterator) |
Make the complement set of indices. | |
template<int M> | |
std::ostream & | operator<< (std::ostream &out, const SimplexAdj< M > &x) |
Write the simplex adjacencies. | |
template<int M> | |
std::ostream & | operator<< (std::ostream &out, const VertexSimplexInc< M > &x) |
Write the vertex-simplex incidences. | |
template<int N, int M, typename T> | |
SimplexDeterminant< N, M, T > | simplexDeterminant () |
Convenience function for constructing a SimplexDeterminant . | |
template<int N, int M, typename T> | |
SimplexContent< N, M, T > | simplexContent () |
Convenience function for constructing a SimplexContent . | |
template<int N, int M, typename T> | |
SimplexMinimumEdgeLength< N, M, T > | simplexMinimumEdgeLength () |
Convenience function for constructing a SimplexMinimumEdgeLength . | |
template<int N, int M, typename T> | |
SimplexMaximumEdgeLength< N, M, T > | simplexMaximumEdgeLength () |
Convenience function for constructing a SimplexMaximumEdgeLength . | |
template<typename T> | |
void | project (const Simplex< 1, ads::FixedArray< 2, T >, T > &s2, const ads::FixedArray< 2, T > &x2, Simplex< 1, ads::FixedArray< 1, T >, T > *s1, ads::FixedArray< 1, T > *x1) |
Project the simplex and the point in 2-D to 1-D. | |
template<typename T> | |
void | project (const Simplex< 1, ads::FixedArray< 2, T >, T > &s2, const ads::FixedArray< 2, T > &x2, Simplex< 1, ads::FixedArray< 1, T >, T > *s1, ads::FixedArray< 1, T > *x1, ads::FixedArray< 1, T > *y1) |
Project the simplex and the point in 2-D to 1-D. | |
template<typename T> | |
void | project (const Simplex< 2, ads::FixedArray< 3, T >, T > &s3, const ads::FixedArray< 3, T > &x3, Simplex< 2, ads::FixedArray< 2, T >, T > *s2, ads::FixedArray< 2, T > *x2) |
Project the simplex and the point in 3-D to 2-D. | |
template<typename T> | |
void | project (const Simplex< 2, ads::FixedArray< 3, T >, T > &s3, const ads::FixedArray< 3, T > &x3, Simplex< 2, ads::FixedArray< 2, T >, T > *s2, ads::FixedArray< 2, T > *x2, ads::FixedArray< 1, T > *z1) |
Project the simplex and the point in 3-D to 2-D. | |
template<typename SMR, typename CellIteratorOutputIterator> | |
void | getIncidentCells (const typename SMR::CellIterator cell, int i, int j, CellIteratorOutputIterator out) |
Get the incident cells of the edge. | |
template<class CellIterator, class NodeIterator> | |
int | getFaceIndex (const CellIterator &cell, const NodeIterator &a, const NodeIterator &b) |
For a 2-simplex cell, a pair of nodes defines a 1-face. Return the index of this 1-face. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename ISSV, typename ISSIS> | |
void | buildIndSimpSetFromSimpMeshRed (const SimpMeshRed< N, M, T, Node, Cell, Cont > &smr, IndSimpSet< N, M, true, T, ISSV, ISSIS > *iss) |
Make an indexed simplex set from the mesh. | |
template<class QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int SD, class MinEdgeLength> | |
int | coarsen (SimpMeshRed< 2, 2, T, Node, Cell, Cont > *mesh, const MinEdgeLength &f, T minimumAllowedQuality, T qualityFactor, PointsOnManifold< 2, 1, SD, T > *manifold, int maxSweeps=0) |
Coarsen the mesh using the minimum edge length function. | |
template<class QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class MinEdgeLength> | |
int | coarsen (SimpMeshRed< 2, 2, T, Node, Cell, Cont > *mesh, const MinEdgeLength &f, T minimumAllowedQuality, T qualityFactor, T cornerDeviation=-1, int maxSweeps=0) |
Coarsen the mesh using the min edge length function. | |
template<class QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int SD, class MinEdgeLength> | |
int | coarsen (SimpMeshRed< 3, 2, T, Node, Cell, Cont > *mesh, const MinEdgeLength &f, T minimumAllowedQuality, T qualityFactor, PointsOnManifold< 3, 2, SD, T > *manifold, int maxSweeps=0) |
Coarsen the mesh using the min edge length function. | |
template<class QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class MinEdgeLength> | |
int | coarsen (SimpMeshRed< 3, 2, T, Node, Cell, Cont > *mesh, const MinEdgeLength &f, T minimumAllowedQuality, T qualityFactor, T maxDihedralAngleDeviation=-1, T maxSolidAngleDeviation=-1, T maxBoundaryAngleDeviation=-1, int maxSweeps=0) |
Coarsen the mesh using the min edge length function. | |
template<class QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int SD, class MinEdgeLength> | |
int | coarsen (SimpMeshRed< 3, 3, T, Node, Cell, Cont > *mesh, const MinEdgeLength &f, T minimumAllowedQuality, T qualityFactor, PointsOnManifold< 3, 2, SD, T > *manifold, int maxSweeps=0) |
Coarsen the mesh using the min edge length function. | |
template<class QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class MinEdgeLength> | |
int | coarsen (SimpMeshRed< 3, 3, T, Node, Cell, Cont > *mesh, const MinEdgeLength &f, T minimumAllowedQuality, T qualityFactor, T maxDihedralAngleDeviation=-1, T maxSolidAngleDeviation=-1, T maxBoundaryAngleDeviation=-1, int maxSweeps=0) |
Coarsen the mesh using the min edge length function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename IntInIter> | |
int | coarsen (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, IntInIter begin, IntInIter end) |
Collapse edges to remove the specified cells. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | writeAscii (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &x) |
Write a mesh as an indexed simplex set in ascii format. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | print (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &x) |
Print detailed information about the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | writeBinary (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &x) |
Write a mesh as an indexed simplex set in binary format. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | readAscii (std::istream &in, SimpMeshRed< N, M, T, Node, Cell, Cont > *x) |
Read a mesh as an indexed simplex set in ascii format. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | readBinary (std::istream &in, SimpMeshRed< N, M, T, Node, Cell, Cont > *x) |
Read an indexed simplex set in binary format. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | writeVtkXml (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &x) |
Write in VTK XML unstructured grid format. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | writeVtkLegacy (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &x, std::string title="") |
Write in legacy VTK unstructured grid format. | |
template<class SMR> | |
SMR::Number | computeIncidentCellsAngle (typename SMR::NodeConstIterator node) |
Return the solid angle accumulated from the incident cells. | |
template<class SMR> | |
SMR::Number | computeDihedralAngle (typename SMR::ConstEdge edge) |
Compute the dihedral angle at the specified edge. | |
template<class SMR> | |
SMR::Number | computeCosineAngle (typename SMR::FaceConstIterator face) |
Return the cosine of the interior angle at the specified 1-face. | |
template<class SMR> | |
void | computeNodeNormal (typename SMR::NodeConstIterator node, typename SMR::Vertex *normal) |
Compute the normal to the surface. | |
template<class SMR> | |
SMR::Vertex | computeNodeNormal (typename SMR::NodeConstIterator node) |
Return the normal to the surface. | |
template<class SMR> | |
void | computeCellNormal (typename SMR::CellConstIterator cell, typename SMR::Vertex *normal) |
Compute the cell normal. | |
template<class SMR> | |
SMR::Vertex | computeCellNormal (typename SMR::CellConstIterator cell) |
Return the normal to the surface. | |
template<class SMR> | |
void | computeFaceNormal (typename SMR::CellConstIterator cell, int i, typename SMR::Vertex *x) |
Compute the face normal. | |
template<typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename OutputIterator> | |
void | projectAndGetSimplices (const SimpMeshRed< 2, 1, T, Node, Cell, Cont > &mesh, OutputIterator simplices) |
Project the line segments to 1-D and collect them. | |
template<typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename OutputIterator> | |
void | projectAndGetSimplices (const SimpMeshRed< 3, 2, T, Node, Cell, Cont > &mesh, OutputIterator simplices) |
Project the triangle simplices to 2-D and collect them. | |
template<int N, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
int | incidenceOptimize (SimpMeshRed< N, 2, T, Node, Cell, Cont > *mesh, int norm, int numSweeps=0) |
Modify the topology to optimize the cell-node incidences. | |
template<int N, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
SimpMeshRed< N, 1, T, Node, Cell, Cont >::CellIterator | insertCell (SimpMeshRed< N, 1, T, Node, Cell, Cont > *mesh, const typename SimpMeshRed< N, 1, T, Node, Cell, Cont >::NodeIterator n0, const typename SimpMeshRed< N, 1, T, Node, Cell, Cont >::NodeIterator n1, const typename SimpMeshRed< N, 1, T, Node, Cell, Cont >::CellIterator c0=0, const typename SimpMeshRed< N, 1, T, Node, Cell, Cont >::CellIterator c1=0) |
Insert the specified cell into the 1-D mesh. | |
template<int N, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
SimpMeshRed< N, 2, T, Node, Cell, Cont >::CellIterator | insertCell (SimpMeshRed< N, 2, T, Node, Cell, Cont > *mesh, const typename SimpMeshRed< N, 2, T, Node, Cell, Cont >::NodeIterator n0, const typename SimpMeshRed< N, 2, T, Node, Cell, Cont >::NodeIterator n1, const typename SimpMeshRed< N, 2, T, Node, Cell, Cont >::NodeIterator n2, const typename SimpMeshRed< N, 2, T, Node, Cell, Cont >::CellIterator c0=0, const typename SimpMeshRed< N, 2, T, Node, Cell, Cont >::CellIterator c1=0, const typename SimpMeshRed< N, 2, T, Node, Cell, Cont >::CellIterator c2=0) |
Insert the specified cell into the 2-D mesh. | |
template<int N, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
SimpMeshRed< N, 3, T, Node, Cell, Cont >::CellIterator | insertCell (SimpMeshRed< N, 3, T, Node, Cell, Cont > *mesh, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::NodeIterator n0, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::NodeIterator n1, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::NodeIterator n2, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::NodeIterator n3, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::CellIterator c0=0, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::CellIterator c1=0, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::CellIterator c2=0, const typename SimpMeshRed< N, 3, T, Node, Cell, Cont >::CellIterator c3=0) |
Insert the specified cell into the 3-D mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | orientPositive (SimpMeshRed< N, M, T, Node, Cell, Cont > *x) |
Orient each simplex so it has non-negative volume. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | eraseUnusedNodes (SimpMeshRed< N, M, T, Node, Cell, Cont > *x) |
Erase the nodes that do not have an incident cells. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | eraseCellsWithLowAdjacencies (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, int minimumAdjacencies) |
Erase cells until there are none with minimum adjacencies less than specified. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | renumberIdentifiers (SimpMeshRed< N, M, T, Node, Cell, Cont > *x) |
Re-number the node and cell identifiers so they start at 0 and are contiguous. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | countAdjacencies (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, ads::FixedArray< M+2, int > *counts) |
Calculate the adjacency counts for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
T | computeContent (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh) |
Return the total content of the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | computeContentStatistics (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, T *minContent, T *maxContent, T *meanContent) |
Calculate content (hypervolume) statistics for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | computeEdgeLengthStatistics (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, T *minLength, T *maxLength, T *meanLength) |
Calculate edge length statistics. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | printEdgeLengthStatistics (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh) |
Print edge length statistics. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | computeDeterminantStatistics (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, T *minDeterminant, T *maxDeterminant, T *meanDeterminant) |
Calculate determinant statistics for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | computeModifiedMeanRatioStatistics (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, T *minModifiedMeanRatio, T *maxModifiedMeanRatio, T *meanModifiedMeanRatio) |
Calculate modified mean ratio function statistics for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | computeModifiedConditionNumberStatistics (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, T *minModifiedConditionNumber, T *maxModifiedConditionNumber, T *meanModifiedConditionNumber) |
Calculate modified condition number function statistics for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | computeQualityStatistics (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, T *minContent, T *maxContent, T *meanContent, T *minDeterminant, T *maxDeterminant, T *meanDeterminant, T *minModifiedMeanRatio, T *maxModifiedMeanRatio, T *meanModifiedMeanRatio, T *minModifiedConditionNumber, T *maxModifiedConditionNumber, T *meanModifiedConditionNumber) |
Calculate quality statistics for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | printQualityStatistics (std::ostream &out, const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh) |
Print quality statistics for the simplices in the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int MM, int SD, class MaxEdgeLength> | |
int | refine (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, PointsOnManifold< N, MM, SD, T > *manifold, const MaxEdgeLength &f) |
Refine the mesh using the maximum edge length function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class MaxEdgeLength> | |
int | refine (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, const MaxEdgeLength &f) |
Refine the mesh using the maximum edge length function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int MM, int SD, typename IntInputIterator> | |
int | refine (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, PointsOnManifold< N, MM, SD, T > *manifold, IntInputIterator begin, IntInputIterator end) |
Refine the mesh by splitting the specified cells. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename IntInputIterator> | |
int | refine (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, IntInputIterator begin, IntInputIterator end) |
Refine the mesh by splitting the specified cells. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int MM, int SD, typename IntInputIterator, class MaxEdgeLength> | |
int | refine (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, PointsOnManifold< N, MM, SD, T > *manifold, IntInputIterator begin, IntInputIterator end, const MaxEdgeLength &f) |
Refine the specified cells using the maximum edge length function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename IntInputIterator, class MaxEdgeLength> | |
int | refine (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, IntInputIterator begin, IntInputIterator end, const MaxEdgeLength &f) |
Refine the specified cells using the maximum edge length function. | |
template<typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class ISS> | |
int | refineBoundary (SimpMeshRed< 2, 2, T, Node, Cell, Cont > *x, const ISS &boundary, T maxAngle, T minEdgeLength, int maxSweeps=10) |
Refine the mesh to better fit the boundary. | |
template<typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class Distance, class ClosestPoint, class MaxAngle, class MinEdgeLength> | |
int | refineBoundary (SimpMeshRed< 2, 2, T, Node, Cell, Cont > *x, const Distance &distance, const ClosestPoint &closestPoint, const MaxAngle &maxAngle, const MinEdgeLength &minEdgeLength, int maxSweeps=10) |
Refine the mesh to better fit the boundary. | |
template<typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class MaxEdgeLength> | |
int | refineAdjust (SimpMeshRed< 2, 2, T, Node, Cell, Cont > *mesh, const MaxEdgeLength &f) |
Refine and adjust the mesh using the maximum edge length function. | |
template<typename NodeInIter, class LSF, typename OutIter> | |
void | determineNodesOutside (NodeInIter begin, NodeInIter end, const LSF &f, OutIter iter) |
Get the nodes that are outside the object. | |
template<typename CellInIter, class LSF, typename OutIter> | |
void | determineCellsOutside (CellInIter begin, CellInIter end, const LSF &f, OutIter iter) |
Get the cells whose centroids are outside the object. | |
template<typename NodeInIter, typename OutIter> | |
void | getNodes (NodeInIter begin, NodeInIter end, OutIter iter) |
Get the node iterators for the all of the nodes in the mesh. | |
template<typename NodeInIter, typename OutIter> | |
void | determineInteriorNodes (NodeInIter begin, NodeInIter end, OutIter iter) |
Get the node iterators for the interior nodes. | |
template<typename NodeInIter, typename OutIter> | |
void | determineBoundaryNodes (NodeInIter begin, NodeInIter end, OutIter iter) |
Get the node iterators for the boundary nodes. | |
template<typename CellInIter, typename OutIter> | |
void | determineCellsWithRequiredAdjacencies (CellInIter begin, CellInIter end, int minimumRequiredAdjacencies, OutIter iter) |
Get the cell iterators with at least the specified number of adjacencies. | |
template<typename CellInIter, typename OutIter> | |
void | determineCellsWithLowAdjacencies (CellInIter begin, CellInIter end, const int minimumRequiredAdjacencies, OutIter iter) |
Get the cell iterators with adjacencies less than specified. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | determineNeighbors (SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator node, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIteratorSet *neighbors) |
Get the neighboring nodes of a node. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | determineBoundaryNeighbors (SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator node, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIteratorSet *neighbors) |
Get the neighboring boundary nodes of a node. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | determineNeighbors (SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator node, int radius, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIteratorSet *neighbors) |
Get all the nodes within the specified radius of the specified node. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
void | determineFacesOfIncidentCells (SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator node, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::FaceSet *faces) |
Get the faces of the incident cells. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, typename IntInIter> | |
void | convertIdentifiersToIterators (SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh, IntInIter begin, IntInIter end, typename SimpMeshRed< N, M, T, Node, Cell, Cont >::CellIteratorSet *cells) |
Build a set of cell iterators from a range of cell identifiers. | |
int | getNextNodeIndex (const int i, const int j) |
Get the next node index. | |
int | getPreviousNodeIndex (const int i, const int j) |
Get the previous node index. | |
template<typename SMR> | |
int | getNextNodeIndex (const typename SMR::CellConstIterator cell, const typename SMR::NodeConstIterator a, const typename SMR::NodeConstIterator b) |
Get the next node index. | |
template<typename SMR> | |
int | getPreviousNodeIndex (const typename SMR::CellConstIterator cell, const typename SMR::NodeConstIterator a, const typename SMR::NodeConstIterator b) |
Get the previous node index. | |
template<int N, int M, typename T, template< class > class Vertex, template< class > class Cell, template< class, class > class Container> | |
void | tile (const BBox< N, T > &domain, const T length, SimpMeshRed< N, M, T, Vertex, Cell, Container > *mesh) |
Tile the rectilinear region. | |
template<int N, int M, typename T, template< class > class Vertex, template< class > class Cell, template< class, class > class Container, class LSF> | |
void | tile (const BBox< N, T > &domain, const T length, const LSF &f, SimpMeshRed< N, M, T, Vertex, Cell, Container > *mesh) |
Tile the object. | |
template<class _QualityMetric, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int SD> | |
int | topologicalOptimize (SimpMeshRed< 3, 3, T, Node, Cell, Cont > *mesh, const PointsOnManifold< 3, 2, SD, T > *manifold, std::multiset< std::pair< int, int > > *edgeRemovalOperations=0, std::multiset< std::pair< int, int > > *faceRemovalOperations=0, int maximumSteps=std::numeric_limits< int >::max()) |
Use edge and face removal to optimize the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int MM, int SD> | |
int | topologicalOptimizeUsingMeanRatio (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, const PointsOnManifold< N, MM, SD, T > *manifold, std::multiset< std::pair< int, int > > *edgeRemovalOperations=0, std::multiset< std::pair< int, int > > *faceRemovalOperations=0, const int maximumSteps=std::numeric_limits< int >::max()) |
Use edge and face removal to optimize the mesh. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, int MM, int SD> | |
int | topologicalOptimizeUsingConditionNumber (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, const PointsOnManifold< N, MM, SD, T > *manifold, std::multiset< std::pair< int, int > > *edgeRemovalOperations=0, std::multiset< std::pair< int, int > > *faceRemovalOperations=0, const int maximumSteps=std::numeric_limits< int >::max()) |
Use edge and face removal to optimize the mesh. | |
template<class SMR> | |
bool | doNodesShareACell (typename SMR::NodeConstIterator x, typename SMR::NodeConstIterator y) |
Return true if the nodes are incident to a common cell. | |
template<typename SMR, typename NodeIterInIter, class UnaryFunction> | |
void | transformNodes (NodeIterInIter begin, NodeIterInIter end, const UnaryFunction &f) |
Transform each vertex in the range with the specified function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class UnaryFunction> | |
void | transform (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, const UnaryFunction &f) |
Transform each vertex in the mesh with the specified function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont, class UnaryFunction> | |
void | transformBoundary (SimpMeshRed< N, M, T, Node, Cell, Cont > *mesh, const UnaryFunction &f) |
Transform each boundary vertex in the mesh with the specified function. | |
template<int N, int M, typename T, template< class > class Node, template< class > class Cell, template< class, class > class Cont> | |
bool | isValid (const SimpMeshRed< N, M, T, Node, Cell, Cont > &mesh) |
Return true if the mesh is valid. |
T geom::computeUpperBoundOnSignedDistance | ( | const BBox< N, T > & | box, | |
const typename BBox< N, T >::Point & | x | |||
) | [inline] |
Return an upper bound on the signed distance from the point to the objects in the box.
Consider some objects contained in the bounding box: box
. (Specifically, the objects form an N-D manifold. The distance from the point x
to the manifold is signed; positive outside and negative inside.) This function returns an upper bound on the distance to the objects.
T geom::computeLowerBoundOnSignedDistance | ( | const BBox< N, T > & | box, | |
const typename BBox< N, T >::Point & | x | |||
) | [inline] |
Return an lower bound on the signed distance from the point to the objects in the box.
Consider some objects contained in the bounding box: box
. (Specifically, the objects form an N-D manifold. The distance from the point x
to the manifold is signed; positive outside and negative inside.) This function returns an lower bound on the distance to the objects.
void geom::project | ( | const Simplex< 1, ads::FixedArray< 2, T >, T > & | s2, | |
const ads::FixedArray< 2, T > & | x2, | |||
Simplex< 1, ads::FixedArray< 1, T >, T > * | s1, | |||
ads::FixedArray< 1, T > * | x1 | |||
) |
Project the simplex and the point in 2-D to 1-D.
The first point in the 2-D simplex will be mapped to the origin; the second point will be mapped to the positive x axis. The 2-D point will be mapped to the x-axis.
s2 | is the 1-simplex in 2-D. | |
x2 | is the 2-D point. | |
s1 | is the mapped simplex, a 1-simplex in 1-D. | |
x1 | is the mapped point, a 1-D point. |
void geom::project | ( | const Simplex< 1, ads::FixedArray< 2, T >, T > & | s2, | |
const ads::FixedArray< 2, T > & | x2, | |||
Simplex< 1, ads::FixedArray< 1, T >, T > * | s1, | |||
ads::FixedArray< 1, T > * | x1, | |||
ads::FixedArray< 1, T > * | y1 | |||
) |
Project the simplex and the point in 2-D to 1-D.
The first point in the 2-D simplex will be mapped to the origin; the second point will be mapped to the positive x axis. The 2-D point will be mapped to the x-axis.
s2 | is the 1-simplex in 2-D. | |
x2 | is the 2-D point. | |
s1 | is the mapped simplex, a 1-simplex in 1-D. | |
x1 | is the mapped point, a 1-D point. | |
y1 | is the normal offset of x2 from s2. |
void geom::project | ( | const Simplex< 2, ads::FixedArray< 3, T >, T > & | s3, | |
const ads::FixedArray< 3, T > & | x3, | |||
Simplex< 2, ads::FixedArray< 2, T >, T > * | s2, | |||
ads::FixedArray< 2, T > * | x2 | |||
) |
Project the simplex and the point in 3-D to 2-D.
The first point in the 3-D simplex will be mapped to the origin; the second point will be mapped to the positive x axis. The triangle will have the positive orientation in the 2-D plane. The 3-D point will be mapped to the xy-plane.
s3 | is the 2-simplex in 3-D. | |
x3 | is the 3-D point. | |
s2 | is the mapped simplex, a 2-simplex in 2-D. | |
x2 | is the mapped point, a 2-D point. |
void geom::project | ( | const Simplex< 2, ads::FixedArray< 3, T >, T > & | s3, | |
const ads::FixedArray< 3, T > & | x3, | |||
Simplex< 2, ads::FixedArray< 2, T >, T > * | s2, | |||
ads::FixedArray< 2, T > * | x2, | |||
ads::FixedArray< 1, T > * | z1 | |||
) |
Project the simplex and the point in 3-D to 2-D.
The first point in the 3-D simplex will be mapped to the origin; the second point will be mapped to the positive x axis. The triangle will have the positive orientation in the 2-D plane. The 3-D point will be mapped to the xy-plane.
s3 | is the 2-simplex in 3-D. | |
x3 | is the 3-D point. | |
s2 | is the mapped simplex, a 2-simplex in 2-D. | |
x2 | is the mapped point, a 2-D point. | |
z1 | is the normal offset of x3 from s3. |
void geom::buildIndSimpSetFromSimpMeshRed | ( | const SimpMeshRed< N, M, T, Node, Cell, Cont > & | smr, | |
IndSimpSet< N, M, true, T, ISSV, ISSIS > * | iss | |||
) |
int geom::coarsen | ( | SimpMeshRed< 2, 2, T, Node, Cell, Cont > * | mesh, | |
const MinEdgeLength & | f, | |||
T | minimumAllowedQuality, | |||
T | qualityFactor, | |||
PointsOnManifold< 2, 1, SD, T > * | manifold, | |||
int | maxSweeps = 0 | |||
) |
Coarsen the mesh using the minimum edge length function.
mesh | The simplicial mesh. | |
f | The minimum edge length functor. The algorithm will try to collapse edges below this threshold. | |
minimumAllowedQuality | A collapse is only allowed if the quality of the resulting elements is not less than this value. | |
qualityFactor | A collapse is only allowed if the quality of the resulting elements is not less than the initial quality times this value. | |
manifold | The manifold data structure. | |
maxSweeps | The maximum number of sweeps over the vertices. By default, there is no limit on the number of sweeps. |
A boundary edge may not be collapsed if both of its nodes are corner features. (Doing so would change the corner features.)
int geom::coarsen | ( | SimpMeshRed< 2, 2, T, Node, Cell, Cont > * | mesh, | |
const MinEdgeLength & | f, | |||
T | minimumAllowedQuality, | |||
T | qualityFactor, | |||
T | cornerDeviation = -1 , |
|||
int | maxSweeps = 0 | |||
) |
Coarsen the mesh using the min edge length function.
mesh | The simplicial mesh. | |
f | The minimum edge length functor. The algorithm will try to collapse edges below this threshold. | |
minimumAllowedQuality | A collapse is only allowed if the quality of the resulting elements is not less than this value. | |
qualityFactor | A collapse is only allowed if the quality of the resulting elements is not less than the initial quality times this value. | |
cornerDeviation | Any boundary node whose angle deviates from ![]() | |
maxSweeps | The maximum number of sweeps over the vertices. By default, there is no limit on the number of sweeps. |
int geom::coarsen | ( | SimpMeshRed< 3, 2, T, Node, Cell, Cont > * | mesh, | |
const MinEdgeLength & | f, | |||
T | minimumAllowedQuality, | |||
T | qualityFactor, | |||
PointsOnManifold< 3, 2, SD, T > * | manifold, | |||
int | maxSweeps = 0 | |||
) |
Coarsen the mesh using the min edge length function.
mesh | The simplicial mesh. | |
f | The minimum edge length functor. The algorithm will try to collapse edges below this threshold. | |
minimumAllowedQuality | A collapse is only allowed if the quality of the resulting elements is not less than this value. | |
qualityFactor | A collapse is only allowed if the quality of the resulting elements is not less than the initial quality times this value. | |
manifold | The manifold data structure. | |
maxSweeps | The maximum number of sweeps over the vertices. By default, there is no limit on the number of sweeps. |
int geom::coarsen | ( | SimpMeshRed< 3, 2, T, Node, Cell, Cont > * | mesh, | |
const MinEdgeLength & | f, | |||
T | minimumAllowedQuality, | |||
T | qualityFactor, | |||
T | maxDihedralAngleDeviation = -1 , |
|||
T | maxSolidAngleDeviation = -1 , |
|||
T | maxBoundaryAngleDeviation = -1 , |
|||
int | maxSweeps = 0 | |||
) |
Coarsen the mesh using the min edge length function.
mesh | The simplicial mesh. | |
f | The minimum edge length functor. The algorithm will try to collapse edges below this threshold. | |
minimumAllowedQuality | A collapse is only allowed if the quality of the resulting elements is not less than this value. | |
qualityFactor | A collapse is only allowed if the quality of the resulting elements is not less than the initial quality times this value. | |
maxDihedralAngleDeviation | The maximum dihedral angle deviation (from straight) for a surface feature. The rest are edge features. If not specified, all interior edges will be set as surface features. | |
maxSolidAngleDeviation | Solid angles that deviate more than this value (from ![]() | |
maxBoundaryAngleDeviation | If the angle deviation (from ![]() | |
maxSweeps | The maximum number of sweeps over the vertices. By default, there is no limit on the number of sweeps. |
int geom::coarsen | ( | SimpMeshRed< 3, 3, T, Node, Cell, Cont > * | mesh, | |
const MinEdgeLength & | f, | |||
T | minimumAllowedQuality, | |||
T | qualityFactor, | |||
PointsOnManifold< 3, 2, SD, T > * | manifold, | |||
int | maxSweeps = 0 | |||
) |
Coarsen the mesh using the min edge length function.
mesh | The simplicial mesh. | |
f | The minimum edge length functor. The algorithm will try to collapse edges below this threshold. | |
minimumAllowedQuality | A collapse is only allowed if the quality of the resulting elements is not less than this value. | |
qualityFactor | A collapse is only allowed if the quality of the resulting elements is not less than the initial quality times this value. | |
manifold | The manifold data structure. | |
maxSweeps | The maximum number of sweeps over the vertices. By default, there is no limit on the number of sweeps. |
int geom::coarsen | ( | SimpMeshRed< 3, 3, T, Node, Cell, Cont > * | mesh, | |
const MinEdgeLength & | f, | |||
T | minimumAllowedQuality, | |||
T | qualityFactor, | |||
T | maxDihedralAngleDeviation = -1 , |
|||
T | maxSolidAngleDeviation = -1 , |
|||
T | maxBoundaryAngleDeviation = -1 , |
|||
int | maxSweeps = 0 | |||
) |
Coarsen the mesh using the min edge length function.
mesh | The simplicial mesh. | |
f | The minimum edge length functor. The algorithm will try to collapse edges below this threshold. | |
minimumAllowedQuality | A collapse is only allowed if the quality of the resulting elements is not less than this value. | |
qualityFactor | A collapse is only allowed if the quality of the resulting elements is not less than the initial quality times this value. | |
maxDihedralAngleDeviation | The maximum dihedral angle deviation (from straight) for a surface feature. The rest are edge features. If not specified, all interior edges will be set as surface features. | |
maxSolidAngleDeviation | Solid angles that deviate more than this value (from ![]() | |
maxBoundaryAngleDeviation | If the angle deviation (from ![]() | |
maxSweeps | The maximum number of sweeps over the vertices. By default, there is no limit on the number of sweeps. |
int geom::coarsen | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
IntInIter | begin, | |||
IntInIter | end | |||
) |
Collapse edges to remove the specified cells.
mesh | The simplicial mesh. | |
begin | The beginning of a range of cells. | |
end | The end of a range of cells. |
void geom::writeAscii | ( | std::ostream & | out, | |
const SimpMeshRed< N, M, T, Node, Cell, Cont > & | x | |||
) |
Write a mesh as an indexed simplex set in ascii format.
First the space dimension and the simplex dimension are written. Then the vertex coordinates are written, followed by the tuples of vertex indices that comprise the simplices. The file format is:
space_dimension simplex_dimension num_vertices vertex_0_coord_0 vertex_0_coord_1 ... vertex_0_coord_N-1 vertex_1_coord_0 vertex_1_coord_1 ... vertex_1_coord_N-1 ... num_simplices simplex_0_index_0 simplex_0_index_1 ... simplex_0_index_M simplex_1_index_0 simplex_1_index_1 ... simplex_1_index_M ..
SMR::Number geom::computeIncidentCellsAngle | ( | typename SMR::NodeConstIterator | node | ) |
Return the solid angle accumulated from the incident cells.
This function does not check if the node is in the interior or on the boundary. For the sake of efficiency, only call this function for boundary nodes.
SMR::Number geom::computeDihedralAngle | ( | typename SMR::ConstEdge | edge | ) |
Compute the dihedral angle at the specified edge.
The dihedral angle is accumulated from the incident cells.
SMR::Number geom::computeCosineAngle | ( | typename SMR::FaceConstIterator | face | ) |
Return the cosine of the interior angle at the specified 1-face.
void geom::computeNodeNormal | ( | typename SMR::NodeConstIterator | node, | |
typename SMR::Vertex * | normal | |||
) |
Compute the normal to the surface.
node | Must be a boundary node. | |
normal | Set to the node normal. |
SMR::Vertex geom::computeNodeNormal | ( | typename SMR::NodeConstIterator | node | ) | [inline] |
Return the normal to the surface.
node | Must be a boundary node. |
void geom::computeCellNormal | ( | typename SMR::CellConstIterator | cell, | |
typename SMR::Vertex * | normal | |||
) |
Compute the cell normal.
SMR::Vertex geom::computeCellNormal | ( | typename SMR::CellConstIterator | cell | ) | [inline] |
Return the normal to the surface.
void geom::computeFaceNormal | ( | typename SMR::CellConstIterator | cell, | |
int | i, | |||
typename SMR::Vertex * | x | |||
) |
Compute the face normal.
int geom::incidenceOptimize | ( | SimpMeshRed< N, 2, T, Node, Cell, Cont > * | mesh, | |
int | norm, | |||
int | numSweeps = 0 | |||
) |
Modify the topology to optimize the cell-node incidences.
mesh | The simplicial mesh. | |
norm | The norm used in incidence optimization. May be 0, 1, or 2. | |
numSweeps | The number of sweeps over the faces. By default, the number of sweeps is not limited. |
void geom::countAdjacencies | ( | const SimpMeshRed< N, M, T, Node, Cell, Cont > & | mesh, | |
ads::FixedArray< M+2, int > * | counts | |||
) |
Calculate the adjacency counts for the simplices in the mesh.
Each simplex has between 0 and M+1 (inclusive) adjacent simplices.
int geom::refine | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
PointsOnManifold< N, MM, SD, T > * | manifold, | |||
const MaxEdgeLength & | f | |||
) |
Refine the mesh using the maximum edge length function.
mesh | The simplicial mesh. | |
manifold | The manifold data structure. | |
f | The maximum edge length functor. The algorithm will split edges above this threshold. |
int geom::refine | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
const MaxEdgeLength & | f | |||
) | [inline] |
Refine the mesh using the maximum edge length function.
mesh | The simplicial mesh. | |
f | The maximum edge length functor. The algorithm will split edges above this threshold. |
int geom::refine | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
PointsOnManifold< N, MM, SD, T > * | manifold, | |||
IntInputIterator | begin, | |||
IntInputIterator | end | |||
) |
Refine the mesh by splitting the specified cells.
mesh | The simplicial mesh. | |
manifold | The boundary manifold data structure. By default it is null. | |
begin | The beginning of a range of cell indices. | |
end | The end of a range of cell indices. |
int geom::refine | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
IntInputIterator | begin, | |||
IntInputIterator | end | |||
) | [inline] |
Refine the mesh by splitting the specified cells.
mesh | The simplicial mesh. | |
begin | The beginning of a range of cell indices. | |
end | The end of a range of cell indices. |
int geom::refine | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
PointsOnManifold< N, MM, SD, T > * | manifold, | |||
IntInputIterator | begin, | |||
IntInputIterator | end, | |||
const MaxEdgeLength & | f | |||
) |
Refine the specified cells using the maximum edge length function.
mesh | The simplicial mesh. | |
manifold | The manifold data structure. | |
begin | The beginning of a range of cell indices. | |
end | The end of a range of cell indices. | |
f | The maximum edge length functor. The algorithm will split edges above this threshold. |
int geom::refine | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
IntInputIterator | begin, | |||
IntInputIterator | end, | |||
const MaxEdgeLength & | f | |||
) | [inline] |
Refine the specified cells using the maximum edge length function.
mesh | The simplicial mesh. | |
begin | The beginning of a range of cell indices. | |
end | The end of a range of cell indices. | |
f | The maximum edge length functor. The algorithm will split edges above this threshold. |
int geom::refineBoundary | ( | SimpMeshRed< 2, 2, T, Node, Cell, Cont > * | x, | |
const ISS & | boundary, | |||
T | maxAngle, | |||
T | minEdgeLength, | |||
int | maxSweeps = 10 | |||
) |
Refine the mesh to better fit the boundary.
int geom::refineBoundary | ( | SimpMeshRed< 2, 2, T, Node, Cell, Cont > * | x, | |
const Distance & | distance, | |||
const ClosestPoint & | closestPoint, | |||
const MaxAngle & | maxAngle, | |||
const MinEdgeLength & | minEdgeLength, | |||
int | maxSweeps = 10 | |||
) |
Refine the mesh to better fit the boundary.
int geom::refineAdjust | ( | SimpMeshRed< 2, 2, T, Node, Cell, Cont > * | mesh, | |
const MaxEdgeLength & | f | |||
) |
Refine and adjust the mesh using the maximum edge length function.
mesh | The simplicial mesh. | |
f | The maximum edge length functor. The algorithm will split edges above this threshold. |
void geom::determineNodesOutside | ( | NodeInIter | begin, | |
NodeInIter | end, | |||
const LSF & | f, | |||
OutIter | iter | |||
) |
Get the nodes that are outside the object.
begin | is the beginning of a range of node input iterators. | |
end | is the end of a range of node input iterators. | |
f | is the level set function that describes the object. Points inside/outside the object have negative/positive values. | |
iter | is an output iterator for the node const iterators. |
void geom::determineCellsOutside | ( | CellInIter | begin, | |
CellInIter | end, | |||
const LSF & | f, | |||
OutIter | iter | |||
) |
Get the cells whose centroids are outside the object.
begin | is the beginning of a range of cell input iterators. | |
end | is the end of a range of cell input iterators. | |
f | is the level set function that describes the object. Points inside/outside the object have negative/positive values. | |
iter | is an output iterator for the cell const iterators. |
void geom::getNodes | ( | NodeInIter | begin, | |
NodeInIter | end, | |||
OutIter | iter | |||
) |
Get the node iterators for the all of the nodes in the mesh.
begin | is the beginning of a range of node input iterators. | |
end | is the end of a range of node input iterators. | |
iter | is an output iterator for the node iterators. |
void geom::determineInteriorNodes | ( | NodeInIter | begin, | |
NodeInIter | end, | |||
OutIter | iter | |||
) |
Get the node iterators for the interior nodes.
begin | is the beginning of a range of node input iterators. | |
end | is the end of a range of node input iterators. | |
iter | is an output iterator for the node iterators. |
void geom::determineBoundaryNodes | ( | NodeInIter | begin, | |
NodeInIter | end, | |||
OutIter | iter | |||
) |
Get the node iterators for the boundary nodes.
begin | is the beginning of a range of node input iterators. | |
end | is the end of a range of node input iterators. | |
iter | is an output iterator for the node iterators. |
void geom::determineCellsWithRequiredAdjacencies | ( | CellInIter | begin, | |
CellInIter | end, | |||
int | minimumRequiredAdjacencies, | |||
OutIter | iter | |||
) |
Get the cell iterators with at least the specified number of adjacencies.
begin | is the beginning of a range of cell input iterators. | |
end | is the end of a range of cell input iterators. | |
minimumRequiredAdjacencies | The minimum required adjacencies. | |
iter | is an output iterator for the cell iterators. |
void geom::determineCellsWithLowAdjacencies | ( | CellInIter | begin, | |
CellInIter | end, | |||
const int | minimumRequiredAdjacencies, | |||
OutIter | iter | |||
) |
Get the cell iterators with adjacencies less than specified.
begin | is the beginning of a range of cell input iterators. | |
end | is the end of a range of cell input iterators. | |
minimumRequiredAdjacencies | This function gets the cells that have fewer adjacencies than minimumRequiredAdjacencies. | |
iter | is an output iterator for the cell iterators. |
void geom::determineNeighbors | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > & | mesh, | |
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator | node, | |||
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIteratorSet * | neighbors | |||
) |
Get the neighboring nodes of a node.
The set of nodes (not including the specified node) that share a cell with the specified node.
void geom::determineBoundaryNeighbors | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > & | mesh, | |
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator | node, | |||
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIteratorSet * | neighbors | |||
) |
Get the neighboring boundary nodes of a node.
The set of boundary nodes (not including the specified node) that share a cell with the specified node.
void geom::determineNeighbors | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > & | mesh, | |
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIterator | node, | |||
int | radius, | |||
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::NodeIteratorSet * | neighbors | |||
) |
Get all the nodes within the specified radius of the specified node.
The set includes the specified node.
void geom::convertIdentifiersToIterators | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > & | mesh, | |
IntInIter | begin, | |||
IntInIter | end, | |||
typename SimpMeshRed< N, M, T, Node, Cell, Cont >::CellIteratorSet * | cells | |||
) |
Build a set of cell iterators from a range of cell identifiers.
mesh | The simplicial mesh. It is not modified, but because we are getting cell iterators (not cell const iterators) we pass it by reference (not const reference). | |
begin | The beginning of the range of identifiers. | |
end | The end of the range of identifiers. | |
cells | The set of cell iterators. |
void geom::tile | ( | const BBox< N, T > & | domain, | |
const T | length, | |||
SimpMeshRed< N, M, T, Vertex, Cell, Container > * | mesh | |||
) | [inline] |
Tile the rectilinear region.
domain | is the rectilinear domain to tile. | |
length | is the maximum tetrahedron edge length. | |
mesh | is the indexed simplex set. |
CONTINUE: draw a picture of the 2-D mesh and 3-D block.
The template parameters can be deduced from the arguments.
void geom::tile | ( | const BBox< N, T > & | domain, | |
const T | length, | |||
const LSF & | f, | |||
SimpMeshRed< N, M, T, Vertex, Cell, Container > * | mesh | |||
) | [inline] |
Tile the object.
domain | is the rectilinear domain to tile. | |
length | is the maximum tetrahedron edge length. | |
f | is the level set description of the object. | |
mesh | is the indexed simplex set. |
The template parameters can be deduced from the arguments.
int geom::topologicalOptimize | ( | SimpMeshRed< 3, 3, T, Node, Cell, Cont > * | mesh, | |
const PointsOnManifold< 3, 2, SD, T > * | manifold, | |||
std::multiset< std::pair< int, int > > * | edgeRemovalOperations = 0 , |
|||
std::multiset< std::pair< int, int > > * | faceRemovalOperations = 0 , |
|||
int | maximumSteps = std::numeric_limits< int >::max() | |||
) |
Use edge and face removal to optimize the mesh.
mesh | The simplicial mesh. | |
manifold | The manifold data structure. We pass this by const reference, because the topological optimization will not change the manifold data structure. | |
edgeRemovalOperations | Multi-set to record the edge removal operations. | |
faceRemovalOperations | Multi-set to record the face removal operations. | |
maximumSteps | The maximum allowed number of steps. |
int geom::topologicalOptimizeUsingMeanRatio | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
const PointsOnManifold< N, MM, SD, T > * | manifold, | |||
std::multiset< std::pair< int, int > > * | edgeRemovalOperations = 0 , |
|||
std::multiset< std::pair< int, int > > * | faceRemovalOperations = 0 , |
|||
const int | maximumSteps = std::numeric_limits<int>::max() | |||
) | [inline] |
Use edge and face removal to optimize the mesh.
mesh | The simplicial mesh. | |
manifold | The manifold data structure. | |
edgeRemovalOperations | Multi-set to record the edge removal operations. | |
faceRemovalOperations | Multi-set to record the face removal operations. | |
maximumSteps | The maximum allowed number of steps. |
int geom::topologicalOptimizeUsingConditionNumber | ( | SimpMeshRed< N, M, T, Node, Cell, Cont > * | mesh, | |
const PointsOnManifold< N, MM, SD, T > * | manifold, | |||
std::multiset< std::pair< int, int > > * | edgeRemovalOperations = 0 , |
|||
std::multiset< std::pair< int, int > > * | faceRemovalOperations = 0 , |
|||
const int | maximumSteps = std::numeric_limits<int>::max() | |||
) | [inline] |
Use edge and face removal to optimize the mesh.
mesh | The simplicial mesh. | |
manifold | The manifold data structure. | |
edgeRemovalOperations | Multi-set to record the edge removal operations. | |
faceRemovalOperations | Multi-set to record the face removal operations. | |
maximumSteps | The maximum allowed number of steps. |
void geom::transformNodes | ( | NodeIterInIter | begin, | |
NodeIterInIter | end, | |||
const UnaryFunction & | f | |||
) |
Transform each vertex in the range with the specified function.
The first template argument must be specified explicitly.