7fd59977 |
1 | -- File: Extrema_ExtPExtS.cdl |
2 | -- Created: Thu Sep 16 16:53:38 1999 |
3 | -- Author: Edward AGAPOV |
4 | -- <eap@strelox.nnov.matra-dtv.fr> |
5 | ---Copyright: Matra Datavision 1999 |
6 | |
7 | |
8 | class ExtPExtS from Extrema |
9 | |
10 | ---Purpose: It calculates all the extremum (minimum and |
11 | -- maximum) distances between a point and a linear |
12 | -- extrusion surface. |
13 | |
14 | uses |
15 | POnSurf from Extrema, |
16 | GenExtPS from Extrema, |
17 | FuncExtPS from Extrema, |
18 | |
19 | HCurve from Adaptor3d, |
20 | SurfacePtr from Adaptor3d, |
21 | SurfaceOfLinearExtrusion from Adaptor3d, |
22 | |
23 | Ax2 from gp, |
24 | Vec from gp, |
25 | Pnt from gp |
26 | |
27 | raises |
28 | NotDone from StdFail, |
29 | OutOfRange |
30 | |
31 | |
32 | is |
33 | Create returns ExtPExtS; |
34 | |
35 | Create (P: Pnt; S: SurfaceOfLinearExtrusion from Adaptor3d; |
36 | Umin, Usup, Vmin, Vsup: Real; |
37 | TolU,TolV: Real) |
38 | returns ExtPExtS; |
39 | ---Purpose: It calculates all the distances between a point |
40 | -- from gp and a Surface. |
41 | |
42 | Create (P: Pnt; S: SurfaceOfLinearExtrusion from Adaptor3d; |
43 | TolU,TolV: Real) |
44 | returns ExtPExtS; |
45 | ---Purpose: It calculates all the distances between a point |
46 | -- from gp and a Surface. |
47 | |
48 | Initialize(me: in out; S: SurfaceOfLinearExtrusion from Adaptor3d; |
49 | Uinf, Usup, Vinf, Vsup: Real; |
50 | TolU, TolV: Real) |
51 | ---Purpose: Initializes the fields of the algorithm. |
52 | is static; |
53 | |
54 | Perform(me: in out; P: Pnt) |
55 | is static; |
56 | |
57 | IsDone (me) returns Boolean |
58 | ---Purpose: Returns True if the distances are found. |
59 | is static; |
60 | |
61 | NbExt (me) returns Integer |
62 | ---Purpose: Returns the number of extremum distances. |
63 | raises NotDone from StdFail |
64 | -- if IsDone(me)=False. |
65 | is static; |
66 | |
67 | SquareDistance (me; N: Integer) returns Real |
68 | ---Purpose: Returns the value of the Nth resulting square distance. |
69 | raises NotDone from StdFail, |
70 | -- if IsDone(me)=False. |
71 | OutOfRange |
72 | -- if N < 1 or N > NbPoints(me). |
73 | is static; |
74 | |
75 | Point (me; N: Integer) returns POnSurf |
76 | ---Purpose: Returns the point of the Nth resulting distance. |
77 | raises NotDone from StdFail, |
78 | -- if IsDone(me)=False. |
79 | OutOfRange |
80 | -- if N < 1 or N > NbPoints(me). |
81 | is static; |
82 | |
83 | --- Private methods |
84 | |
85 | MakePreciser (me; U : in out Real from Standard; |
86 | P : Pnt from gp; |
87 | isMin : Boolean from Standard; |
88 | OrtogSection: Ax2 from gp) is static private; |
89 | |
90 | fields |
91 | myuinf : Real from Standard; |
92 | myusup : Real from Standard; |
93 | mytolu : Real from Standard; |
94 | myvinf : Real from Standard; |
95 | myvsup : Real from Standard; |
96 | mytolv : Real from Standard; |
97 | |
98 | myVRange : Real from Standard; |
99 | |
100 | myF : FuncExtPS from Extrema; |
101 | myC : HCurve from Adaptor3d; |
102 | myS : SurfacePtr from Adaptor3d; |
103 | myDirection : Vec from gp; |
104 | myPosition : Ax2 from gp; |
105 | myExtPS : GenExtPS from Extrema; |
106 | |
107 | myIsAnalyticallyComputable : Boolean from Standard; |
108 | |
109 | myDone : Boolean from Standard; |
110 | myNbExt: Integer from Standard; |
111 | mySqDist: Real from Standard [4]; |
112 | myPoint: POnSurf from Extrema [4]; |
113 | |
114 | end ExtPExtS; |