Test for 0022778: Bug in BRepMesh
[occt.git] / src / gp / gp_Hypr.cdl
CommitLineData
b311480e 1-- Copyright (c) 1991-1999 Matra Datavision
2-- Copyright (c) 1999-2012 OPEN CASCADE SAS
3--
4-- The content of this file is subject to the Open CASCADE Technology Public
5-- License Version 6.5 (the "License"). You may not use the content of this file
6-- except in compliance with the License. Please obtain a copy of the License
7-- at http://www.opencascade.org and read it completely before using this file.
8--
9-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11--
12-- The Original Code and all software distributed under the License is
13-- distributed on an "AS IS" basis, without warranty of any kind, and the
14-- Initial Developer hereby disclaims all such warranties, including without
15-- limitation, any warranties of merchantability, fitness for a particular
16-- purpose or non-infringement. Please see the License for the specific terms
17-- and conditions governing the rights and limitations under the License.
18
7fd59977 19
20
21
22
23class Hypr from gp inherits Storable
24
25 --- Purpose : Describes a branch of a hyperbola in 3D space.
26 -- A hyperbola is defined by its major and minor radii and
27 -- positioned in space with a coordinate system (a gp_Ax2
28 -- object) of which:
29 -- - the origin is the center of the hyperbola,
30 -- - the "X Direction" defines the major axis of the
31 -- hyperbola, and
32 -- - the "Y Direction" defines the minor axis of the hyperbola.
33 -- The origin, "X Direction" and "Y Direction" of this
34 -- coordinate system together define the plane of the
35 -- hyperbola. This coordinate system is the "local
36 -- coordinate system" of the hyperbola. In this coordinate
37 -- system, the equation of the hyperbola is:
38 -- X*X/(MajorRadius**2)-Y*Y/(MinorRadius**2) = 1.0
39 -- The branch of the hyperbola described is the one located
40 -- on the positive side of the major axis.
41 -- The "main Direction" of the local coordinate system is a
42 -- normal vector to the plane of the hyperbola. This vector
43 -- gives an implicit orientation to the hyperbola. We refer to
44 -- the "main Axis" of the local coordinate system as the
45 -- "Axis" of the hyperbola.
46 -- The following schema shows the plane of the hyperbola,
47 -- and in it, the respective positions of the three branches of
48 -- hyperbolas constructed with the functions OtherBranch,
49 -- ConjugateBranch1, and ConjugateBranch2:
50 --
51 -- ^YAxis
52 -- |
53 -- FirstConjugateBranch
54 -- |
55 -- Other | Main
56 -- --------------------- C ------------------------------>XAxis
57 -- Branch | Branch
58 -- |
59 -- |
60 -- SecondConjugateBranch
61 -- | ^YAxis
62 -- Warning
63 -- The major radius can be less than the minor radius.
64 -- See Also
65 -- gce_MakeHypr which provides functions for more
66 -- complex hyperbola constructions
67 -- Geom_Hyperbola which provides additional functions for
68 -- constructing hyperbolas and works, in particular, with the
69 -- parametric equations of hyperbolas
70
71uses Ax1 from gp,
72 Ax2 from gp,
73 Pln from gp,
74 Pnt from gp,
75 Trsf from gp,
76 Vec from gp
77
78raises ConstructionError from Standard,
79 DomainError from Standard
80
81is
82
83
84
85 Create returns Hypr;
86 ---C++: inline
87 --- Purpose : Creates of an indefinite hyperbola.
88
89
90 Create (A2 : Ax2; MajorRadius, MinorRadius : Real) returns Hypr
91 ---C++: inline
92 --- Purpose : Creates a hyperbola with radii MajorRadius and
93 -- MinorRadius, positioned in the space by the
94 -- coordinate system A2 such that:
95 -- - the origin of A2 is the center of the hyperbola,
96 -- - the "X Direction" of A2 defines the major axis of
97 -- the hyperbola, that is, the major radius
98 -- MajorRadius is measured along this axis, and
99 -- - the "Y Direction" of A2 defines the minor axis of
100 -- the hyperbola, that is, the minor radius
101 -- MinorRadius is measured along this axis.
102 -- Note: This class does not prevent the creation of a
103 -- hyperbola where:
104 -- - MajorAxis is equal to MinorAxis, or
105 -- - MajorAxis is less than MinorAxis.
106 -- Exceptions
107 -- Standard_ConstructionError if MajorAxis or MinorAxis is negative.
108 -- Raises ConstructionError if MajorRadius < 0.0 or MinorRadius < 0.0
109
110 raises ConstructionError;
111 --- Purpose : Raised if MajorRadius < 0.0 or MinorRadius < 0.0
112
113
114 SetAxis (me : in out; A1 : Ax1)
115 ---C++: inline
116 --- Purpose : Modifies this hyperbola, by redefining its local coordinate
117 -- system so that:
118 -- - its origin and "main Direction" become those of the
119 -- axis A1 (the "X Direction" and "Y Direction" are then
120 -- recomputed in the same way as for any gp_Ax2).
121 -- Raises ConstructionError if the direction of A1 is parallel to the direction of
122 -- the "XAxis" of the hyperbola.
123 raises ConstructionError
124
125 is static;
126
127
128 SetLocation (me : in out; P : Pnt) is static;
129 ---C++: inline
130 --- Purpose : Modifies this hyperbola, by redefining its local coordinate
131 -- system so that its origin becomes P.
132
133
134
135 SetMajorRadius (me : in out; MajorRadius : Real)
136 ---C++: inline
137 --- Purpose:
138 -- Modifies the major radius of this hyperbola.
139 -- Exceptions
140 -- Standard_ConstructionError if MajorRadius is negative.
141 raises ConstructionError
142 is static;
143
144
145 SetMinorRadius (me : in out; MinorRadius : Real)
146 ---C++: inline
147 --- Purpose:
148 -- Modifies the minor radius of this hyperbola.
149 -- Exceptions
150 -- Standard_ConstructionError if MinorRadius is negative.
151 raises ConstructionError
152 is static;
153
154
155 SetPosition (me : in out; A2 : Ax2) is static;
156 ---C++: inline
157 --- Purpose : Modifies this hyperbola, by redefining its local coordinate
158 -- system so that it becomes A2.
159
160
161 Asymptote1 (me) returns Ax1
162 ---C++: inline
163 --- Purpose :
164 -- In the local coordinate system of the hyperbola the equation of
165 -- the hyperbola is (X*X)/(A*A) - (Y*Y)/(B*B) = 1.0 and the
166 -- equation of the first asymptote is Y = (B/A)*X
167 -- where A is the major radius and B is the minor radius. Raises ConstructionError if MajorRadius = 0.0
168 raises ConstructionError
169 is static;
170
171
172 Asymptote2 (me) returns Ax1
173 ---C++: inline
174 --- Purpose :
175 -- In the local coordinate system of the hyperbola the equation of
176 -- the hyperbola is (X*X)/(A*A) - (Y*Y)/(B*B) = 1.0 and the
177 -- equation of the first asymptote is Y = -(B/A)*X.
178 -- where A is the major radius and B is the minor radius. Raises ConstructionError if MajorRadius = 0.0
179 raises ConstructionError
180 is static;
181
182
183 Axis (me) returns Ax1 is static;
184 ---C++: inline
185 --- Purpose : Returns the axis passing through the center,
186 -- and normal to the plane of this hyperbola.
187 ---C++: return const&
188
189 ConjugateBranch1 (me) returns Hypr is static;
190 ---C++: inline
191 --- Purpose :
192 -- Computes the branch of hyperbola which is on the positive side of the
193 -- "YAxis" of <me>.
194
195
196 ConjugateBranch2 (me) returns Hypr is static;
197 ---C++: inline
198 --- Purpose :
199 -- Computes the branch of hyperbola which is on the negative side of the
200 -- "YAxis" of <me>.
201
202
203 Directrix1 (me) returns Ax1 is static;
204 ---C++: inline
205 --- Purpose :
206 -- This directrix is the line normal to the XAxis of the hyperbola
207 -- in the local plane (Z = 0) at a distance d = MajorRadius / e
208 -- from the center of the hyperbola, where e is the eccentricity of
209 -- the hyperbola.
210 -- This line is parallel to the "YAxis". The intersection point
211 -- between the directrix1 and the "XAxis" is the "Location" point
212 -- of the directrix1. This point is on the positive side of the
213 -- "XAxis".
214
215
216 Directrix2 (me) returns Ax1 is static;
217 ---C++: inline
218 --- Purpose :
219 -- This line is obtained by the symmetrical transformation
220 -- of "Directrix1" with respect to the "YAxis" of the hyperbola.
221
222
223 Eccentricity (me) returns Real
224 ---C++: inline
225 --- Purpose :
226 -- Returns the excentricity of the hyperbola (e > 1).
227 -- If f is the distance between the location of the hyperbola
228 -- and the Focus1 then the eccentricity e = f / MajorRadius. Raises DomainError if MajorRadius = 0.0
229 raises DomainError
230 is static;
231
232
233 Focal (me) returns Real is static;
234 ---C++: inline
235 --- Purpose :
236 -- Computes the focal distance. It is the distance between the
237 -- the two focus of the hyperbola.
238
239
240 Focus1 (me) returns Pnt is static;
241 ---C++: inline
242 --- Purpose :
243 -- Returns the first focus of the hyperbola. This focus is on the
244 -- positive side of the "XAxis" of the hyperbola.
245
246
247 Focus2 (me) returns Pnt is static;
248 ---C++: inline
249 --- Purpose :
250 -- Returns the second focus of the hyperbola. This focus is on the
251 -- negative side of the "XAxis" of the hyperbola.
252
253
254 Location (me) returns Pnt is static;
255 ---C++: inline
256 --- Purpose :
257 -- Returns the location point of the hyperbola. It is the
258 -- intersection point between the "XAxis" and the "YAxis".
259 ---C++: return const&
260
261
262 MajorRadius (me) returns Real is static;
263 ---C++: inline
264 --- Purpose :
265 -- Returns the major radius of the hyperbola. It is the radius
266 -- on the "XAxis" of the hyperbola.
267
268
269 MinorRadius (me) returns Real is static;
270 ---C++: inline
271 --- Purpose :
272 -- Returns the minor radius of the hyperbola. It is the radius
273 -- on the "YAxis" of the hyperbola.
274
275
276 OtherBranch (me) returns Hypr is static;
277 ---C++: inline
278 --- Purpose :
279 -- Returns the branch of hyperbola obtained by doing the
280 -- symmetrical transformation of <me> with respect to the
281 -- "YAxis" of <me>.
282
283
284 Parameter (me) returns Real
285 ---C++: inline
286 --- Purpose :
287 -- Returns p = (e * e - 1) * MajorRadius where e is the
288 -- eccentricity of the hyperbola.
289 --- Raises DomainError if MajorRadius = 0.0
290 raises DomainError
291 is static;
292
293
294 Position (me) returns Ax2 is static;
295 --- Purpose : Returns the coordinate system of the hyperbola.
296 ---C++: inline
297 ---C++: return const&
298
299
300 XAxis (me) returns Ax1 is static;
301 ---C++: inline
302 --- Purpose : Computes an axis, whose
303 -- - the origin is the center of this hyperbola, and
304 -- - the unit vector is the "X Direction"
305 -- of the local coordinate system of this hyperbola.
306 -- These axes are, the major axis (the "X
307 -- Axis") and of this hyperboReturns the "XAxis" of the hyperbola.
308
309
310 YAxis (me) returns Ax1 is static;
311 ---C++: inline
312 --- Purpose : Computes an axis, whose
313 -- - the origin is the center of this hyperbola, and
314 -- - the unit vector is the "Y Direction"
315 -- of the local coordinate system of this hyperbola.
316 -- These axes are the minor axis (the "Y Axis") of this hyperbola
317
318
319
320 Mirror (me : in out; P : Pnt) is static;
321
322 Mirrored (me; P : Pnt) returns Hypr is static;
323 --- Purpose :
324 -- Performs the symmetrical transformation of an hyperbola with
325 -- respect to the point P which is the center of the symmetry.
326
327 Mirror (me : in out; A1 : Ax1) is static;
328
329 Mirrored (me; A1 : Ax1) returns Hypr is static;
330
331
332 --- Purpose :
333 -- Performs the symmetrical transformation of an hyperbola with
334 -- respect to an axis placement which is the axis of the symmetry.
335
336
337 Mirror (me : in out; A2 : Ax2) is static;
338
339 Mirrored (me; A2 : Ax2) returns Hypr is static;
340 --- Purpose :
341 -- Performs the symmetrical transformation of an hyperbola with
342 -- respect to a plane. The axis placement A2 locates the plane
343 -- of the symmetry (Location, XDirection, YDirection).
344
345
346 Rotate (me : in out; A1 : Ax1; Ang : Real) is static;
347 ---C++: inline
348 Rotated (me; A1 : Ax1; Ang : Real) returns Hypr is static;
349 ---C++: inline
350 --- Purpose :
351 -- Rotates an hyperbola. A1 is the axis of the rotation.
352 -- Ang is the angular value of the rotation in radians.
353
354
355
356 Scale (me : in out; P : Pnt; S : Real) is static;
357 ---C++: inline
358
359 Scaled (me; P : Pnt; S : Real) returns Hypr is static;
360 ---C++: inline
361 --- Purpose :
362 -- Scales an hyperbola. S is the scaling value.
363
364
365
366 Transform (me : in out; T : Trsf) is static;
367 ---C++: inline
368
369 Transformed (me; T : Trsf) returns Hypr is static;
370 ---C++: inline
371 --- Purpose :
372 -- Transforms an hyperbola with the transformation T from
373 -- class Trsf.
374
375
376
377 Translate (me : in out; V : Vec) is static;
378 ---C++: inline
379
380 Translated (me; V : Vec) returns Hypr is static;
381 ---C++: inline
382 --- Purpose :
383 -- Translates an hyperbola in the direction of the vector V.
384 -- The magnitude of the translation is the vector's magnitude.
385
386
387 Translate(me : in out; P1, P2 : Pnt) is static;
388 ---C++: inline
389
390 Translated (me; P1, P2 : Pnt) returns Hypr is static;
391 ---C++: inline
392 --- Purpose :
393 -- Translates an hyperbola from the point P1 to the point P2.
394
395
396fields
397
398 pos : Ax2;
399 majorRadius : Real;
400 minorRadius : Real;
401
402
403end;
404