Integration of OCCT 6.5.0 from SVN
[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   PLib::Binomial(myK0);
31
32   for(Standard_Integer i=0;i<=myK0;i++){
33     F=F+PLib::Bin(myK0,i)*pow(co,i)*pow(si,(myK0-i))*myTABli(i);
34   }
35   return Standard_True;
36 }
37
38 //=============================================================================
39 Standard_Boolean CSLib_NormalPolyDef::Derivative(const Standard_Real X,
40                                                       Standard_Real& D)
41 //=============================================================================
42 {
43   D=0.0;
44   Standard_Real co,si;
45   co=cos(X);
46   si=sin(X);
47   for(Standard_Integer i=0;i<=myK0;i++){
48     D=D+PLib::Bin(myK0,i)*pow(co,(i-1))*pow(si,(myK0-i-1))*(myK0*co*co-i);
49   }
50   return Standard_True;
51 }
52
53 //=============================================================================
54 Standard_Boolean CSLib_NormalPolyDef::Values(const Standard_Real X,
55                                                   Standard_Real& F,
56                                                   Standard_Real& D)
57 //=============================================================================
58 {
59   F=0;
60   D=0;
61   Standard_Real co,si;
62   co=cos(X);
63   si=sin(X);
64   for(Standard_Integer i=0;i<=myK0;i++){
65     F=F+PLib::Bin(myK0,i)*pow(co,i)*pow(si,(myK0-i))*myTABli(i);
66     D=D+PLib::Bin(myK0,i)*pow(co,(i-1))*
67         pow(si,(myK0-i-1))*(myK0*co*co-i)*myTABli(i);
68    }
69   return Standard_True;
70 }
71
72
73
74
75