Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-18 09:20:06

0001 // Created on: 1991-09-09
0002 // Created by: Michel Chauvat
0003 // Copyright (c) 1991-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _ElSLib_HeaderFile
0018 #define _ElSLib_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <gp_Pnt.hxx>
0025 #include <gp_Vec.hxx>
0026 class gp_Pnt;
0027 class gp_Pln;
0028 class gp_Cone;
0029 class gp_Cylinder;
0030 class gp_Sphere;
0031 class gp_Torus;
0032 class gp_Vec;
0033 class gp_Ax3;
0034 class gp_Lin;
0035 class gp_Circ;
0036 
0037 //! Provides functions for basic geometric computation on
0038 //! elementary surfaces.
0039 //! This includes:
0040 //! -   calculation of a point or derived vector on a surface
0041 //! where the surface is provided by the gp package, or
0042 //! defined in canonical form (as in the gp package), and
0043 //! the point is defined with a parameter,
0044 //! -   evaluation of the parameters corresponding to a
0045 //! point on an elementary surface from gp,
0046 //! -   calculation of isoparametric curves on an elementary
0047 //! surface defined in canonical form (as in the gp package).
0048 //! Notes:
0049 //! -   ElSLib stands for Elementary Surfaces Library.
0050 //! -   If the surfaces provided by the gp package are not
0051 //! explicitly parameterized, they still have an implicit
0052 //! parameterization, similar to that which they infer on
0053 //! the equivalent Geom surfaces.
0054 //! Note: ElSLib stands for Elementary Surfaces Library.
0055 class ElSLib
0056 {
0057 public:
0058   DEFINE_STANDARD_ALLOC
0059 
0060   //! For elementary surfaces from the gp package (planes,
0061   //! cones, cylinders, spheres and tori), computes the point
0062   //! of parameters (U, V).
0063   static gp_Pnt Value(const double U, const double V, const gp_Pln& Pl);
0064 
0065   static gp_Pnt Value(const double U, const double V, const gp_Cone& C);
0066 
0067   static gp_Pnt Value(const double U, const double V, const gp_Cylinder& C);
0068 
0069   static gp_Pnt Value(const double U, const double V, const gp_Sphere& S);
0070 
0071   static gp_Pnt Value(const double U, const double V, const gp_Torus& T);
0072 
0073   //! For elementary surfaces from the gp package (planes,
0074   //! cones, cylinders, spheres and tori), computes the
0075   //! derivative vector of order Nu and Nv in the u and v
0076   //! parametric directions respectively, at the point of
0077   //! parameters (U, V).
0078   static gp_Vec DN(const double U, const double V, const gp_Pln& Pl, const int Nu, const int Nv);
0079 
0080   static gp_Vec DN(const double U, const double V, const gp_Cone& C, const int Nu, const int Nv);
0081 
0082   static gp_Vec DN(const double       U,
0083                    const double       V,
0084                    const gp_Cylinder& C,
0085                    const int          Nu,
0086                    const int          Nv);
0087 
0088   static gp_Vec DN(const double U, const double V, const gp_Sphere& S, const int Nu, const int Nv);
0089 
0090   static gp_Vec DN(const double U, const double V, const gp_Torus& T, const int Nu, const int Nv);
0091 
0092   //! For elementary surfaces from the gp package (planes,
0093   //! cones, cylinders, spheres and tori), computes the point P
0094   //! of parameters (U, V).inline
0095   static void D0(const double U, const double V, const gp_Pln& Pl, gp_Pnt& P);
0096 
0097   static void D0(const double U, const double V, const gp_Cone& C, gp_Pnt& P);
0098 
0099   static void D0(const double U, const double V, const gp_Cylinder& C, gp_Pnt& P);
0100 
0101   static void D0(const double U, const double V, const gp_Sphere& S, gp_Pnt& P);
0102 
0103   static void D0(const double U, const double V, const gp_Torus& T, gp_Pnt& P);
0104 
0105   //! For elementary surfaces from the gp package (planes,
0106   //! cones, cylinders, spheres and tori), computes:
0107   //! -   the point P of parameters (U, V), and
0108   //! -   the first derivative vectors Vu and Vv at this point in
0109   //! the u and v parametric directions respectively.
0110   static void D1(const double  U,
0111                  const double  V,
0112                  const gp_Pln& Pl,
0113                  gp_Pnt&       P,
0114                  gp_Vec&       Vu,
0115                  gp_Vec&       Vv);
0116 
0117   static void D1(const double   U,
0118                  const double   V,
0119                  const gp_Cone& C,
0120                  gp_Pnt&        P,
0121                  gp_Vec&        Vu,
0122                  gp_Vec&        Vv);
0123 
0124   static void D1(const double       U,
0125                  const double       V,
0126                  const gp_Cylinder& C,
0127                  gp_Pnt&            P,
0128                  gp_Vec&            Vu,
0129                  gp_Vec&            Vv);
0130 
0131   static void D1(const double     U,
0132                  const double     V,
0133                  const gp_Sphere& S,
0134                  gp_Pnt&          P,
0135                  gp_Vec&          Vu,
0136                  gp_Vec&          Vv);
0137 
0138   static void D1(const double    U,
0139                  const double    V,
0140                  const gp_Torus& T,
0141                  gp_Pnt&         P,
0142                  gp_Vec&         Vu,
0143                  gp_Vec&         Vv);
0144 
0145   //! For elementary surfaces from the gp package (cones,
0146   //! cylinders, spheres and tori), computes:
0147   //! -   the point P of parameters (U, V), and
0148   //! -   the first derivative vectors Vu and Vv at this point in
0149   //! the u and v parametric directions respectively, and
0150   //! -   the second derivative vectors Vuu, Vvv and Vuv at this point.
0151   static void D2(const double   U,
0152                  const double   V,
0153                  const gp_Cone& C,
0154                  gp_Pnt&        P,
0155                  gp_Vec&        Vu,
0156                  gp_Vec&        Vv,
0157                  gp_Vec&        Vuu,
0158                  gp_Vec&        Vvv,
0159                  gp_Vec&        Vuv);
0160 
0161   static void D2(const double       U,
0162                  const double       V,
0163                  const gp_Cylinder& C,
0164                  gp_Pnt&            P,
0165                  gp_Vec&            Vu,
0166                  gp_Vec&            Vv,
0167                  gp_Vec&            Vuu,
0168                  gp_Vec&            Vvv,
0169                  gp_Vec&            Vuv);
0170 
0171   static void D2(const double     U,
0172                  const double     V,
0173                  const gp_Sphere& S,
0174                  gp_Pnt&          P,
0175                  gp_Vec&          Vu,
0176                  gp_Vec&          Vv,
0177                  gp_Vec&          Vuu,
0178                  gp_Vec&          Vvv,
0179                  gp_Vec&          Vuv);
0180 
0181   static void D2(const double    U,
0182                  const double    V,
0183                  const gp_Torus& T,
0184                  gp_Pnt&         P,
0185                  gp_Vec&         Vu,
0186                  gp_Vec&         Vv,
0187                  gp_Vec&         Vuu,
0188                  gp_Vec&         Vvv,
0189                  gp_Vec&         Vuv);
0190 
0191   //! For elementary surfaces from the gp package (cones,
0192   //! cylinders, spheres and tori), computes:
0193   //! -   the point P of parameters (U,V), and
0194   //! -   the first derivative vectors Vu and Vv at this point in
0195   //! the u and v parametric directions respectively, and
0196   //! -   the second derivative vectors Vuu, Vvv and Vuv at
0197   //! this point, and
0198   //! -   the third derivative vectors Vuuu, Vvvv, Vuuv and
0199   //! Vuvv at this point.
0200   static void D3(const double   U,
0201                  const double   V,
0202                  const gp_Cone& C,
0203                  gp_Pnt&        P,
0204                  gp_Vec&        Vu,
0205                  gp_Vec&        Vv,
0206                  gp_Vec&        Vuu,
0207                  gp_Vec&        Vvv,
0208                  gp_Vec&        Vuv,
0209                  gp_Vec&        Vuuu,
0210                  gp_Vec&        Vvvv,
0211                  gp_Vec&        Vuuv,
0212                  gp_Vec&        Vuvv);
0213 
0214   static void D3(const double       U,
0215                  const double       V,
0216                  const gp_Cylinder& C,
0217                  gp_Pnt&            P,
0218                  gp_Vec&            Vu,
0219                  gp_Vec&            Vv,
0220                  gp_Vec&            Vuu,
0221                  gp_Vec&            Vvv,
0222                  gp_Vec&            Vuv,
0223                  gp_Vec&            Vuuu,
0224                  gp_Vec&            Vvvv,
0225                  gp_Vec&            Vuuv,
0226                  gp_Vec&            Vuvv);
0227 
0228   static void D3(const double     U,
0229                  const double     V,
0230                  const gp_Sphere& S,
0231                  gp_Pnt&          P,
0232                  gp_Vec&          Vu,
0233                  gp_Vec&          Vv,
0234                  gp_Vec&          Vuu,
0235                  gp_Vec&          Vvv,
0236                  gp_Vec&          Vuv,
0237                  gp_Vec&          Vuuu,
0238                  gp_Vec&          Vvvv,
0239                  gp_Vec&          Vuuv,
0240                  gp_Vec&          Vuvv);
0241 
0242   //! Surface evaluation
0243   //! The following functions compute the point and the
0244   //! derivatives on elementary surfaces defined with their
0245   //! geometric characteristics.
0246   //! You don't need to create the surface to use these functions.
0247   //! These functions are called by the previous ones.
0248   //! Example:
0249   //! A cylinder is defined with its position and its radius.
0250   static void D3(const double    U,
0251                  const double    V,
0252                  const gp_Torus& T,
0253                  gp_Pnt&         P,
0254                  gp_Vec&         Vu,
0255                  gp_Vec&         Vv,
0256                  gp_Vec&         Vuu,
0257                  gp_Vec&         Vvv,
0258                  gp_Vec&         Vuv,
0259                  gp_Vec&         Vuuu,
0260                  gp_Vec&         Vvvv,
0261                  gp_Vec&         Vuuv,
0262                  gp_Vec&         Vuvv);
0263 
0264   Standard_EXPORT static gp_Pnt PlaneValue(const double U, const double V, const gp_Ax3& Pos);
0265 
0266   Standard_EXPORT static gp_Pnt CylinderValue(const double  U,
0267                                               const double  V,
0268                                               const gp_Ax3& Pos,
0269                                               const double  Radius);
0270 
0271   Standard_EXPORT static gp_Pnt ConeValue(const double  U,
0272                                           const double  V,
0273                                           const gp_Ax3& Pos,
0274                                           const double  Radius,
0275                                           const double  SAngle);
0276 
0277   Standard_EXPORT static gp_Pnt SphereValue(const double  U,
0278                                             const double  V,
0279                                             const gp_Ax3& Pos,
0280                                             const double  Radius);
0281 
0282   Standard_EXPORT static gp_Pnt TorusValue(const double  U,
0283                                            const double  V,
0284                                            const gp_Ax3& Pos,
0285                                            const double  MajorRadius,
0286                                            const double  MinorRadius);
0287 
0288   Standard_EXPORT static gp_Vec PlaneDN(const double  U,
0289                                         const double  V,
0290                                         const gp_Ax3& Pos,
0291                                         const int     Nu,
0292                                         const int     Nv);
0293 
0294   Standard_EXPORT static gp_Vec CylinderDN(const double  U,
0295                                            const double  V,
0296                                            const gp_Ax3& Pos,
0297                                            const double  Radius,
0298                                            const int     Nu,
0299                                            const int     Nv);
0300 
0301   Standard_EXPORT static gp_Vec ConeDN(const double  U,
0302                                        const double  V,
0303                                        const gp_Ax3& Pos,
0304                                        const double  Radius,
0305                                        const double  SAngle,
0306                                        const int     Nu,
0307                                        const int     Nv);
0308 
0309   Standard_EXPORT static gp_Vec SphereDN(const double  U,
0310                                          const double  V,
0311                                          const gp_Ax3& Pos,
0312                                          const double  Radius,
0313                                          const int     Nu,
0314                                          const int     Nv);
0315 
0316   Standard_EXPORT static gp_Vec TorusDN(const double  U,
0317                                         const double  V,
0318                                         const gp_Ax3& Pos,
0319                                         const double  MajorRadius,
0320                                         const double  MinorRadius,
0321                                         const int     Nu,
0322                                         const int     Nv);
0323 
0324   Standard_EXPORT static void PlaneD0(const double U, const double V, const gp_Ax3& Pos, gp_Pnt& P);
0325 
0326   Standard_EXPORT static void ConeD0(const double  U,
0327                                      const double  V,
0328                                      const gp_Ax3& Pos,
0329                                      const double  Radius,
0330                                      const double  SAngle,
0331                                      gp_Pnt&       P);
0332 
0333   Standard_EXPORT static void CylinderD0(const double  U,
0334                                          const double  V,
0335                                          const gp_Ax3& Pos,
0336                                          const double  Radius,
0337                                          gp_Pnt&       P);
0338 
0339   Standard_EXPORT static void SphereD0(const double  U,
0340                                        const double  V,
0341                                        const gp_Ax3& Pos,
0342                                        const double  Radius,
0343                                        gp_Pnt&       P);
0344 
0345   Standard_EXPORT static void TorusD0(const double  U,
0346                                       const double  V,
0347                                       const gp_Ax3& Pos,
0348                                       const double  MajorRadius,
0349                                       const double  MinorRadius,
0350                                       gp_Pnt&       P);
0351 
0352   Standard_EXPORT static void PlaneD1(const double  U,
0353                                       const double  V,
0354                                       const gp_Ax3& Pos,
0355                                       gp_Pnt&       P,
0356                                       gp_Vec&       Vu,
0357                                       gp_Vec&       Vv);
0358 
0359   Standard_EXPORT static void ConeD1(const double  U,
0360                                      const double  V,
0361                                      const gp_Ax3& Pos,
0362                                      const double  Radius,
0363                                      const double  SAngle,
0364                                      gp_Pnt&       P,
0365                                      gp_Vec&       Vu,
0366                                      gp_Vec&       Vv);
0367 
0368   Standard_EXPORT static void CylinderD1(const double  U,
0369                                          const double  V,
0370                                          const gp_Ax3& Pos,
0371                                          const double  Radius,
0372                                          gp_Pnt&       P,
0373                                          gp_Vec&       Vu,
0374                                          gp_Vec&       Vv);
0375 
0376   Standard_EXPORT static void SphereD1(const double  U,
0377                                        const double  V,
0378                                        const gp_Ax3& Pos,
0379                                        const double  Radius,
0380                                        gp_Pnt&       P,
0381                                        gp_Vec&       Vu,
0382                                        gp_Vec&       Vv);
0383 
0384   Standard_EXPORT static void TorusD1(const double  U,
0385                                       const double  V,
0386                                       const gp_Ax3& Pos,
0387                                       const double  MajorRadius,
0388                                       const double  MinorRadius,
0389                                       gp_Pnt&       P,
0390                                       gp_Vec&       Vu,
0391                                       gp_Vec&       Vv);
0392 
0393   Standard_EXPORT static void ConeD2(const double  U,
0394                                      const double  V,
0395                                      const gp_Ax3& Pos,
0396                                      const double  Radius,
0397                                      const double  SAngle,
0398                                      gp_Pnt&       P,
0399                                      gp_Vec&       Vu,
0400                                      gp_Vec&       Vv,
0401                                      gp_Vec&       Vuu,
0402                                      gp_Vec&       Vvv,
0403                                      gp_Vec&       Vuv);
0404 
0405   Standard_EXPORT static void CylinderD2(const double  U,
0406                                          const double  V,
0407                                          const gp_Ax3& Pos,
0408                                          const double  Radius,
0409                                          gp_Pnt&       P,
0410                                          gp_Vec&       Vu,
0411                                          gp_Vec&       Vv,
0412                                          gp_Vec&       Vuu,
0413                                          gp_Vec&       Vvv,
0414                                          gp_Vec&       Vuv);
0415 
0416   Standard_EXPORT static void SphereD2(const double  U,
0417                                        const double  V,
0418                                        const gp_Ax3& Pos,
0419                                        const double  Radius,
0420                                        gp_Pnt&       P,
0421                                        gp_Vec&       Vu,
0422                                        gp_Vec&       Vv,
0423                                        gp_Vec&       Vuu,
0424                                        gp_Vec&       Vvv,
0425                                        gp_Vec&       Vuv);
0426 
0427   Standard_EXPORT static void TorusD2(const double  U,
0428                                       const double  V,
0429                                       const gp_Ax3& Pos,
0430                                       const double  MajorRadius,
0431                                       const double  MinorRadius,
0432                                       gp_Pnt&       P,
0433                                       gp_Vec&       Vu,
0434                                       gp_Vec&       Vv,
0435                                       gp_Vec&       Vuu,
0436                                       gp_Vec&       Vvv,
0437                                       gp_Vec&       Vuv);
0438 
0439   Standard_EXPORT static void ConeD3(const double  U,
0440                                      const double  V,
0441                                      const gp_Ax3& Pos,
0442                                      const double  Radius,
0443                                      const double  SAngle,
0444                                      gp_Pnt&       P,
0445                                      gp_Vec&       Vu,
0446                                      gp_Vec&       Vv,
0447                                      gp_Vec&       Vuu,
0448                                      gp_Vec&       Vvv,
0449                                      gp_Vec&       Vuv,
0450                                      gp_Vec&       Vuuu,
0451                                      gp_Vec&       Vvvv,
0452                                      gp_Vec&       Vuuv,
0453                                      gp_Vec&       Vuvv);
0454 
0455   Standard_EXPORT static void CylinderD3(const double  U,
0456                                          const double  V,
0457                                          const gp_Ax3& Pos,
0458                                          const double  Radius,
0459                                          gp_Pnt&       P,
0460                                          gp_Vec&       Vu,
0461                                          gp_Vec&       Vv,
0462                                          gp_Vec&       Vuu,
0463                                          gp_Vec&       Vvv,
0464                                          gp_Vec&       Vuv,
0465                                          gp_Vec&       Vuuu,
0466                                          gp_Vec&       Vvvv,
0467                                          gp_Vec&       Vuuv,
0468                                          gp_Vec&       Vuvv);
0469 
0470   Standard_EXPORT static void SphereD3(const double  U,
0471                                        const double  V,
0472                                        const gp_Ax3& Pos,
0473                                        const double  Radius,
0474                                        gp_Pnt&       P,
0475                                        gp_Vec&       Vu,
0476                                        gp_Vec&       Vv,
0477                                        gp_Vec&       Vuu,
0478                                        gp_Vec&       Vvv,
0479                                        gp_Vec&       Vuv,
0480                                        gp_Vec&       Vuuu,
0481                                        gp_Vec&       Vvvv,
0482                                        gp_Vec&       Vuuv,
0483                                        gp_Vec&       Vuvv);
0484 
0485   //! The following functions compute the parametric values
0486   //! corresponding to a given point on a elementary surface.
0487   //! The point should be on the surface.
0488   Standard_EXPORT static void TorusD3(const double  U,
0489                                       const double  V,
0490                                       const gp_Ax3& Pos,
0491                                       const double  MajorRadius,
0492                                       const double  MinorRadius,
0493                                       gp_Pnt&       P,
0494                                       gp_Vec&       Vu,
0495                                       gp_Vec&       Vv,
0496                                       gp_Vec&       Vuu,
0497                                       gp_Vec&       Vvv,
0498                                       gp_Vec&       Vuv,
0499                                       gp_Vec&       Vuuu,
0500                                       gp_Vec&       Vvvv,
0501                                       gp_Vec&       Vuuv,
0502                                       gp_Vec&       Vuvv);
0503 
0504   //! parametrization
0505   //! P (U, V) =
0506   //! Pl.Location() + U * Pl.XDirection() + V * Pl.YDirection()
0507   static void Parameters(const gp_Pln& Pl, const gp_Pnt& P, double& U, double& V);
0508 
0509   //! parametrization
0510   //! P (U, V) = Location + V * ZDirection +
0511   //! Radius * (std::cos(U) * XDirection + Sin (U) * YDirection)
0512   static void Parameters(const gp_Cylinder& C, const gp_Pnt& P, double& U, double& V);
0513 
0514   //! parametrization
0515   //! P (U, V) = Location + V * ZDirection +
0516   //! (Radius + V * Tan (SemiAngle)) *
0517   //! (std::cos(U) * XDirection + std::sin(U) * YDirection)
0518   static void Parameters(const gp_Cone& C, const gp_Pnt& P, double& U, double& V);
0519 
0520   //! parametrization
0521   //! P (U, V) = Location +
0522   //! Radius * Cos (V) * (Cos (U) * XDirection + Sin (U) * YDirection) +
0523   //! Radius * Sin (V) * ZDirection
0524   static void Parameters(const gp_Sphere& S, const gp_Pnt& P, double& U, double& V);
0525 
0526   //! parametrization
0527   //! P (U, V) = Location +
0528   //! (MajorRadius + MinorRadius * std::cos(U)) *
0529   //! (std::cos(V) * XDirection - std::sin(V) * YDirection) +
0530   //! MinorRadius * std::sin(U) * ZDirection
0531   static void Parameters(const gp_Torus& T, const gp_Pnt& P, double& U, double& V);
0532 
0533   //! parametrization
0534   //! P (U, V) =
0535   //! Pl.Location() + U * Pl.XDirection() + V * Pl.YDirection()
0536   Standard_EXPORT static void PlaneParameters(const gp_Ax3& Pos,
0537                                               const gp_Pnt& P,
0538                                               double&       U,
0539                                               double&       V);
0540 
0541   //! parametrization
0542   //! P (U, V) = Location + V * ZDirection +
0543   //! Radius * (std::cos(U) * XDirection + Sin (U) * YDirection)
0544   Standard_EXPORT static void CylinderParameters(const gp_Ax3& Pos,
0545                                                  const double  Radius,
0546                                                  const gp_Pnt& P,
0547                                                  double&       U,
0548                                                  double&       V);
0549 
0550   //! parametrization
0551   //! P (U, V) = Location + V * ZDirection +
0552   //! (Radius + V * Tan (SemiAngle)) *
0553   //! (std::cos(U) * XDirection + std::sin(U) * YDirection)
0554   Standard_EXPORT static void ConeParameters(const gp_Ax3& Pos,
0555                                              const double  Radius,
0556                                              const double  SAngle,
0557                                              const gp_Pnt& P,
0558                                              double&       U,
0559                                              double&       V);
0560 
0561   //! parametrization
0562   //! P (U, V) = Location +
0563   //! Radius * Cos (V) * (Cos (U) * XDirection + Sin (U) * YDirection) +
0564   //! Radius * Sin (V) * ZDirection
0565   Standard_EXPORT static void SphereParameters(const gp_Ax3& Pos,
0566                                                const double  Radius,
0567                                                const gp_Pnt& P,
0568                                                double&       U,
0569                                                double&       V);
0570 
0571   //! parametrization
0572   //! P (U, V) = Location +
0573   //! (MajorRadius + MinorRadius * std::cos(U)) *
0574   //! (std::cos(V) * XDirection - std::sin(V) * YDirection) +
0575   //! MinorRadius * std::sin(U) * ZDirection
0576   Standard_EXPORT static void TorusParameters(const gp_Ax3& Pos,
0577                                               const double  MajorRadius,
0578                                               const double  MinorRadius,
0579                                               const gp_Pnt& P,
0580                                               double&       U,
0581                                               double&       V);
0582 
0583   //! compute the U Isoparametric gp_Lin of the plane.
0584   Standard_EXPORT static gp_Lin PlaneUIso(const gp_Ax3& Pos, const double U);
0585 
0586   //! compute the U Isoparametric gp_Lin of the cylinder.
0587   Standard_EXPORT static gp_Lin CylinderUIso(const gp_Ax3& Pos,
0588                                              const double  Radius,
0589                                              const double  U);
0590 
0591   //! compute the U Isoparametric gp_Lin of the cone.
0592   Standard_EXPORT static gp_Lin ConeUIso(const gp_Ax3& Pos,
0593                                          const double  Radius,
0594                                          const double  SAngle,
0595                                          const double  U);
0596 
0597   //! compute the U Isoparametric gp_Circ of the sphere,
0598   //! (the meridian is not trimmed).
0599   Standard_EXPORT static gp_Circ SphereUIso(const gp_Ax3& Pos, const double Radius, const double U);
0600 
0601   //! compute the U Isoparametric gp_Circ of the torus.
0602   Standard_EXPORT static gp_Circ TorusUIso(const gp_Ax3& Pos,
0603                                            const double  MajorRadius,
0604                                            const double  MinorRadius,
0605                                            const double  U);
0606 
0607   //! compute the V Isoparametric gp_Lin of the plane.
0608   Standard_EXPORT static gp_Lin PlaneVIso(const gp_Ax3& Pos, const double V);
0609 
0610   //! compute the V Isoparametric gp_Circ of the cylinder.
0611   Standard_EXPORT static gp_Circ CylinderVIso(const gp_Ax3& Pos,
0612                                               const double  Radius,
0613                                               const double  V);
0614 
0615   //! compute the V Isoparametric gp_Circ of the cone.
0616   Standard_EXPORT static gp_Circ ConeVIso(const gp_Ax3& Pos,
0617                                           const double  Radius,
0618                                           const double  SAngle,
0619                                           const double  V);
0620 
0621   //! compute the V Isoparametric gp_Circ of the sphere,
0622   //! (the meridian is not trimmed).
0623   Standard_EXPORT static gp_Circ SphereVIso(const gp_Ax3& Pos, const double Radius, const double V);
0624 
0625   //! compute the V Isoparametric gp_Circ of the torus.
0626   Standard_EXPORT static gp_Circ TorusVIso(const gp_Ax3& Pos,
0627                                            const double  MajorRadius,
0628                                            const double  MinorRadius,
0629                                            const double  V);
0630 };
0631 
0632 #include <ElSLib.lxx>
0633 
0634 #endif // _ElSLib_HeaderFile