Helpers for working with CDT::Triangulation. More...
Classes | |
struct | CDT::DuplicatesInfo |
Information about removed duplicated vertices. More... | |
Functions | |
CDT_EXPORT VerticesTriangles | CDT::calculateTrianglesByVertex (const TriangleVec &triangles, VertInd verticesSize) |
Calculate triangles adjacent to vertices (triangles by vertex index) | |
template<typename T, typename TVertexIter, typename TGetVertexCoordX, typename TGetVertexCoordY> | |
DuplicatesInfo | CDT::FindDuplicates (TVertexIter first, TVertexIter last, TGetVertexCoordX getX, TGetVertexCoordY getY) |
Find duplicates in given custom point-type range. | |
template<typename TVertex, typename TAllocator> | |
void | CDT::RemoveDuplicates (std::vector< TVertex, TAllocator > &vertices, const std::vector< std::size_t > &duplicates) |
Remove duplicates in-place from vector of custom points. | |
template<typename T> | |
CDT_EXPORT DuplicatesInfo | CDT::RemoveDuplicates (std::vector< V2d< T > > &vertices) |
Remove duplicated points in-place. | |
template<typename TEdgeIter, typename TGetEdgeVertexStart, typename TGetEdgeVertexEnd, typename TMakeEdgeFromStartAndEnd> | |
void | CDT::RemapEdges (TEdgeIter first, TEdgeIter last, const std::vector< std::size_t > &mapping, TGetEdgeVertexStart getStart, TGetEdgeVertexEnd getEnd, TMakeEdgeFromStartAndEnd makeEdge) |
Remap vertex indices in edges (in-place) using given vertex-index mapping. | |
CDT_EXPORT void | CDT::RemapEdges (std::vector< Edge > &edges, const std::vector< std::size_t > &mapping) |
Remap vertex indices in edges (in-place) using given vertex-index mapping. | |
template<typename T, typename TVertex, typename TGetVertexCoordX, typename TGetVertexCoordY, typename TVertexAllocator, typename TEdgeIter, typename TGetEdgeVertexStart, typename TGetEdgeVertexEnd, typename TMakeEdgeFromStartAndEnd> | |
DuplicatesInfo | CDT::RemoveDuplicatesAndRemapEdges (std::vector< TVertex, TVertexAllocator > &vertices, TGetVertexCoordX getX, TGetVertexCoordY getY, TEdgeIter edgesFirst, TEdgeIter edgesLast, TGetEdgeVertexStart getStart, TGetEdgeVertexEnd getEnd, TMakeEdgeFromStartAndEnd makeEdge) |
Find point duplicates, remove them from vector (in-place) and remap edges (in-place) | |
template<typename T> | |
CDT_EXPORT DuplicatesInfo | CDT::RemoveDuplicatesAndRemapEdges (std::vector< V2d< T > > &vertices, std::vector< Edge > &edges) |
Same as a chained call of CDT::RemoveDuplicates + CDT::RemapEdges. | |
CDT_EXPORT EdgeUSet | CDT::extractEdgesFromTriangles (const TriangleVec &triangles) |
Extract all edges of triangles. | |
CDT_EXPORT unordered_map< Edge, EdgeVec > | CDT::EdgeToPiecesMapping (const unordered_map< Edge, EdgeVec > &pieceToOriginals) |
template<typename T> | |
unordered_map< Edge, std::vector< VertInd > > | CDT::EdgeToSplitVertices (const unordered_map< Edge, EdgeVec > &edgeToPieces, const std::vector< V2d< T > > &vertices) |
Helpers for working with CDT::Triangulation.
CDT_INLINE_IF_HEADER_ONLY VerticesTriangles CDT::calculateTrianglesByVertex | ( | const TriangleVec & | triangles, |
VertInd | verticesSize ) |
unordered_map< Edge, std::vector< VertInd > > CDT::EdgeToSplitVertices | ( | const unordered_map< Edge, EdgeVec > & | edgeToPieces, |
const std::vector< V2d< T > > & | vertices ) |
Convert edge-to-pieces mapping into edge-to-split-vertices mapping
T | type of vertex coordinates (e.g., float, double) |
edgeToPieces | edge-to-pieces mapping |
vertices | vertex buffer |
CDT_INLINE_IF_HEADER_ONLY EdgeUSet CDT::extractEdgesFromTriangles | ( | const TriangleVec & | triangles | ) |
DuplicatesInfo CDT::FindDuplicates | ( | TVertexIter | first, |
TVertexIter | last, | ||
TGetVertexCoordX | getX, | ||
TGetVertexCoordY | getY ) |
Find duplicates in given custom point-type range.
TVertexIter | iterator that dereferences to custom point type |
TGetVertexCoordX | function object getting x coordinate from vertex. Getter signature: const TVertexIter::value_type& -> T |
TGetVertexCoordY | function object getting y coordinate from vertex. Getter signature: const TVertexIter::value_type& -> T |
first | beginning of the range of vertices |
last | end of the range of vertices |
getX | getter of X-coordinate |
getY | getter of Y-coordinate |
CDT_INLINE_IF_HEADER_ONLY void CDT::RemapEdges | ( | std::vector< Edge > & | edges, |
const std::vector< std::size_t > & | mapping ) |
void CDT::RemapEdges | ( | TEdgeIter | first, |
TEdgeIter | last, | ||
const std::vector< std::size_t > & | mapping, | ||
TGetEdgeVertexStart | getStart, | ||
TGetEdgeVertexEnd | getEnd, | ||
TMakeEdgeFromStartAndEnd | makeEdge ) |
Remap vertex indices in edges (in-place) using given vertex-index mapping.
TEdgeIter | iterator that dereferences to custom edge type |
TGetEdgeVertexStart | function object getting start vertex index from an edge. Getter signature: const TEdgeIter::value_type& -> CDT::VertInd |
TGetEdgeVertexEnd | function object getting end vertex index from an edge. Getter signature: const TEdgeIter::value_type& -> CDT::VertInd |
TMakeEdgeFromStartAndEnd | function object that makes new edge from start and end vertices |
first | beginning of the range of edges |
last | end of the range of edges |
mapping | vertex-index mapping |
getStart | getter of edge start vertex index |
getEnd | getter of edge end vertex index |
makeEdge | factory for making edge from vetices |
void CDT::RemoveDuplicates | ( | std::vector< TVertex, TAllocator > & | vertices, |
const std::vector< std::size_t > & | duplicates ) |
CDT_EXPORT DuplicatesInfo CDT::RemoveDuplicates | ( | std::vector< V2d< T > > & | vertices | ) |
DuplicatesInfo CDT::RemoveDuplicatesAndRemapEdges | ( | std::vector< TVertex, TVertexAllocator > & | vertices, |
TGetVertexCoordX | getX, | ||
TGetVertexCoordY | getY, | ||
TEdgeIter | edgesFirst, | ||
TEdgeIter | edgesLast, | ||
TGetEdgeVertexStart | getStart, | ||
TGetEdgeVertexEnd | getEnd, | ||
TMakeEdgeFromStartAndEnd | makeEdge ) |
Find point duplicates, remove them from vector (in-place) and remap edges (in-place)
T | type of vertex coordinates (e.g., float, double) |
TVertex | type of vertex |
TGetVertexCoordX | function object getting x coordinate from vertex. Getter signature: const TVertexIter::value_type& -> T |
TGetVertexCoordY | function object getting y coordinate from vertex. Getter signature: const TVertexIter::value_type& -> T |
TEdgeIter | iterator that dereferences to custom edge type |
TGetEdgeVertexStart | function object getting start vertex index from an edge. Getter signature: const TEdgeIter::value_type& -> CDT::VertInd |
TGetEdgeVertexEnd | function object getting end vertex index from an edge. Getter signature: const TEdgeIter::value_type& -> CDT::VertInd |
TMakeEdgeFromStartAndEnd | function object that makes new edge from start and end vertices |
[in,out] | vertices | vertices to remove duplicates from |
[in,out] | edges | collection of edges connecting vertices |
getX | getter of X-coordinate | |
getY | getter of Y-coordinate | |
edgesFirst | beginning of the range of edges | |
edgesLast | end of the range of edges | |
getStart | getter of edge start vertex index | |
getEnd | getter of edge end vertex index | |
makeEdge | factory for making edge from vetices |
CDT_EXPORT DuplicatesInfo CDT::RemoveDuplicatesAndRemapEdges | ( | std::vector< V2d< T > > & | vertices, |
std::vector< Edge > & | edges ) |
Same as a chained call of CDT::RemoveDuplicates + CDT::RemapEdges.
T | type of vertex coordinates (e.g., float, double) |
[in,out] | vertices | collection of vertices to remove duplicates from |
[in,out] | edges | collection of edges to remap |