blob: 7a1bd271dd34b228d954c119d8c531465219b708 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
-- File: Law_Interpolate.cdl
-- Created: Wed Nov 15 17:30:50 1995
-- Author: Laurent BOURESCHE
-- <lbo@phylox>
---Copyright: Matra Datavision 1995
--- cut and past from GeomAPI_Interpolate in order
-- to provide 1D interpolation.
class Interpolate from Law
---Purpose: This class is used to interpolate a BsplineCurve
-- passing through an array of points, with a C2
-- Continuity if tangency is not requested at the point.
-- If tangency is requested at the point the continuity
-- will be C1. If Perodicity is requested the curve will
-- be closed and the junction will be the first point
-- given. The curve will than be only C1
--
--
uses
Array1OfReal from TColStd,
HArray1OfReal from TColStd,
HArray1OfBoolean from TColStd,
BSpline from Law
raises
NotDone from StdFail,
ConstructionError from Standard
is
Create(Points : HArray1OfReal from TColStd;
PeriodicFlag : Boolean from Standard;
Tolerance : Real)
---Purpose: Tolerance is to check if the points are not too close
-- to one an other. It is also used to check if the
-- tangent vector is not too small. There should be at
-- least 2 points. If PeriodicFlag is True then the curve
-- will be periodic be periodic
returns Interpolate from Law
raises ConstructionError from Standard;
Create(Points : HArray1OfReal from TColStd;
Parameters : HArray1OfReal from TColStd;
PeriodicFlag : Boolean from Standard;
Tolerance : Real from Standard)
---Purpose: Tolerance is to check if the points are not too close
-- to one an other. It is also used to check if the
-- tangent vector is not too small. There should be at
-- least 2 points. If PeriodicFlag is True then the curve
-- will be periodic be periodic
-- Warning: There should be as many parameters as there are points
-- except if PeriodicFlag is True then there should be
-- one more parameter to close the curve
returns Interpolate from Law
raises ConstructionError from Standard;
Load(me : in out;
InitialTangent : Real from Standard;
FinalTangent : Real from Standard)
---Purpose: loads initial and final tangents if any.
is static;
Load(me : in out;
Tangents : Array1OfReal from TColStd;
TangentFlags : HArray1OfBoolean from TColStd)
---Purpose: loads the tangents. We should have as many tangents as
-- they are points in the array if TangentFlags.Value(i)
-- is Standard_True use the tangent Tangents.Value(i)
-- otherwise the tangent is not constrained.
--
is static;
ClearTangents(me : in out);
---Purpose: Clears the tangents if any
Perform(me : in out);
---Purpose: Makes the interpolation
Curve(me)
---C++: return const &
returns BSpline from Law
raises NotDone from StdFail
is static;
IsDone(me)
returns Boolean from Standard
is static;
PerformNonPeriodic(me : in out)
---Purpose: Interpolates in a non periodic fashion.
is private;
PerformPeriodic(me : in out)
---Purpose: Interpolates in a C1 periodic fashion.
is private;
fields
myTolerance : Real from Standard;
-- the 3D tolerance to check for degenerate points
myPoints : HArray1OfReal from TColStd;
-- the points to interpolates
myIsDone : Boolean from Standard;
-- the algorithm did complete OK if Standard_True
myCurve : BSpline from Law;
-- the interpolated curve
myTangents : HArray1OfReal from TColStd;
-- the tangents only defined at slot i if
-- myTangenFlags->Value(i) is Standard_True
myTangentFlags : HArray1OfBoolean from TColStd;
-- the flags defining the tangents
myParameters : HArray1OfReal from TColStd;
-- the parameters used for the cubic interpolation
myPeriodic : Boolean from Standard;
-- if Standard_True the curve will be periodic
myTangentRequest : Boolean from Standard;
-- Tangents are given if True False otherwise
end Interpolate from Law;
|