0023024: Update headers of OCCT files
[occt.git] / src / CSLib / CSLib_NormalPolyDef.cxx
1 // Created on: 1996-08-23
2 // Created by: Benoit TANNIOU
3 // Copyright (c) 1996-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21
22
23 #include <CSLib_NormalPolyDef.ixx>
24 #include <PLib.hxx>
25
26 //=============================================================================
27 CSLib_NormalPolyDef::CSLib_NormalPolyDef(const Standard_Integer k0,
28                                                 const TColStd_Array1OfReal& li)
29 //=============================================================================
30  :myTABli(0,k0)
31 {
32   myK0=k0;
33   for(Standard_Integer i=0;i<=k0;i++)
34     myTABli(i)=li(i);
35 }
36
37 //=============================================================================
38 Standard_Boolean CSLib_NormalPolyDef::Value(const Standard_Real X,
39                                                  Standard_Real& F)
40 //=============================================================================
41 {
42   F=0.0;
43   Standard_Real co,si;
44   co=cos(X);
45   si=sin(X);
46
47   for(Standard_Integer i=0;i<=myK0;i++){
48     F=F+PLib::Bin(myK0,i)*pow(co,i)*pow(si,(myK0-i))*myTABli(i);
49   }
50   return Standard_True;
51 }
52
53 //=============================================================================
54 Standard_Boolean CSLib_NormalPolyDef::Derivative(const Standard_Real X,
55                                                       Standard_Real& D)
56 //=============================================================================
57 {
58   D=0.0;
59   Standard_Real co,si;
60   co=cos(X);
61   si=sin(X);
62   for(Standard_Integer i=0;i<=myK0;i++){
63     D=D+PLib::Bin(myK0,i)*pow(co,(i-1))*pow(si,(myK0-i-1))*(myK0*co*co-i);
64   }
65   return Standard_True;
66 }
67
68 //=============================================================================
69 Standard_Boolean CSLib_NormalPolyDef::Values(const Standard_Real X,
70                                                   Standard_Real& F,
71                                                   Standard_Real& D)
72 //=============================================================================
73 {
74   F=0;
75   D=0;
76   Standard_Real co,si;
77   co=cos(X);
78   si=sin(X);
79   for(Standard_Integer i=0;i<=myK0;i++){
80     F=F+PLib::Bin(myK0,i)*pow(co,i)*pow(si,(myK0-i))*myTABli(i);
81     D=D+PLib::Bin(myK0,i)*pow(co,(i-1))*
82         pow(si,(myK0-i-1))*(myK0*co*co-i)*myTABli(i);
83    }
84   return Standard_True;
85 }
86
87
88
89
90