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<Source>::halfedge_descriptor sm_halfedge_descriptor;
|
||||||
typedef boost::graph_traits<Target>::halfedge_descriptor tm_halfedge_descriptor;
|
typedef boost::graph_traits<Target>::halfedge_descriptor tm_halfedge_descriptor;
|
||||||
|
|
||||||
boost::unordered_map<sm_vertex_descriptor, tm_vertex_descriptor> v2v;
|
namespace OpenMesh {
|
||||||
boost::unordered_map<sm_halfedge_descriptor, tm_halfedge_descriptor> h2h;
|
|
||||||
|
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[])
|
int main(int, char* argv[])
|
||||||
{
|
{
|
||||||
|
|
@ -49,9 +65,23 @@ int main(int, char* argv[])
|
||||||
std::ifstream in(argv[1]);
|
std::ifstream in(argv[1]);
|
||||||
in >> S;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace CGAL {
|
||||||
typedef boost::graph_traits<TargetMesh>::halfedge_descriptor tm_halfedge_descriptor;
|
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<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);
|
sm_PMap sm_pmap = get(vertex_point, sm);
|
||||||
tm_PMap tm_pmap = get(vertex_point, tm);
|
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,
|
halfedge(typename boost::graph_traits<OpenMesh::PolyMesh_ArrayKernelT<K> >::vertex_descriptor v,
|
||||||
const OpenMesh::PolyMesh_ArrayKernelT<K>& sm)
|
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
|
// prev because OpenMesh stores out-going halfedges
|
||||||
// return sm.prev_halfedge_handle(sm.halfedge_handle(v));
|
// return sm.prev_halfedge_handle(sm.halfedge_handle(v));
|
||||||
return sm.opposite_halfedge_handle(sm.halfedge_handle(v));
|
return sm.opposite_halfedge_handle(sm.halfedge_handle(v));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue