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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
-- File: SLProps.cdl
-- Created: Tue Mar 26 09:37:49 1991
-- Author: Michel CHAUVAT
-- <mca@topsn3>
---Copyright: Matra Datavision 1991, 1992
generic class SLProps from LProp (Surface as any;
Tool as any) -- as ToolSurface(Surface)
---Purpose: Computation of Surface Local Properties:
-- - point,
-- - derivatives,
-- - tangents,
-- - normal,
-- - tangent plane,
-- - principal curvatures and their associated direction,
-- - mean curvature,
-- - Gaussian curvature.
uses Dir from gp,
Pnt from gp,
Vec from gp,
Status from LProp
raises BadContinuity, DomainError, OutOfRange, NotDefined
is
Create(S: Surface; U, V: Real; N: Integer; Resolution: Real)
---Purpose: Initializes the local properties of the surface <S>
-- for the parameter values (<U>, <V>).
-- The current point and the derivatives are
-- computed at the same time, which allows an
-- optimization of the computation time.
-- <N> indicates the maximum number of derivations to
-- be done (0, 1, or 2). For example, to compute
-- only the tangent, N should be equal to 1.
-- <Resolution> is the linear tolerance (it is used to test
-- if a vector is null).
returns SLProps
raises OutOfRange;
-- if N < 0 or N > 2.
Create(S: Surface; N: Integer; Resolution: Real)
---Purpose: idem as previous constructor but without setting the value
-- of parameters <U> and <V>.
returns SLProps
raises OutOfRange;
-- if N < 0 or N > 2.
Create( N: Integer; Resolution: Real)
---Purpose: idem as previous constructor but without setting the value
-- of parameters <U> and <V> and the surface.
-- the surface can have an empty constructor.
returns SLProps
raises OutOfRange;
-- if N < 0 or N > 2.
SetSurface(me : in out;S : Surface)
---Purpose: Initializes the local properties of the surface S
-- for the new surface.
is static;
SetParameters(me: in out; U, V : Real)
---Purpose: Initializes the local properties of the surface S
-- for the new parameter values (<U>, <V>).
is static;
Value(me) returns Pnt
---Purpose: Returns the point.
---C++: return const &
is static;
D1U(me: in out) returns Vec is static;
---Purpose: Returns the first U derivative.
-- The derivative is computed if it has not been yet.
---C++: return const &
D1V(me: in out) returns Vec is static;
---Purpose: Returns the first V derivative.
-- The derivative is computed if it has not been yet.
---C++: return const &
D2U(me: in out) returns Vec is static;
---Purpose: Returns the second U derivatives
-- The derivative is computed if it has not been yet.
---C++: return const &
D2V(me: in out) returns Vec is static;
---Purpose: Returns the second V derivative.
-- The derivative is computed if it has not been yet.
---C++: return const &
DUV(me: in out) returns Vec is static;
---Purpose: Returns the second UV cross-derivative.
-- The derivative is computed if it has not been yet.
---C++: return const &
IsTangentUDefined(me: in out) returns Boolean is static;
---Purpose: returns True if the U tangent is defined.
-- For example, the tangent is not defined if the
-- two first U derivatives are null.
TangentU(me: in out; D : out Dir)
---Purpose: Returns the tangent direction <D> on the iso-V.
raises NotDefined
-- if IsTangentUDefined() == False.
is static;
IsTangentVDefined(me: in out) returns Boolean is static;
---Purpose: returns if the V tangent is defined.
-- For example, the tangent is not defined if the
-- two first V derivatives are null.
TangentV(me: in out; D : out Dir)
---Purpose: Returns the tangent direction <D> on the iso-V.
raises NotDefined
-- if IsTangentVDefined() == False.
is static;
IsNormalDefined(me: in out) returns Boolean is static;
---Purpose: Tells if the normal is defined.
Normal(me: in out) returns Dir
---Purpose: Returns the normal direction.
---C++: return const &
raises NotDefined
-- if IsNormalDefined() == False
is static;
IsCurvatureDefined(me: in out)
---Purpose: returns True if the curvature is defined.
returns Boolean
raises BadContinuity
-- if the surface is not C2.
is static;
IsUmbilic(me: in out)
---Purpose: returns True if the point is umbilic (i.e. if the
-- curvature is constant).
returns Boolean
raises NotDefined
-- if IsCurvatureDefined() == False
is static;
MaxCurvature(me : in out)
---Purpose: Returns the maximum curvature
returns Real
raises NotDefined
-- if IsCurvatureDefined() == False.
is static;
MinCurvature(me : in out)
---Purpose: Returns the minimum curvature
returns Real
raises NotDefined
-- if IsCurvatureDefined() == False.
is static;
CurvatureDirections(me: in out; MaxD, MinD : out Dir)
---Purpose: Returns the direction of the maximum and minimum curvature
-- <MaxD> and <MinD>
raises NotDefined
-- if IsCurvatureDefined() == False
-- or IsUmbilic() == True.
is static;
MeanCurvature(me: in out)
---Purpose: Returns the mean curvature.
returns Real
raises NotDefined
-- if IsCurvatureDefined() == False.
is static;
GaussianCurvature(me: in out)
---Purpose: Returns the Gaussian curvature
returns Real
raises NotDefined
-- if IsCurvatureDefined() == False.
is static;
fields
surf : Surface;
u : Real;
v : Real;
level : Integer;
cn : Integer;
linTol : Real;
pnt : Pnt from gp;
d1U : Vec from gp;
d1V : Vec from gp;
d2U : Vec from gp;
d2V : Vec from gp;
dUV : Vec from gp;
normal : Dir from gp;
minCurv : Real;
maxCurv : Real;
dirMinCurv : Dir from gp;
dirMaxCurv : Dir from gp;
meanCurv : Real;
gausCurv : Real;
significantFirstUDerivativeOrder : Integer;
significantFirstVDerivativeOrder : Integer;
uTangentStatus : Status from LProp;
vTangentStatus : Status from LProp;
normalStatus : Status from LProp;
curvatureStatus : Status from LProp;
end SLProps;
|