7fd59977 |
1 | // File: GeomFill_PlanFunc.cxx |
2 | // Created: Thu Oct 29 12:00:47 1998 |
3 | // Author: Philippe MANGIN |
4 | // <pmn@sgi29> |
5 | |
6 | |
7 | #include <GeomFill_PlanFunc.ixx> |
8 | |
9 | |
10 | GeomFill_PlanFunc::GeomFill_PlanFunc(const gp_Pnt& P, |
11 | const gp_Vec& V, |
12 | const Handle(Adaptor3d_HCurve)& C) : |
13 | myCurve(C) |
14 | { |
15 | myPnt = P.XYZ(); |
16 | myVec = V.XYZ(); |
17 | } |
18 | |
19 | |
20 | Standard_Boolean GeomFill_PlanFunc::Value(const Standard_Real X, |
21 | Standard_Real& F) |
22 | { |
23 | myCurve->D0(X, G); |
24 | V.SetLinearForm(-1, myPnt, G.XYZ()); |
25 | F = myVec.Dot(V); |
26 | return Standard_True; |
27 | } |
28 | |
29 | Standard_Boolean GeomFill_PlanFunc::Derivative(const Standard_Real X, |
30 | Standard_Real& D) |
31 | { |
32 | gp_Vec dg; |
33 | myCurve->D1(X, G, dg); |
34 | D = myVec.Dot(dg.XYZ()); |
35 | |
36 | return Standard_True; |
37 | } |
38 | |
39 | Standard_Boolean GeomFill_PlanFunc::Values(const Standard_Real X, |
40 | Standard_Real& F, |
41 | Standard_Real& D) |
42 | { |
43 | gp_Vec dg; |
44 | myCurve->D1(X, G, dg); |
45 | V.SetLinearForm(-1, myPnt, G.XYZ()); |
46 | F = myVec.Dot(V); |
47 | D = myVec.Dot(dg.XYZ()); |
48 | |
49 | return Standard_True; |
50 | } |
51 | |
52 | //void GeomFill_PlanFunc::D2(const Standard_Real X, |
53 | // Standard_Real& F, |
54 | // Standard_Real& D1, |
55 | // Standard_Real& D2) |
56 | void GeomFill_PlanFunc::D2(const Standard_Real , |
57 | Standard_Real& , |
58 | Standard_Real& , |
59 | Standard_Real& ) |
60 | { |
61 | } |
62 | |
63 | |
64 | void GeomFill_PlanFunc::DEDT(const Standard_Real X, |
65 | const gp_Vec& DPnt, |
66 | const gp_Vec& DVec, |
67 | Standard_Real& DFDT) |
68 | { |
69 | myCurve->D0(X, G); |
70 | V.SetLinearForm(-1, myPnt, G.XYZ()); |
71 | DFDT = DVec.Dot(V) - myVec.Dot(DPnt.XYZ()); |
72 | |
73 | } |
74 | |
75 | |
76 | void GeomFill_PlanFunc::D2E(const Standard_Real X, |
77 | const gp_Vec& DP, |
78 | // const gp_Vec& D2P, |
79 | const gp_Vec& , |
80 | const gp_Vec& DV, |
81 | // const gp_Vec& D2V, |
82 | const gp_Vec& , |
83 | Standard_Real& DFDT, |
84 | // Standard_Real& , |
85 | Standard_Real& D2FDT2, |
86 | // Standard_Real& D2FDTDX) |
87 | Standard_Real& ) |
88 | { |
89 | gp_Vec dg; |
90 | myCurve->D1(X, G, dg); |
91 | gp_XYZ DVDT; |
92 | V.SetLinearForm(-1, myPnt, G.XYZ()); |
93 | DVDT.SetLinearForm(-1, DP.XYZ(), G.XYZ()); |
94 | DFDT = DV.Dot(V) + myVec.Dot(DVDT); |
95 | |
96 | } |