Ejemplo n.º 1
0
Traversor2FE<MAP>::Traversor2FE(const MAP& map, Face f) : m(map), start(f), m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickIncidentTraversal<FACE,VERTEX>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(f)));
	}
}
Ejemplo n.º 2
0
Traversor2VE<MAP>::Traversor2VE(const MAP& map, Vertex v) : m(map), start(v),m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickIncidentTraversal<VERTEX,EDGE>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(v)));
	}
}
Ejemplo n.º 3
0
Traversor2VF<MAP>::Traversor2VF(const MAP& map, Vertex v) : m(map), start(v),m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickIncidentTraversal<VERTEX,FACE>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(v)));
	}
	else
	{
		if(m.template isBoundaryMarked<2>(start)) // jump over a boundary face
			start = m.phi2(m.phi_1(start)) ;
	}
}
Ejemplo n.º 4
0
Traversor2EF<MAP>::Traversor2EF(const MAP& map, Edge e) : m(map), start(e),m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickIncidentTraversal<EDGE,FACE>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(e)));
	}
	else
	{
		if(m.template isBoundaryMarked<2>(start.dart))
			start = m.phi2(start.dart) ;
	}
}
Ejemplo n.º 5
0
Traversor2EEaV<MAP>::Traversor2EEaV(const MAP& map, Edge e) : m(map), m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickAdjacentTraversal<EDGE,VERTEX>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(e)));
	}
	else
	{
		start = m.phi2(m.phi_1(e.dart)) ;
		stop1 = e ;
		stop2 = m.phi2(e.dart) ;
	}
}
Ejemplo n.º 6
0
Traversor2VVaF<MAP>::Traversor2VVaF(const MAP& map, Vertex v) : m(map), m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickAdjacentTraversal<VERTEX,FACE>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(v)));
	}
	else
	{
		if(m.template isBoundaryMarked<2>(v.dart))
			v.dart = m.phi2(m.phi_1(v.dart)) ;
		start = m.phi1(m.phi1(v.dart)) ;
		if(start.dart == v.dart)
			start = m.phi1(v.dart) ;
		stop = v ;
	}
}
Ejemplo n.º 7
0
Traversor2FFaE<MAP>::Traversor2FFaE(const MAP& map, Face f) : m(map), m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickAdjacentTraversal<FACE,EDGE>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(f)));
	}
	else
	{
		start = m.phi2(f.dart) ;
		while(start.dart != NIL && m.template isBoundaryMarked<2>(start))
		{
			start = m.phi2(m.phi1(m.phi2(start))) ;
			if(start.dart == m.phi2(f.dart))
				start = NIL ;
		}
	}
}
Ejemplo n.º 8
0
Traversor2FFaV<MAP>::Traversor2FFaV(const MAP& map, Face f) : m(map), m_QLT(NULL)
{
	const AttributeMultiVector<NoTypeNameAttribute<std::vector<Dart> > >* quickTraversal = map.template getQuickAdjacentTraversal<FACE,VERTEX>() ;
	if (quickTraversal != NULL)
	{
		m_QLT = &(quickTraversal->operator[](map.getEmbedding(f)));
	}
	else
	{
		start = m.phi2(m.phi_1(m.phi2(m.phi_1(f.dart)))) ;
		while (start.dart == f.dart)
		{
			f = m.phi1(f.dart);
			start = m.phi2(m.phi_1(m.phi2(m.phi_1(f.dart)))) ;
		}
		current = start ;
		stop = f ;
		if(m.template isBoundaryMarked<2>(start))
			start = next() ;
	}
}