Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-17 09:19:48

0001 // Copyright (c) 1993-1999 Matra Datavision
0002 // Copyright (c) 1999-2024 OPEN CASCADE SAS
0003 //
0004 // This file is part of Open CASCADE Technology software library.
0005 //
0006 // This library is free software; you can redistribute it and/or modify it under
0007 // the terms of the GNU Lesser General Public License version 2.1 as published
0008 // by the Free Software Foundation, with special exception defined in the file
0009 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0010 // distribution for complete text of the license and disclaimer of any warranty.
0011 //
0012 // Alternatively, this file may be used under the terms of Open CASCADE
0013 // commercial license or contractual agreement.
0014 
0015 #ifndef _BRepBlend_CSWalking_HeaderFile
0016 #define _BRepBlend_CSWalking_HeaderFile
0017 
0018 #include <Adaptor3d_Curve.hxx>
0019 #include <Adaptor3d_Surface.hxx>
0020 #include <BRepBlend_PointOnRst.hxx>
0021 #include <NCollection_Sequence.hxx>
0022 #include <Blend_Point.hxx>
0023 #include <Blend_Status.hxx>
0024 #include <NCollection_Array1.hxx>
0025 #include <NCollection_HArray1.hxx>
0026 #include <math_Vector.hxx>
0027 
0028 class BRepBlend_Line;
0029 class Adaptor3d_TopolTool;
0030 class StdFail_NotDone;
0031 class Adaptor3d_HVertex;
0032 class BRepBlend_HCurve2dTool;
0033 class Adaptor3d_HSurfaceTool;
0034 class BRepBlend_HCurveTool;
0035 class BRepBlend_BlendTool;
0036 class BRepBlend_PointOnRst;
0037 class BRepBlend_Extremity;
0038 class Blend_CSFunction;
0039 class IntSurf_Transition;
0040 class gp_Pnt;
0041 class gp_Pnt2d;
0042 class gp_Vec;
0043 class gp_Vec2d;
0044 
0045 class BRepBlend_CSWalking
0046 {
0047 public:
0048   DEFINE_STANDARD_ALLOC
0049 
0050   Standard_EXPORT BRepBlend_CSWalking(const occ::handle<Adaptor3d_Curve>&     Curv,
0051                                       const occ::handle<Adaptor3d_Surface>&   Surf,
0052                                       const occ::handle<Adaptor3d_TopolTool>& Domain);
0053 
0054   Standard_EXPORT void Perform(Blend_CSFunction&  F,
0055                                const double       Pdep,
0056                                const double       Pmax,
0057                                const double       MaxStep,
0058                                const double       Tol3d,
0059                                const double       TolGuide,
0060                                const math_Vector& Soldep,
0061                                const double       Fleche,
0062                                const bool         Appro = false);
0063 
0064   Standard_EXPORT bool Complete(Blend_CSFunction& F, const double Pmin);
0065 
0066   bool IsDone() const;
0067 
0068   const occ::handle<BRepBlend_Line>& Line() const;
0069 
0070 private:
0071   Standard_EXPORT void InternalPerform(Blend_CSFunction& F, math_Vector& Sol, const double Bound);
0072 
0073   Standard_EXPORT void Transition(const occ::handle<Adaptor2d_Curve2d>& A,
0074                                   const double                          Param,
0075                                   IntSurf_Transition&                   TLine,
0076                                   IntSurf_Transition&                   TArc);
0077 
0078   Standard_EXPORT void MakeExtremity(BRepBlend_Extremity&                  Extrem,
0079                                      const int                             Index,
0080                                      const double                          Param,
0081                                      const bool                            IsVtx,
0082                                      const occ::handle<Adaptor3d_HVertex>& Vtx);
0083 
0084   Standard_EXPORT Blend_Status CheckDeflectionOnSurf(const gp_Pnt&   Psurf,
0085                                                      const gp_Pnt2d& Ponsurf,
0086                                                      const gp_Vec&   Tgsurf,
0087                                                      const gp_Vec2d& Tgonsurf);
0088 
0089   Standard_EXPORT Blend_Status CheckDeflectionOnCurv(const gp_Pnt& Pcurv,
0090                                                      const double  Poncurv,
0091                                                      const gp_Vec& Tgcurv);
0092 
0093   Standard_EXPORT Blend_Status TestArret(Blend_CSFunction&  F,
0094                                          const math_Vector& Sol,
0095                                          const bool         TestDeflection,
0096                                          const Blend_Status State);
0097 
0098   bool                                     done;
0099   occ::handle<BRepBlend_Line>              line;
0100   occ::handle<Adaptor3d_Surface>           surf;
0101   occ::handle<Adaptor3d_Curve>             curv;
0102   occ::handle<Adaptor3d_TopolTool>         domain;
0103   double                                   tolpoint3d;
0104   double                                   tolgui;
0105   double                                   pasmax;
0106   double                                   fleche;
0107   double                                   param;
0108   double                                   firstparam;
0109   occ::handle<NCollection_HArray1<double>> firstsol;
0110   Blend_Point                              previousP;
0111   bool                                     rebrou;
0112   bool                                     iscomplete;
0113   bool                                     comptra;
0114   double                                   sens;
0115 };
0116 
0117 #endif // _BRepBlend_CSWalking_HeaderFile