From 026b5ffde8cd0ab0cfb5b01e6043ddf77f6b6dbb Mon Sep 17 00:00:00 2001 From: Sylvain Thery Date: Wed, 19 Feb 2014 17:14:18 +0100 Subject: [PATCH] update Traversor2Virts --- include/Topology/generic/traversor2.hpp | 1 - include/Topology/generic/traversor2Virt.h | 46 +++++++++--------- include/Topology/generic/traversor2Virt.hpp | 53 ++++++++++++--------- 3 files changed, 54 insertions(+), 46 deletions(-) diff --git a/include/Topology/generic/traversor2.hpp b/include/Topology/generic/traversor2.hpp index 14a517e3..acda7b68 100644 --- a/include/Topology/generic/traversor2.hpp +++ b/include/Topology/generic/traversor2.hpp @@ -471,7 +471,6 @@ Dart Traversor2EEaF::next() } else if (current == stop2) current = NIL ; - } return current ; } diff --git a/include/Topology/generic/traversor2Virt.h b/include/Topology/generic/traversor2Virt.h index 56eae57e..48e5ebf3 100644 --- a/include/Topology/generic/traversor2Virt.h +++ b/include/Topology/generic/traversor2Virt.h @@ -40,13 +40,13 @@ template class VTraversor2VE: public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2VE(MAP& map, Dart dart) ; + VTraversor2VE(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -58,13 +58,13 @@ template class VTraversor2VF : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2VF(MAP& map, Dart dart) ; + VTraversor2VF(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -76,13 +76,13 @@ template class VTraversor2VVaE : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2VVaE(MAP& map, Dart dart) ; + VTraversor2VVaE(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -94,7 +94,7 @@ template class VTraversor2VVaF : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; @@ -102,7 +102,7 @@ private: const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2VVaF(MAP& map, Dart dart) ; + VTraversor2VVaF(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -118,13 +118,13 @@ template class VTraversor2EV : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2EV(MAP& map, Dart dart) ; + VTraversor2EV(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -136,13 +136,13 @@ template class VTraversor2EF : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2EF(MAP& map, Dart dart) ; + VTraversor2EF(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -154,7 +154,7 @@ template class VTraversor2EEaV : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; @@ -162,7 +162,7 @@ private: const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2EEaV(MAP& map, Dart dart) ; + VTraversor2EEaV(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -174,7 +174,7 @@ template class VTraversor2EEaF : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; @@ -182,7 +182,7 @@ private: const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2EEaF(MAP& map, Dart dart) ; + VTraversor2EEaF(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -198,13 +198,13 @@ template class VTraversor2FV : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2FV(MAP& map, Dart dart) ; + VTraversor2FV(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -217,7 +217,7 @@ template class VTraversor2FE: public VTraversor2FV { public: - VTraversor2FE(MAP& map, Dart dart):VTraversor2FV(map,dart){} + VTraversor2FE(const MAP& map, Dart dart):VTraversor2FV(map,dart){} } ; // Traverse the faces adjacent to a given face through sharing a common vertex @@ -225,7 +225,7 @@ template class VTraversor2FFaV : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; @@ -233,7 +233,7 @@ private: const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2FFaV(MAP& map, Dart dart) ; + VTraversor2FFaV(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; @@ -245,13 +245,13 @@ template class VTraversor2FFaE : public Traversor { private: - MAP& m ; + const MAP& m ; Dart start ; Dart current ; const std::vector* m_QLT; std::vector::const_iterator m_ItDarts; public: - VTraversor2FFaE(MAP& map, Dart dart) ; + VTraversor2FFaE(const MAP& map, Dart dart) ; Dart begin() ; Dart end() ; diff --git a/include/Topology/generic/traversor2Virt.hpp b/include/Topology/generic/traversor2Virt.hpp index d7260cba..b4fc8056 100644 --- a/include/Topology/generic/traversor2Virt.hpp +++ b/include/Topology/generic/traversor2Virt.hpp @@ -32,7 +32,7 @@ namespace CGoGN // VTraversor2VE template -VTraversor2VE::VTraversor2VE(MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) +VTraversor2VE::VTraversor2VE(const MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickIncidentTraversal() ; if (quickTraversal != NULL) @@ -81,7 +81,7 @@ Dart VTraversor2VE::next() // VTraversor2VF template -VTraversor2VF::VTraversor2VF(MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) +VTraversor2VF::VTraversor2VF(const MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickIncidentTraversal() ; if (quickTraversal != NULL) @@ -135,7 +135,7 @@ Dart VTraversor2VF::next() // VTraversor2VVaE template -VTraversor2VVaE::VTraversor2VVaE(MAP& map, Dart dart) : m(map),m_QLT(NULL) +VTraversor2VVaE::VTraversor2VVaE(const MAP& map, Dart dart) : m(map),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickAdjacentTraversal() ; if (quickTraversal != NULL) @@ -186,7 +186,7 @@ Dart VTraversor2VVaE::next() // VTraversor2VVaF template -VTraversor2VVaF::VTraversor2VVaF(MAP& map, Dart dart) : m(map),m_QLT(NULL) +VTraversor2VVaF::VTraversor2VVaF(const MAP& map, Dart dart) : m(map),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickAdjacentTraversal() ; if (quickTraversal != NULL) @@ -260,7 +260,7 @@ Dart VTraversor2VVaF::next() // VTraversor2EV template -VTraversor2EV::VTraversor2EV(MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) +VTraversor2EV::VTraversor2EV(const MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickIncidentTraversal() ; if (quickTraversal != NULL) @@ -307,7 +307,7 @@ Dart VTraversor2EV::next() // VTraversor2EF template -VTraversor2EF::VTraversor2EF(MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) +VTraversor2EF::VTraversor2EF(const MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickIncidentTraversal() ; if (quickTraversal != NULL) @@ -359,7 +359,7 @@ Dart VTraversor2EF::next() // VTraversor2EEaV template -VTraversor2EEaV::VTraversor2EEaV(MAP& map, Dart dart) : m(map),m_QLT(NULL) +VTraversor2EEaV::VTraversor2EEaV(const MAP& map, Dart dart) : m(map),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickAdjacentTraversal() ; if (quickTraversal != NULL) @@ -414,7 +414,7 @@ Dart VTraversor2EEaV::next() // VTraversor2EEaF template -VTraversor2EEaF::VTraversor2EEaF(MAP& map, Dart dart) : m(map),m_QLT(NULL) +VTraversor2EEaF::VTraversor2EEaF(const MAP& map, Dart dart) : m(map),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickAdjacentTraversal() ; if (quickTraversal != NULL) @@ -423,9 +423,12 @@ VTraversor2EEaF::VTraversor2EEaF(MAP& map, Dart dart) : m(map),m_QLT(NULL) } else { - start = m.phi1(dart) ; - stop1 = dart ; - stop2 = m.phi2(dart) ; + if (m.isBoundaryMarked2(dart)) + stop1 = m.phi2(dart); + else + stop1 = dart; + stop2 = m.phi2(stop1) ; + start = m.phi1(stop1); } } @@ -458,9 +461,14 @@ Dart VTraversor2EEaF::next() if(current != NIL) { current = m.phi1(current) ; - if(current == stop1) - current = m.phi1(stop2) ; - else if(current == stop2) + if (current == stop1) + { + if (!m.isBoundaryMarked2(stop2)) + current = m.phi1(stop2) ; + else + current=NIL; + } + else if (current == stop2) current = NIL ; } return current ; @@ -473,7 +481,7 @@ Dart VTraversor2EEaF::next() // VTraversor2FV template -VTraversor2FV::VTraversor2FV(MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) +VTraversor2FV::VTraversor2FV(const MAP& map, Dart dart) : m(map), start(dart),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickIncidentTraversal() ; if (quickTraversal != NULL) @@ -520,7 +528,7 @@ Dart VTraversor2FV::next() // VTraversor2FFaV template -VTraversor2FFaV::VTraversor2FFaV(MAP& map, Dart dart) : m(map),m_QLT(NULL) +VTraversor2FFaV::VTraversor2FFaV(const MAP& map, Dart dart) : m(map),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickAdjacentTraversal() ; if (quickTraversal != NULL) @@ -530,12 +538,12 @@ VTraversor2FFaV::VTraversor2FFaV(MAP& map, Dart dart) : m(map),m_QLT(NULL) else { start = m.phi2(m.phi_1(m.phi2(m.phi_1(dart)))) ; - current = start ; - if(start == dart) + while (start == dart) { - stop = m.phi2(m.phi_1(dart)) ; - start = next() ; + dart = m.phi1(dart); + start = m.phi2(m.phi_1(m.phi2(m.phi_1(dart)))) ; } + current = start ; stop = dart ; if(m.isBoundaryMarked2(start)) start = next() ; @@ -577,7 +585,8 @@ Dart VTraversor2FFaV::next() current = m.phi2(m.phi_1(m.phi2(m.phi_1(d)))) ; if(current == d) { - stop = m.phi2(m.phi_1(d)) ; + stop = m.phi1(d); + current = m.phi2(d); return next() ; } stop = d ; @@ -593,7 +602,7 @@ Dart VTraversor2FFaV::next() // VTraversor2FFaE template -VTraversor2FFaE::VTraversor2FFaE(MAP& map, Dart dart) : m(map),m_QLT(NULL) +VTraversor2FFaE::VTraversor2FFaE(const MAP& map, Dart dart) : m(map),m_QLT(NULL) { const AttributeMultiVector > >* quickTraversal = map.template getQuickAdjacentTraversal() ; if (quickTraversal != NULL) -- GitLab