00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef COREFINE_SEGMENTS_SWEEPING_HH
00026 #define COREFINE_SEGMENTS_SWEEPING_HH
00027
00028 #include "sweeping-comparators.hh"
00029 #include "vertex.hh"
00030 #include <set>
00031
00032 #define LEX_SET std::multiset<CDartVertex*, CDartLexicoCompare>
00033 #define VERT_SET std::multiset<CDartVertex*, CDartVertexerticalCompare>
00034 #define ANG_SET std::multiset<CDartVertex*, CDartAngularCompare>
00035 #define LEX_IT LEX_SET::iterator
00036 #define VERT_IT VERT_SET::iterator
00037 #define ANG_IT ANG_SET::iterator
00038
00039 namespace GMap3d
00040 {
00041 class CDart;
00042 class CDartVertex;
00043 class CGMapVertex;
00044
00045 class CCorefineSegmentsSweeping
00046 {
00047 public:
00049
00051 CCorefineSegmentsSweeping(CGMapVertex* AMap);
00052
00054 virtual ~CCorefineSegmentsSweeping();
00055
00063 void corefine(CDart* ADart1, CDart* ADart2, const CVertex & ANormalVector);
00064
00065 protected:
00077 VERT_IT findElementInSweepingSet(VERT_SET & ASweepingSet, CDart* AElement);
00078
00101 void manageEdgesIntersection(CDart* ADart1, CDart* ADart2,
00102 LEX_SET & AEventSet,
00103 const CDartLexicoCompare & ALexComparator,
00104 VERT_SET & ASweepingSet,
00105 int AExtremity1,
00106 int AMesh1,
00107 int ADirectVertex,
00108 const CVertex & ANormalVector);
00109
00110 private:
00111 CGMapVertex* FMap;
00112 };
00113
00114 }
00115
00116 #endif // COREFINE_SEGMENTS_SWEEPING_HH
00117