+ /*!
+ * \brief Return UV of a point inside a quadrilateral FACE by it's
+ * normalized parameters within a unit quadrangle and the
+ * corresponding projections on sub-shapes of the real-world FACE.
+ * The used calculation method is called Trans-Finite Interpolation (TFI).
+ * \param x,y - normalized parameters that should be in range [0,1]
+ * \param a0,a1,a2,a3 - UV of VERTEXes of the FACE == projections on VERTEXes
+ * \param p0,p1,p2,p3 - UV of the point projections on EDGEs of the FACE
+ * \return gp_XY - UV of the point on the FACE
+ *
+ * Y ^ Order of those UV in the FACE is as follows.
+ * |
+ * a3 p2 a2
+ * o---x-----o
+ * | : |
+ * | :UV |
+ * p3 x...O.....x p1
+ * | : |
+ * o---x-----o ----> X
+ * a0 p0 a1
+ */
+ inline static gp_XY calcTFI(double x, double y,
+ const gp_XY a0,const gp_XY a1,const gp_XY a2,const gp_XY a3,
+ const gp_XY p0,const gp_XY p1,const gp_XY p2,const gp_XY p3);
+
+ /*!
+ * \brief Same as "gp_XY calcTFI(...)" but in 3D
+ */
+ inline static gp_XYZ calcTFI(double x, double y,
+ const gp_XYZ a0,const gp_XYZ a1,const gp_XYZ a2,const gp_XYZ a3,
+ const gp_XYZ p0,const gp_XYZ p1,const gp_XYZ p2,const gp_XYZ p3);
+ /*!
+ * \brief Count nb of sub-shapes
+ * \param shape - the shape
+ * \param type - the type of sub-shapes to count
+ * \param ignoreSame - if true, use map not to count same shapes, esle use explorer
+ * \retval int - the calculated number
+ */
+ static int Count(const TopoDS_Shape& shape,
+ const TopAbs_ShapeEnum type,
+ const bool ignoreSame);
+