mirror of https://github.com/CGAL/cgal
Fix halfedge(v, PolyMesh) + fixes for conversion from OpenMesh to Polyhedron
This commit is contained in:
parent
1eb87f5a9d
commit
bb208ab2d6
|
|
@ -39,8 +39,24 @@ typedef boost::graph_traits<Target>::vertex_descriptor tm_vertex_descriptor;
|
|||
typedef boost::graph_traits<Source>::halfedge_descriptor sm_halfedge_descriptor;
|
||||
typedef boost::graph_traits<Target>::halfedge_descriptor tm_halfedge_descriptor;
|
||||
|
||||
boost::unordered_map<sm_vertex_descriptor, tm_vertex_descriptor> v2v;
|
||||
boost::unordered_map<sm_halfedge_descriptor, tm_halfedge_descriptor> h2h;
|
||||
namespace OpenMesh {
|
||||
|
||||
inline std::size_t hash_value(const VertexHandle& i)
|
||||
{
|
||||
return i.idx();
|
||||
}
|
||||
|
||||
inline std::size_t hash_value(const HalfedgeHandle& i)
|
||||
{
|
||||
return i.idx();
|
||||
}
|
||||
|
||||
inline std::size_t hash_value(const FaceHandle& i)
|
||||
{
|
||||
return i.idx();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main(int, char* argv[])
|
||||
{
|
||||
|
|
@ -49,9 +65,23 @@ int main(int, char* argv[])
|
|||
std::ifstream in(argv[1]);
|
||||
in >> S;
|
||||
|
||||
convert_surface_mesh(S,T,v2v,h2h);
|
||||
{
|
||||
boost::unordered_map<sm_vertex_descriptor, tm_vertex_descriptor> v2v;
|
||||
boost::unordered_map<sm_halfedge_descriptor, tm_halfedge_descriptor> h2h;
|
||||
|
||||
convert_surface_mesh(S,T,v2v,h2h);
|
||||
OpenMesh::IO::write_mesh(T, "om.off");
|
||||
}
|
||||
|
||||
OpenMesh::IO::write_mesh(T, "om.off");
|
||||
{
|
||||
boost::unordered_map<tm_vertex_descriptor, sm_vertex_descriptor> v2v;
|
||||
boost::unordered_map<tm_halfedge_descriptor, sm_halfedge_descriptor> h2h;
|
||||
|
||||
convert_surface_mesh(T,S,v2v,h2h);
|
||||
std::ofstream out("reverse.off");
|
||||
out << S << std::endl;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ namespace CGAL {
|
|||
typedef boost::graph_traits<TargetMesh>::halfedge_descriptor tm_halfedge_descriptor;
|
||||
|
||||
typedef typename boost::property_map<SourceMesh, vertex_point_t>::const_type sm_PMap;
|
||||
typedef typename boost::property_map<TargetMesh, vertex_point_t>::const_type tm_PMap;
|
||||
typedef typename boost::property_map<TargetMesh, vertex_point_t>::type tm_PMap;
|
||||
|
||||
sm_PMap sm_pmap = get(vertex_point, sm);
|
||||
tm_PMap tm_pmap = get(vertex_point, tm);
|
||||
|
|
|
|||
|
|
@ -355,6 +355,9 @@ typename boost::graph_traits<OpenMesh::PolyMesh_ArrayKernelT<K> >::halfedge_desc
|
|||
halfedge(typename boost::graph_traits<OpenMesh::PolyMesh_ArrayKernelT<K> >::vertex_descriptor v,
|
||||
const OpenMesh::PolyMesh_ArrayKernelT<K>& sm)
|
||||
{
|
||||
if(sm.halfedge_handle(v) == boost::graph_traits<OpenMesh::PolyMesh_ArrayKernelT<K> >::null_halfedge()){
|
||||
return boost::graph_traits<OpenMesh::PolyMesh_ArrayKernelT<K> >::null_halfedge();
|
||||
}
|
||||
// prev because OpenMesh stores out-going halfedges
|
||||
// return sm.prev_halfedge_handle(sm.halfedge_handle(v));
|
||||
return sm.opposite_halfedge_handle(sm.halfedge_handle(v));
|
||||
|
|
|
|||
Loading…
Reference in New Issue