Salome HOME
NRI : Change lGeometryClient by lGEOMClient.
[modules/smesh.git] / src / SMESH / SMESH_Quadrangle_2D.hxx
1 //=============================================================================
2 // File      : SMESH_Quadrangle_2D.hxx
3 // Created   : sam mai 18 08:11:36 CEST 2002
4 // Author    : Paul RASCLE, EDF
5 // Project   : SALOME
6 // Copyright : EDF 2002
7 // $Header$
8 //=============================================================================
9
10 #ifndef _SMESH_QUADRANGLE_2D_HXX_
11 #define _SMESH_QUADRANGLE_2D_HXX_
12
13 #include "SMESH_2D_Algo.hxx"
14 #include "SMESH_Mesh.hxx"
15 #include "Utils_SALOME_Exception.hxx"
16
17 typedef struct uvPtStruct
18 {
19   double param;
20   double normParam;
21   double u; // original 2d parameter
22   double v;
23   double x; // 2d parameter, normalized [0,1]
24   double y; 
25   int nodeId;
26 } UVPtStruct;
27
28 typedef struct faceQuadStruct
29 {
30   int nbPts[4];
31   TopoDS_Edge edge[4];
32   double first[4];
33   double last[4];
34   bool isEdgeForward[4];
35   UVPtStruct* uv_edges[4];
36   UVPtStruct* uv_grid;
37 } FaceQuadStruct;
38
39 class SMESH_Quadrangle_2D:
40   public SMESH_2D_Algo
41 {
42 public:
43   SMESH_Quadrangle_2D(int hypId, int studyId, SMESH_Gen* gen);
44   virtual ~SMESH_Quadrangle_2D();
45
46   virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
47                                const TopoDS_Shape& aShape);
48
49   virtual bool Compute(SMESH_Mesh& aMesh,
50                        const TopoDS_Shape& aShape)
51     throw (SALOME_Exception);
52
53   FaceQuadStruct* CheckAnd2Dcompute(SMESH_Mesh& aMesh,
54                                     const TopoDS_Shape& aShape)
55     throw (SALOME_Exception);
56
57   void QuadDelete(FaceQuadStruct* quad);
58
59   ostream & SaveTo(ostream & save);
60   istream & LoadFrom(istream & load);
61   friend ostream & operator << (ostream & save, SMESH_Quadrangle_2D & hyp);
62   friend istream & operator >> (istream & load, SMESH_Quadrangle_2D & hyp);
63
64 protected:
65
66   void SetNormalizedGrid(SMESH_Mesh& aMesh,
67                          const TopoDS_Shape& aShape,
68                          FaceQuadStruct* quad)
69     throw (SALOME_Exception);
70
71   UVPtStruct* LoadEdgePoints(SMESH_Mesh& aMesh,
72                              const TopoDS_Face& F,
73                              const TopoDS_Edge& E,
74                              double first,
75                              double last);
76 //                           bool isForward);
77
78 //   FaceQuadStruct _quadDesc;
79 };
80
81 #endif