Modified computation of EH and HE relations in method FromIndexed;
Removed assertions and added checks about EH and HE relations;
This commit is contained in:
parent
764b2779cb
commit
99950cc5f4
|
@ -29,6 +29,7 @@
|
||||||
#include <vcg/complex/trimesh/clean.h>
|
#include <vcg/complex/trimesh/clean.h>
|
||||||
#include <vcg/complex/trimesh/update/topology.h>
|
#include <vcg/complex/trimesh/update/topology.h>
|
||||||
#include <vcg/complex/trimesh/base.h>
|
#include <vcg/complex/trimesh/base.h>
|
||||||
|
#include <vcg/complex/trimesh/update/halfedge_topology.h>
|
||||||
|
|
||||||
namespace vcg
|
namespace vcg
|
||||||
{
|
{
|
||||||
|
@ -82,7 +83,6 @@ namespace vcg
|
||||||
assert(HasFVAdjacency(m));
|
assert(HasFVAdjacency(m));
|
||||||
assert(HasHOppAdjacency(m));
|
assert(HasHOppAdjacency(m));
|
||||||
assert(HasHNextAdjacency(m));
|
assert(HasHNextAdjacency(m));
|
||||||
assert(HasHEAdjacency(m));
|
|
||||||
|
|
||||||
typename MeshType::template PerFaceAttributeHandle<BitVector> flagVisited =
|
typename MeshType::template PerFaceAttributeHandle<BitVector> flagVisited =
|
||||||
vcg::tri::Allocator<MeshType>::template AddPerFaceAttribute<BitVector>(m,"");
|
vcg::tri::Allocator<MeshType>::template AddPerFaceAttribute<BitVector>(m,"");
|
||||||
|
@ -202,7 +202,7 @@ namespace vcg
|
||||||
{
|
{
|
||||||
if((*ei).HEp() == NULL)
|
if((*ei).HEp() == NULL)
|
||||||
{
|
{
|
||||||
(*ei).HEp() = &(*edge_i);
|
(*ei).HEp() = &(*edge_i);
|
||||||
(*ei).HOp()->HEp() = &(*edge_i);
|
(*ei).HOp()->HEp() = &(*edge_i);
|
||||||
|
|
||||||
(*edge_i).EHp() = &(*ei);
|
(*edge_i).EHp() = &(*ei);
|
||||||
|
@ -214,29 +214,39 @@ namespace vcg
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
assert(HasEVAdjacency(m));
|
|
||||||
|
|
||||||
//update edge relations
|
if(HasEVAdjacency(m) && HasHEAdjacency(m) && HasEHAdjacency(m))
|
||||||
typename MeshType::EdgeIterator ei1;
|
{
|
||||||
for( ei1 = m.edge.begin(); ei1 != m.edge.end(); ++ei1 )
|
//update edge relations
|
||||||
for( ei = m.hedge.begin(); ei != m.hedge.end(); ++ei )
|
|
||||||
if ( ((*ei).HVp() == (*ei1).V(0)) && ((*ei).HOp()->HVp() == (*ei1).V(1)) )
|
for(typename MeshType::EdgeIterator ei1 = m.edge.begin(); ei1 != m.edge.end(); ++ei1 )
|
||||||
|
{
|
||||||
|
vector<HEdgePointer> hedges = HalfEdgeTopology<MeshType>::get_incident_hedges((*ei1).V(0));
|
||||||
|
|
||||||
|
for(typename vector<HEdgePointer>::iterator hi = hedges.begin(); hi != hedges.end(); ++hi)
|
||||||
{
|
{
|
||||||
// EH
|
if((*hi)->HOp()->HVp() == (*ei1).V(1))
|
||||||
(*ei1).EHp() = &(*ei);
|
{
|
||||||
|
|
||||||
// HE
|
assert((*hi)->HEp() == NULL);
|
||||||
(*ei).HEp() = &(*ei1);
|
assert((*hi)->HOp()->HEp() == NULL);
|
||||||
(*ei).HOp()->HEp() = &(*ei1);
|
|
||||||
|
|
||||||
break;
|
// EH
|
||||||
|
(*ei1).EHp() = *hi;
|
||||||
|
|
||||||
|
// HE
|
||||||
|
(*hi)->HEp() = &(*ei1);
|
||||||
|
(*hi)->HOp()->HEp() = &(*ei1);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -260,7 +270,6 @@ namespace vcg
|
||||||
assert(MeshType::HEdgeType::HasHNextAdjacency());
|
assert(MeshType::HEdgeType::HasHNextAdjacency());
|
||||||
assert(MeshType::HEdgeType::HasHOppAdjacency());
|
assert(MeshType::HEdgeType::HasHOppAdjacency());
|
||||||
assert(MeshType::HEdgeType::HasHVAdjacency());
|
assert(MeshType::HEdgeType::HasHVAdjacency());
|
||||||
assert(MeshType::HEdgeType::HasHEAdjacency());
|
|
||||||
assert(MeshType::FaceType::HasFHAdjacency());
|
assert(MeshType::FaceType::HasFHAdjacency());
|
||||||
|
|
||||||
//bool hasHEF = ( MeshType::HEdgeType::HasHFAdjacency());
|
//bool hasHEF = ( MeshType::HEdgeType::HasHFAdjacency());
|
||||||
|
@ -394,7 +403,7 @@ namespace vcg
|
||||||
//}while(ep!=ep1);
|
//}while(ep!=ep1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(HasEHAdjacency(m))
|
if(HasEHAdjacency(m) && HasHEAdjacency(m))
|
||||||
for(EdgeIterator ei = m.edge.begin(); ei != m.edge.end(); ++ei)
|
for(EdgeIterator ei = m.edge.begin(); ei != m.edge.end(); ++ei)
|
||||||
{
|
{
|
||||||
if(!(*ei).IsD())
|
if(!(*ei).IsD())
|
||||||
|
|
Loading…
Reference in New Issue