00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef COREFINE_2D_PROPAGATION_HH
00025 #define COREFINE_2D_PROPAGATION_HH
00026
00027 #include "inline-macro.hh"
00028 #include "g-map-vertex.hh"
00029 #include "corefine.hh"
00030 #include "corefine-2d-tools.hh"
00031 #include "plane.hh"
00032 #include "edge-intersection.hh"
00033 #include "time.hh"
00034
00035 namespace GMap3d
00036 {
00037
00038 class DLL_COREFINEMENT CCorefine2dPropagation : public CCorefine
00039 {
00040 public:
00041
00042 CCorefine2dPropagation(CGMapVertex * AMap,
00043 const CPlane & APlane = CPlane(OZ, ORIGIN),
00044 bool ACalculateOrientation = true,
00045 TCoordinate AEpsilon = 1E-4, int AVertexDI = -1);
00046 virtual ~CCorefine2dPropagation();
00047
00048 virtual int corefine(CDart *& AMesh1, CDart *& AMesh2,
00049 std::bitset<NB_MARKS> ACopyMarks = 0);
00050
00051 const CTime & getInitialisationTime() const;
00052 const CTime & getOrientationTime() const;
00053 const CTime & getLocalizationTime() const;
00054 const CTime & getPropagationTime() const;
00055 const CTime & getAssemblyTime() const;
00056 const CTime & getCleaningTime() const;
00057 const CTime & getDoubleEdgesCleaningTime() const;
00058
00059 protected:
00060
00061 virtual void initMesh(CDart * AMesh);
00062 virtual void cleanMesh(CDart * AMesh);
00063
00064 virtual CVertex * getVertex(CDart * ADart);
00065 virtual void modifyVertex(CDart * ADart, const CVertex & AVertex);
00066
00067 virtual CDart * splitEdge(CDart * AEdge, const CVertex & AVertex);
00068
00069 virtual void weldVertices(CDart * AVertex1, CDart * AVertex2);
00070
00071 virtual void weldMultipleVertices(CDart * AVertex1, CDart * AVertex2);
00072
00073 virtual void applyModifications(CDart * AMesh);
00074
00075 protected:
00076
00077 CPlane FPlane;
00078 TProjection FBestProj;
00079
00080 CCorefine2dTools FTools;
00081
00082 int FVertexDI;
00083 int FAlpha1DI;
00084
00085 bool FCalculateOrientation;
00086 bool FLocalVertexDirectInfo;
00087
00088 int FNumberOfIntersections;
00089
00090 CTime FInitialisationTime;
00091 CTime FOrientationTime;
00092 CTime FLocalizationTime;
00093 CTime FPropagationTime;
00094 CTime FAssemblyTime;
00095 CTime FCleaningTime;
00096 CTime FDoubleEdgesCleaningTime;
00097 };
00098
00099 }
00100
00101 #include INCLUDE_INLINE("corefine-2d-propagation.icc")
00102
00103 #endif