27 #ifndef _SMESH_QUADRANGLE_2D_HXX_
28 #define _SMESH_QUADRANGLE_2D_HXX_
36 #include <TopoDS_Face.hxx>
37 #include <Bnd_B2d.hxx>
73 bool IsForced(
int nodeIndex )
const;
77 double Param(
int nodeIndex )
const;
79 gp_XY
Value2d(
double x )
const;
85 const std::vector<UVPtStruct>&
GetUVPtStruct(
bool isXConst=0,
double constValue=0)
const
88 grid->GetUVPtStruct( isXConst, constValue );
120 FaceQuadStruct (
const TopoDS_Face& F = TopoDS_Face(),
const std::string& nm=
"main" );
122 double&
U(
int i,
int j ) {
return UVPt( i, j ).
u; }
123 double&
V(
int i,
int j ) {
return UVPt( i, j ).
v; }
124 void shift (
size_t nb,
bool keepUnitOri,
bool keepGrid=
false );
126 bool findCell (
const gp_XY& uv,
int & i,
int & j );
127 bool isNear (
const gp_XY& uv,
int & i,
int & j,
int nbLoops=1 );
128 bool isEqual (
const gp_XY& uv,
int i,
int j );
129 void normPa2IJ(
double x,
double y,
int & i,
int & j );
130 void updateUV (
const gp_XY& uv,
int i,
int j,
bool isVertical );
132 typedef boost::shared_ptr<FaceQuadStruct>
Ptr;
142 const TopoDS_Shape& aShape,
146 const TopoDS_Shape& aShape);
149 const TopoDS_Shape & aShape,
153 const TopoDS_Shape& aShape,
154 const bool CreateQuadratic);
157 const TopoDS_Shape& aShape,
158 const bool considerMesh =
false,
161 static bool IsApplicable(
const TopoDS_Shape & aShape,
bool toCheckAll);
165 bool checkNbEdgesForEvaluate(
SMESH_Mesh& aMesh,
166 const TopoDS_Shape & aShape,
168 std::vector<int>& aNbNodes,
181 const TopoDS_Face& aFace);
184 const TopoDS_Face& aFace,
188 const TopoDS_Face& aFace,
192 const TopoDS_Face& aFace,
196 const TopoDS_Shape& aShape,
197 std::vector<int>& aNbNodes,
202 const TopoDS_Face& aFace,
211 int getCorners(
const TopoDS_Face& theFace,
213 std::list<TopoDS_Edge>& theWire,
214 std::vector<TopoDS_Vertex>& theVertices,
215 int & theNbDegenEdges,
216 const bool considerMesh);
218 bool getEnforcedUV();
220 bool addEnforcedNodes();
226 typedef std::map< StdMeshers_FaceSidePtr, std::vector< FaceQuadStruct::Ptr > >
TQuadsBySide;
253 double U()
const {
return uv.X(); }
254 double V()
const {
return uv.Y(); }
255 operator const gp_XY& () {
return uv; }