Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/opencascade/Law.hxx was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // Created on: 1994-04-07
0002 // Created by: Isabelle GRIGNON
0003 // Copyright (c) 1994-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 _Law_HeaderFile
0018 #define _Law_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <NCollection_Array1.hxx>
0025 #include <NCollection_HArray1.hxx>
0026 #include <Standard_Integer.hxx>
0027 #include <Standard_Boolean.hxx>
0028 #include <Standard_Real.hxx>
0029 class Law_BSpFunc;
0030 class Law_Linear;
0031 class Law_BSpline;
0032 class Adaptor3d_Curve;
0033 
0034 //! Multiple services concerning 1d functions.
0035 class Law
0036 {
0037 public:
0038   DEFINE_STANDARD_ALLOC
0039 
0040   //! This algorithm searches the knot values corresponding to the
0041   //! splitting of a given B-spline law into several arcs with
0042   //! the same continuity. The continuity order is given at the
0043   //! construction time.
0044   //! Builds a 1d bspline that is near from Lin with null
0045   //! derivatives at the extremities.
0046   Standard_EXPORT static occ::handle<Law_BSpFunc> MixBnd(const occ::handle<Law_Linear>& Lin);
0047 
0048   //! Builds the poles of the 1d bspline that is near from
0049   //! Lin with null derivatives at the extremities.
0050   Standard_EXPORT static occ::handle<NCollection_HArray1<double>> MixBnd(
0051     const int                         Degree,
0052     const NCollection_Array1<double>& Knots,
0053     const NCollection_Array1<int>&    Mults,
0054     const occ::handle<Law_Linear>&    Lin);
0055 
0056   //! Builds the poles of the 1d bspline that is null on the
0057   //! right side of Knots(Index) (on the left if
0058   //! NulOnTheRight is false) and that is like a
0059   //! t*(1-t)(1-t) curve on the left side of Knots(Index)
0060   //! (on the right if NulOnTheRight is false). The result
0061   //! curve is C1 with a derivative equal to 1. at first
0062   //! parameter (-1 at last parameter if NulOnTheRight is
0063   //! false).
0064   //! Warning: Mults(Index) must greater or equal to degree-1.
0065   Standard_EXPORT static occ::handle<NCollection_HArray1<double>> MixTgt(
0066     const int                         Degree,
0067     const NCollection_Array1<double>& Knots,
0068     const NCollection_Array1<int>&    Mults,
0069     const bool                        NulOnTheRight,
0070     const int                         Index);
0071 
0072   //! Computes a 1d curve to reparametrize a curve. Its an
0073   //! interpolation of NbPoints points calculated at quasi
0074   //! constant abscissa.
0075   Standard_EXPORT static occ::handle<Law_BSpline> Reparametrize(const Adaptor3d_Curve& Curve,
0076                                                                 const double           First,
0077                                                                 const double           Last,
0078                                                                 const bool             HasDF,
0079                                                                 const bool             HasDL,
0080                                                                 const double           DFirst,
0081                                                                 const double           DLast,
0082                                                                 const bool             Rev,
0083                                                                 const int              NbPoints);
0084 
0085   //! Computes a 1d curve to scale a field of tangency.
0086   //! Value is 1. for t = (First+Last)/2 .
0087   //! If HasFirst value for t = First is VFirst (null derivative).
0088   //! If HasLast value for t = Last is VLast (null derivative).
0089   //!
0090   //! 1.                   _
0091   //! _/ \_
0092   //! __/     \__
0093   //! /
0094   //! VFirst    ____/
0095   //! VLast                        \____
0096   //! First                    Last
0097   Standard_EXPORT static occ::handle<Law_BSpline> Scale(const double First,
0098                                                         const double Last,
0099                                                         const bool   HasF,
0100                                                         const bool   HasL,
0101                                                         const double VFirst,
0102                                                         const double VLast);
0103 
0104   Standard_EXPORT static occ::handle<Law_BSpline> ScaleCub(const double First,
0105                                                            const double Last,
0106                                                            const bool   HasF,
0107                                                            const bool   HasL,
0108                                                            const double VFirst,
0109                                                            const double VLast);
0110 };
0111 
0112 #endif // _Law_HeaderFile