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))); } }
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))); } }
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)) ; } }
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) ; } }
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) ; } }
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 ; } }
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 ; } } }
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() ; } }