0022550: Fixing data races
[occt.git] / src / CSLib / CSLib_NormalPolyDef.cxx
1 // File:        SingularityAna_PolyStyle.cxx
2 // Created:     Fri Aug 23 11:00:24 1996
3 // Author:      Benoit TANNIOU
4 //              <bt1@sgi65>
5
6
7 #include <CSLib_NormalPolyDef.ixx>
8 #include <PLib.hxx>
9
10 //=============================================================================
11 CSLib_NormalPolyDef::CSLib_NormalPolyDef(const Standard_Integer k0,
12                                                 const TColStd_Array1OfReal& li)
13 //=============================================================================
14  :myTABli(0,k0)
15 {
16   myK0=k0;
17   for(Standard_Integer i=0;i<=k0;i++)
18     myTABli(i)=li(i);
19 }
20
21 //=============================================================================
22 Standard_Boolean CSLib_NormalPolyDef::Value(const Standard_Real X,
23                                                  Standard_Real& F)
24 //=============================================================================
25 {
26   F=0.0;
27   Standard_Real co,si;
28   co=cos(X);
29   si=sin(X);
30
31   for(Standard_Integer i=0;i<=myK0;i++){
32     F=F+PLib::Bin(myK0,i)*pow(co,i)*pow(si,(myK0-i))*myTABli(i);
33   }
34   return Standard_True;
35 }
36
37 //=============================================================================
38 Standard_Boolean CSLib_NormalPolyDef::Derivative(const Standard_Real X,
39                                                       Standard_Real& D)
40 //=============================================================================
41 {
42   D=0.0;
43   Standard_Real co,si;
44   co=cos(X);
45   si=sin(X);
46   for(Standard_Integer i=0;i<=myK0;i++){
47     D=D+PLib::Bin(myK0,i)*pow(co,(i-1))*pow(si,(myK0-i-1))*(myK0*co*co-i);
48   }
49   return Standard_True;
50 }
51
52 //=============================================================================
53 Standard_Boolean CSLib_NormalPolyDef::Values(const Standard_Real X,
54                                                   Standard_Real& F,
55                                                   Standard_Real& D)
56 //=============================================================================
57 {
58   F=0;
59   D=0;
60   Standard_Real co,si;
61   co=cos(X);
62   si=sin(X);
63   for(Standard_Integer i=0;i<=myK0;i++){
64     F=F+PLib::Bin(myK0,i)*pow(co,i)*pow(si,(myK0-i))*myTABli(i);
65     D=D+PLib::Bin(myK0,i)*pow(co,(i-1))*
66         pow(si,(myK0-i-1))*(myK0*co*co-i)*myTABli(i);
67    }
68   return Standard_True;
69 }
70
71
72
73
74