1 #ifndef TIL_MESH_CONVERSION_H_ 2 #define TIL_MESH_CONVERSION_H_ 13 template <
typename TVertexCollection,
typename TFaceCollection,
typename TGraphVertices,
typename TGraphFaces >
32 const TGraphVertices & graph_vertices,
33 const TGraphFaces & graph_faces,
34 TVertexCollection & vertices,
35 TFaceCollection & faces
42 VertexIndexMap m_index_vertex;
54 template <
typename TVertexNode,
typename TFaceNode,
typename TVertexCollection,
typename TFaceCollection,
typename TNeighborCollection >
62 TVertexCollection
const & vertices,
63 TFaceCollection
const & faceIndices,
64 std::vector<std::list<std::size_t> >
const & invertedFaceIndices,
65 TNeighborCollection
const & neighbors,
66 std::list<TVertexNode> & graph_vertices,
67 std::list<TFaceNode> & graph_faces
90 std::vector<typename std::list<TVertexNode>::iterator> m_index_vertex;
91 std::vector<typename std::list<TFaceNode>::iterator> m_index_face;
99 template <
typename TVerticesIn,
typename TFacesIn,
typename TNeighbors,
typename TVertexNode,
typename TFaceNode >
102 const TVerticesIn & verticesIn,
103 const TFacesIn & facesIn,
104 const TNeighbors & neighc,
105 std::list<TVertexNode> & verticesOut,
106 std::list<TFaceNode> & facesOut
111 l2g(verticesIn, facesIn, faceIndices, neighc, verticesOut, facesOut);
114 template <
typename TVerticesIn,
typename TFacesIn,
typename TVertexNode,
typename TFaceNode >
117 const TVerticesIn & verticesIn,
118 const TFacesIn & facesIn,
119 std::list<TVertexNode> & verticesOut,
120 std::list<TFaceNode> & facesOut
131 template <
typename TMesh >
142 TMesh &
mesh() {
return m_mesh; }
146 template <
typename TVertexNode,
typename TFaceNode >
149 const std::list<TVertexNode> & graph_vertices,
150 const std::list<TFaceNode> & graph_faces
157 for (
typename std::list<TVertexNode>::const_iterator i = graph_vertices.begin(); i != graph_vertices.end(); ++i)
160 m_index_vertex.insert(std::make_pair(static_cast<const void*>(&*i),c));
167 for (
typename std::list<TFaceNode>::const_iterator i = graph_faces.begin(); i != graph_faces.end(); ++i)
169 for (
int j = 0; j < 3; ++j)
170 getFaceIndices(m_mesh)[c][j] = m_index_vertex[
static_cast<const void*
>(&*(i->face[j]))];
std::map< const void *, std::size_t > VertexIndexMap
std::vector< std::list< std::size_t > > invertIndices(const std::vector< TIndexCollection > &c)
Invert an index array.
VertexIndexMap & index_vertex()
shared_ptr< std::vector< std::vector< typename TFaceCollection::value_type::value_type > > > circular_neighborhoods(TFaceCollection const &faces, std::size_t nVertices)
Get point neighbors so that they form a loop around points.
Belongs to package Box Do not include directly, include til/Box.h instead.
std::map< const void *, std::size_t > VertexIndexMap
VertexIndexMap & index_vertex()
const MeshTraits< AimsSurface< D, T > >::FaceIndexCollection & getFaceIndices(const AimsSurface< D, T > &mesh)
Converts a (vertexCollection, faceCollection) mesh into a (vertexList, faceList) mesh graph...
void list2graph_mesh_conversion(const TVerticesIn &verticesIn, const TFacesIn &facesIn, const TNeighbors &neighc, std::list< TVertexNode > &verticesOut, std::list< TFaceNode > &facesOut)
const MeshTraits< AimsSurface< D, T > >::VertexCollection & getVertices(const AimsSurface< D, T > &mesh)