0024428: Implementation of LGPL license
[occt.git] / src / Approx / Approx_ComputeLine.cdl
CommitLineData
b311480e 1-- Created on: 1993-01-26
2-- Created by: Laurent PAINNOT
3-- Copyright (c) 1993-1999 Matra Datavision
973c2be1 4-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5--
973c2be1 6-- This file is part of Open CASCADE Technology software library.
b311480e 7--
973c2be1 8-- This library is free software; you can redistribute it and / or modify it
9-- under the terms of the GNU Lesser General Public version 2.1 as published
10-- by the Free Software Foundation, with special exception defined in the file
11-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12-- distribution for complete text of the license and disclaimer of any warranty.
b311480e 13--
973c2be1 14-- Alternatively, this file may be used under the terms of Open CASCADE
15-- commercial license or contractual agreement.
7fd59977 16
17generic class ComputeLine from Approx
18 (MultiLine as any;
19 LineTool as any) --as TheLineTool(MultiLine)
20
21
22uses ParametrizationType from Approx,
23 SequenceOfReal from TColStd,
24 HArray1OfReal from TColStd,
25 Array1OfReal from TColStd,
26 SequenceOfMultiCurve from AppParCurves,
27 HArray1OfMultiCurve from AppParCurves,
28 HArray1OfConstraintCouple from AppParCurves,
29 Constraint from AppParCurves,
30 SequenceOfHArray1OfReal from Approx,
31 MultiCurve from AppParCurves,
32 MultiBSpCurve from AppParCurves,
33 Vector from math
34
35
36
37private class MyGradient instantiates Gradient from AppParCurves
38 (MultiLine,
39 LineTool);
40
41is
42
43
44 Create(Line: MultiLine;
45 degreemin: Integer = 4;
46 degreemax: Integer = 8;
47 Tolerance3d: Real = 1.0e-3;
48 Tolerance2d: Real = 1.0e-6;
49 NbIterations: Integer = 5;
50 cutting: Boolean = Standard_True;
51 parametrization: ParametrizationType from Approx =
52 Approx_ChordLength;
53 Squares: Boolean = Standard_False)
54
55 ---Purpose: The MultiLine <Line> will be approximated until tolerances
56 -- will be reached.
57 -- The approximation will be done from degreemin to degreemax
58 -- with a cutting if the corresponding boolean is True.
59 -- If <Squares> is True, the computation will be done with
60 -- no iteration at all.
61
62 returns ComputeLine;
63
64
65 Create(Line: MultiLine;
66 Parameters: Vector from math;
67 degreemin: Integer = 4;
68 degreemax: Integer = 8;
69 Tolerance3d: Real = 1.0e-03;
70 Tolerance2d: Real = 1.0e-06;
71 NbIterations: Integer = 5;
72 cutting: Boolean = Standard_True;
73 Squares: Boolean = Standard_False)
74
75 ---Purpose: The MultiLine <Line> will be approximated until tolerances
76 -- will be reached.
77 -- The approximation will be done from degreemin to degreemax
78 -- with a cutting if the corresponding boolean is True.
79 -- If <Squares> is True, the computation will be done with
80 -- no iteration at all.
81
82 returns ComputeLine;
83
84
85 Create(Parameters: Vector from math;
86 degreemin: Integer = 4;
87 degreemax: Integer = 8;
88 Tolerance3d: Real = 1.0e-03;
89 Tolerance2d: Real = 1.0e-06;
90 NbIterations: Integer = 5;
91 cutting: Boolean = Standard_True;
92 Squares: Boolean = Standard_False)
93
94 ---Purpose: Initializes the fields of the algorithm.
95
96 returns ComputeLine;
97
98
99 Create(degreemin: Integer = 4;
100 degreemax: Integer = 8;
101 Tolerance3d: Real = 1.0e-03;
102 Tolerance2d: Real = 1.0e-06;
103 NbIterations: Integer = 5;
104 cutting: Boolean = Standard_True;
105 parametrization: ParametrizationType from Approx =
106 Approx_ChordLength;
107 Squares: Boolean = Standard_False)
108
109 ---Purpose: Initializes the fields of the algorithm.
110
111 returns ComputeLine;
112
113
114 Init(me: in out; degreemin: Integer = 4;
115 degreemax: Integer = 8;
116 Tolerance3d: Real = 1.0e-03;
117 Tolerance2d: Real = 1.0e-06;
118 NbIterations: Integer = 5;
119 cutting: Boolean = Standard_True;
120 parametrization: ParametrizationType from Approx =
121 Approx_ChordLength;
122 Squares: Boolean = Standard_False)
123
124 ---Purpose: Initializes the fields of the algorithm.
125
126 is static;
127
128
129
130
131 Perform(me: in out; Line: MultiLine)
132 ---Purpose: runs the algorithm after having initialized the fields.
133
134 is static;
135
136
137 Compute(me: in out; Line: MultiLine; fpt, lpt: Integer;
138 Para: in out Vector from math; TheTol3d, TheTol2d: in out Real)
139 ---Purpose: is internally used in the algorithm.
140
141 returns Boolean
142 is static private;
143
144
145 ComputeCurve(me: in out; Line: MultiLine; firspt, lastpt: Integer)
146 ---Purpose: is internally used in the algorithm.
147
148 returns Boolean
149 is static private;
150
151
152 Parameters(me; Line: MultiLine; firstP, LastP: Integer;
153 TheParameters: in out Vector)
154 ---Purpose: computes new parameters between firstP and lastP.
155
156 is static private;
157
158
159 SetDegrees(me: in out; degreemin, degreemax: Integer)
160 ---Purpose: changes the degrees of the approximation.
161
162 is static;
163
164
165 SetTolerances(me: in out; Tolerance3d, Tolerance2d: Real)
166 ---Purpose: Changes the tolerances of the approximation.
167
168 is static;
169
170
171 SetConstraints(me: in out; firstC, lastC: Constraint from AppParCurves)
172 ---Purpose: changes the first and the last constraint points.
173 is static;
174
175
176 IsAllApproximated(me)
177 ---Purpose: returns False if at a moment of the approximation,
178 -- the status NoApproximation has been sent by the user
179 -- when more points were needed.
180
181 returns Boolean
182 is static;
183
184
185 IsToleranceReached(me)
186 ---Purpose: returns False if the status NoPointsAdded has been sent.
187
188 returns Boolean
189 is static;
190
191
192 Error(me; Index: Integer; tol3d: in out Real; tol2d: in out Real)
193 ---Purpose: returns the tolerances 2d and 3d of the <Index> MultiCurve.
194
195 is static;
196
197
198 NbMultiCurves(me)
199 ---Purpose: Returns the number of MultiCurve doing the approximation
200 -- of the MultiLine.
201 returns Integer
202 is static;
203
204
205 Value(me; Index: Integer = 1)
206 ---Purpose: returns the result of the approximation.
207 ---C++: return const&
208 returns MultiCurve from AppParCurves
209 is static;
210
211 ChangeValue(me: in out; Index: Integer = 1)
212 ---Purpose: returns the result of the approximation.
213 ---C++: return &
214 returns MultiCurve from AppParCurves
215 is static;
216
217
218 SplineValue(me: in out)
219 ---Purpose: returns the result of the approximation.
220 ---C++: return const&
221 returns MultiBSpCurve from AppParCurves
222 is static;
223
224 Parametrization(me; partype : in out ParametrizationType from Approx)
225 ---Purpose: returns the type of parametrization
226 is static;
227
228
229 Parameters(me; Index: Integer = 1)
230 ---Purpose: returns the new parameters of the approximation
231 -- corresponding to the points of the multicurve <Index>.
232 ---C++: return const&
233 returns Array1OfReal from TColStd
234 is static;
235
236
237
238 SearchFirstLambda(me; Line: MultiLine; Para: Vector;
239 V: Vector; index: Integer)
240 returns Real
241 is static private;
242
243 SearchLastLambda(me: ; Line: MultiLine; Para: Vector;
244 V: Vector; index: Integer)
245 returns Real
246 is static private;
247
248 FirstTangencyVector(me; Line: MultiLine; index: Integer; V: in out Vector)
249 is static private;
250
251 LastTangencyVector(me; Line: MultiLine; index: Integer; V: in out Vector)
252 is static private;
253
254
255fields
256
257
258myMultiCurves: SequenceOfMultiCurve from AppParCurves;
259TheMultiCurve: MultiCurve from AppParCurves;
260myspline : MultiBSpCurve from AppParCurves;
261alldone: Boolean from Standard;
262tolreached: Boolean from Standard;
263Par: ParametrizationType from Approx;
264myParameters: HArray1OfReal from TColStd;
265myfirstParam: HArray1OfReal from TColStd;
266myPar: SequenceOfHArray1OfReal from Approx;
267Tolers3d: SequenceOfReal from TColStd;
268Tolers2d: SequenceOfReal from TColStd;
269myConstraints: HArray1OfConstraintCouple from AppParCurves;
270mydegremin: Integer from Standard;
271mydegremax: Integer from Standard;
272mytol3d: Real from Standard;
273mytol2d: Real from Standard;
274currenttol3d: Real from Standard;
275currenttol2d: Real from Standard;
276mycut: Boolean from Standard;
277mysquares: Boolean from Standard;
278myitermax: Integer from Standard;
279myfirstC: Constraint from AppParCurves;
280mylastC: Constraint from AppParCurves;
41194117
K
281myMultiLineNb: Integer from Standard;
282myIsClear : Boolean from Standard;
7fd59977 283
284end ComputeLine;