7fd59977 |
1 | -- File: Int2S.cdl |
2 | -- Created: Tue Apr 30 17:09:26 1991 |
3 | -- Author: Isabelle GRIGNON |
4 | -- <isg@topsn3> |
5 | ---Copyright: Matra Datavision 1991, 1992 |
6 | |
7 | |
8 | generic class Int2S from IntImp |
9 | (ThePSurface as any; |
10 | ThePSurfaceTool as any) -- as PSurfaceTool from IntImp (ThePSurface) |
11 | |
12 | |
13 | ---Purpose: Determination of the intersection between 2 surfaces |
14 | -- from an point close to the solution. |
15 | |
16 | |
17 | uses Array1OfReal from TColStd, |
18 | ConstIsoparametric from IntImp, |
19 | PntOn2S from IntSurf, |
20 | Dir from gp, |
21 | Dir2d from gp, |
22 | FunctionSetRoot from math |
23 | |
24 | raises NotDone from StdFail, |
25 | DomainError from Standard, |
26 | ConstructionError from Standard, |
27 | UndefinedDerivative from StdFail |
28 | |
29 | |
30 | class TheFunction instantiates ZerParFunc from IntImp |
31 | (ThePSurface, ThePSurfaceTool); |
32 | |
33 | |
34 | is |
35 | |
36 | Create |
37 | ---Purpose: Raises Construction Error |
38 | |
39 | returns Int2S from IntImp; |
40 | |
41 | Create( Param: Array1OfReal from TColStd; |
42 | S1,S2: ThePSurface; |
43 | TolTangency: Real) |
44 | |
45 | ---Purpose: compute the solution point with the close point |
46 | |
47 | returns Int2S from IntImp; |
48 | |
49 | |
50 | Create( S1,S2: ThePSurface; |
51 | TolTangency: Real from Standard) |
52 | |
53 | ---Purpose: initialize the parameters to compute the solution point |
54 | -- it 's possible to write to optimize: |
55 | -- IntImp_Int2S inter(S1,S2,Func,TolTangency); |
56 | -- math_FunctionSetRoot rsnld(inter.Function()); |
57 | -- while ...{ |
58 | -- Param(1)=... |
59 | -- Param(2)=... |
60 | -- param(3)=... |
61 | -- inter.Perform(Param,rsnld); |
62 | -- } |
63 | |
64 | returns Int2S from IntImp; |
65 | |
66 | |
67 | Perform(me : in out; Param : Array1OfReal from TColStd; |
68 | Rsnld : in out FunctionSetRoot from math) |
69 | |
70 | ---Purpose: returns the best constant isoparametric to find |
71 | -- the next intersection's point +stores the solution |
72 | -- point (the solution point is found with the close point |
73 | -- to intersect the isoparametric with the other patch; |
74 | -- the choice of the isoparametic is calculated) |
75 | |
76 | returns ConstIsoparametric from IntImp |
77 | |
78 | is static; |
79 | |
80 | |
81 | Perform(me : in out; |
82 | Param : Array1OfReal from TColStd; |
83 | Rsnld : in out FunctionSetRoot from math; |
84 | ChoixIso : ConstIsoparametric from IntImp) |
85 | |
86 | ---Purpose: returns the best constant isoparametric to find |
87 | -- the next intersection's point +stores the solution |
88 | -- point (the solution point is found with the close point |
89 | -- to intersect the isoparametric with the other patch; |
90 | -- the choice of the isoparametic is given by ChoixIso) |
91 | |
92 | returns ConstIsoparametric from IntImp |
93 | |
94 | is static; |
95 | |
96 | |
97 | IsDone(me) |
98 | |
99 | ---Purpose: Returns TRUE if the creation completed without failure. |
100 | |
101 | returns Boolean from Standard |
102 | ---C++: inline |
103 | |
104 | is static; |
105 | |
106 | |
107 | IsEmpty(me) |
108 | |
109 | ---Purpose: Returns TRUE when there is no solution to the problem. |
110 | |
111 | returns Boolean from Standard |
112 | ---C++: inline |
113 | |
114 | raises NotDone from StdFail |
115 | is static; |
116 | |
117 | |
118 | Point(me) |
119 | |
120 | ---Purpose: Returns the intersection point. |
121 | |
122 | returns PntOn2S from IntSurf |
123 | ---C++: return const& |
124 | ---C++: inline |
125 | |
126 | raises NotDone from StdFail, |
127 | DomainError from Standard |
128 | -- The exception NotDone is raised if IsDone is false. |
129 | -- The exception DomainError is raised if IsEmpty is true. |
130 | |
131 | is static; |
132 | |
133 | |
134 | IsTangent(me) |
135 | |
136 | ---Purpose: Returns True if the surfaces are tangent at the |
137 | -- intersection point. |
138 | |
139 | returns Boolean from Standard |
140 | ---C++: inline |
141 | |
142 | raises NotDone from StdFail, |
143 | DomainError from Standard |
144 | -- The exception NotDone is raised if IsDone is false. |
145 | -- The exception DomainError is raised if IsEmpty is true. |
146 | |
147 | is static; |
148 | |
149 | |
150 | Direction(me) |
151 | |
152 | ---Purpose: Returns the tangent at the intersection line. |
153 | |
154 | returns Dir from gp |
155 | ---C++: return const& |
156 | ---C++: inline |
157 | |
158 | raises NotDone from StdFail, |
159 | DomainError from Standard, |
160 | UndefinedDerivative from StdFail |
161 | -- The exception NotDone is raised if IsDone is false. |
162 | -- The exception DomainError is raised if IsEmpty is true. |
163 | -- The exception UndefinedDerivative is raised if IsTangent |
164 | -- returns True. |
165 | |
166 | is static; |
167 | |
168 | |
169 | DirectionOnS1(me) |
170 | |
171 | ---Purpose: Returns the tangent at the intersection line in the |
172 | -- parametric space of the first surface. |
173 | |
174 | returns Dir2d from gp |
175 | ---C++: return const& |
176 | ---C++: inline |
177 | |
178 | raises NotDone from StdFail, |
179 | DomainError from Standard, |
180 | UndefinedDerivative from StdFail |
181 | -- The exception NotDone is raised if IsDone is false. |
182 | -- The exception DomainError is raised if IsEmpty is true. |
183 | -- The exception UndefinedDerivative is raised if IsTangent |
184 | -- returns True. |
185 | |
186 | is static; |
187 | |
188 | |
189 | DirectionOnS2(me) |
190 | |
191 | ---Purpose: Returns the tangent at the intersection line in the |
192 | -- parametric space of the second surface. |
193 | |
194 | returns Dir2d from gp |
195 | ---C++: return const& |
196 | ---C++: inline |
197 | |
198 | raises NotDone from StdFail, |
199 | DomainError from Standard, |
200 | UndefinedDerivative from StdFail |
201 | -- The exception NotDone is raised if IsDone is false. |
202 | -- The exception DomainError is raised if IsEmpty is true. |
203 | -- The exception UndefinedDerivative is raised if IsTangent |
204 | -- returns True. |
205 | |
206 | is static; |
207 | |
208 | |
209 | Function(me: in out) |
210 | ---Purpose: return the math function which |
211 | -- is used to compute the intersection |
212 | |
213 | returns TheFunction |
214 | ---C++: return & |
215 | ---C++: inline |
216 | |
217 | is static; |
218 | |
219 | |
220 | fields |
221 | |
222 | done : Boolean from Standard; |
223 | empty : Boolean from Standard; |
224 | pint : PntOn2S from IntSurf; |
225 | tangent : Boolean from Standard; |
226 | d3d : Dir from gp; |
227 | d2d1 : Dir2d from gp; |
228 | d2d2 : Dir2d from gp; |
229 | myZerParFunc : TheFunction; |
230 | tol : Real from Standard; |
231 | |
232 | ua0,va0,ua1,va1 : Real from Standard; -- surf1 |
233 | ub0,vb0,ub1,vb1 : Real from Standard; -- surf2 |
234 | ures1,ures2,vres1,vres2 : Real from Standard; -- U et V Resolution |
235 | |
236 | end Int2S; |