0023024: Update headers of OCCT files
[occt.git] / src / gp / gp_Elips2d.cdl
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
19
20 class Elips2d   from gp  inherits Storable
21
22         --- Purpose :
23         -- Describes an ellipse in the plane (2D space).
24         -- An ellipse is defined by its major and minor radii and
25         -- positioned in the plane with a coordinate system (a
26         -- gp_Ax22d object) as follows:
27         -- -   the origin of the coordinate system is the center of the ellipse,
28         -- -   its "X Direction" defines the major axis of the ellipse, and
29         -- -   its "Y Direction" defines the minor axis of the ellipse.
30         -- This coordinate system is the "local coordinate system"
31         -- of the ellipse. Its orientation (direct or indirect) gives an
32         -- implicit orientation to the ellipse. In this coordinate
33         -- system, the equation of the ellipse is:
34         -- X*X / (MajorRadius**2) + Y*Y / (MinorRadius**2) = 1.0
35         -- See Also
36         -- gce_MakeElips2d which provides functions for more
37         -- complex ellipse constructions
38         -- Geom2d_Ellipse which provides additional functions for
39         -- constructing ellipses and works, in particular, with the
40         -- parametric equations of ellipses 
41
42 uses Ax2d   from gp, 
43      Ax22d  from gp, 
44      Pnt2d  from gp, 
45      Trsf2d from gp, 
46      Vec2d  from gp
47
48 raises ConstructionError from Standard
49
50
51 is
52   Create   returns Elips2d;
53         ---C++:inline
54         --- Purpose : Creates an indefinite ellipse.
55
56
57   Create (MajorAxis : Ax2d; 
58           MajorRadius, MinorRadius : Real;
59           Sense : Boolean from Standard = Standard_True)
60      returns Elips2d
61         ---C++:inline
62         --- Purpose :
63         --  Creates an ellipse with the major axis, the major and the
64         --  minor radius. The location of the MajorAxis is the center
65         --  of the  ellipse.
66         --  The sense of parametrization is given by Sense.
67         --  Warnings :
68         --  It is possible to create an ellipse with 
69         --  MajorRadius = MinorRadius.    
70         --  Raises ConstructionError if MajorRadius < MinorRadius or MinorRadius < 0.0
71      raises ConstructionError;
72         
73
74   Create (A : Ax22d; MajorRadius, MinorRadius : Real)
75      returns Elips2d
76         --- Purpose :  Creates an ellipse with radii MajorRadius and
77         --   MinorRadius, positioned in the plane by coordinate system A where:
78         --   -   the origin of A is the center of the ellipse,
79         --   -   the "X Direction" of A defines the major axis of
80         --    the ellipse, that is, the major radius MajorRadius
81         --    is measured along this axis, and
82         --   -   the "Y Direction" of A defines the minor axis of
83         --    the ellipse, that is, the minor radius MinorRadius
84         --    is measured along this axis, and
85         --   -   the orientation (direct or indirect sense) of A
86         --    gives the orientation of the ellipse.
87         --  Warnings :
88         --  It is possible to create an ellipse with 
89         --  MajorRadius = MinorRadius.  
90         -- Raises ConstructionError if MajorRadius < MinorRadius or MinorRadius < 0.0
91
92      raises ConstructionError;
93         
94
95   SetLocation (me : in out; P : Pnt2d)  is static;
96         --- Purpose : Modifies this ellipse, by redefining its local coordinate system so that
97         -- -   its origin becomes P. 
98
99
100   SetMajorRadius (me : in out; MajorRadius : Real)
101         --- Purpose : Changes the value of the major radius.
102         -- Raises ConstructionError if MajorRadius < MinorRadius.
103      raises ConstructionError
104      is static;
105
106
107   SetMinorRadius (me : in out; MinorRadius : Real)
108         --- Purpose : Changes the value of the minor radius.
109         -- Raises ConstructionError if MajorRadius < MinorRadius or MinorRadius < 0.0
110      raises ConstructionError
111         
112      is static;
113
114
115   SetAxis (me : in out; A : Ax22d)  is static;
116         --- Purpose : Modifies this ellipse, by redefining its local coordinate system so that
117         --    it becomes A.
118
119
120   SetXAxis (me : in out; A : Ax2d)  is static;
121         --- Purpose : Modifies this ellipse, by redefining its local coordinate system so that
122         --   its origin and its "X Direction"  become those
123         -- of the axis A. The "Y  Direction"  is then
124         --   recomputed. The orientation of the local coordinate
125         --   system is not modified.
126
127
128   SetYAxis (me : in out; A : Ax2d)  is static;
129         --- Purpose : Modifies this ellipse, by redefining its local coordinate system so that
130         --   its origin and its "Y Direction"  become those
131         -- of the axis A. The "X  Direction"  is then
132         --   recomputed. The orientation of the local coordinate
133         --   system is not modified.
134
135
136   Area (me)  returns Real  is static;
137         --- Purpose : Computes the area of the ellipse.
138         ---C++: inline
139
140
141   Coefficients (me; A, B, C, D, E, F : out Real)  is static;
142         --- Purpose :
143         --  Returns the coefficients of the implicit equation of the ellipse.
144         --  A * (X**2) + B * (Y**2) + 2*C*(X*Y) + 2*D*X + 2*E*Y + F = 0.
145
146
147   Directrix1 (me)   returns Ax2d
148         ---C++: inline
149         --- Purpose :
150         --  This directrix is the line normal to the XAxis of the ellipse
151         --  in the local plane (Z = 0) at a distance d = MajorRadius / e 
152         --  from the center of the ellipse, where e is the eccentricity of
153         --  the ellipse.
154         --  This line is parallel to the "YAxis". The intersection point
155         --  between directrix1 and the "XAxis" is the location point of the
156         --  directrix1. This point is on the positive side of the "XAxis".
157      raises ConstructionError
158         --- Purpose : 
159         --  Raised if Eccentricity = 0.0. (The ellipse degenerates into a
160         --  circle)
161      is static;
162
163
164   Directrix2 (me)   returns Ax2d
165         ---C++: inline
166         --- Purpose :
167         --  This line is obtained by the symmetrical transformation 
168         --  of "Directrix1" with respect to the minor axis of the ellipse.
169      raises ConstructionError
170         --- Purpose :
171         --  Raised if Eccentricity = 0.0. (The ellipse degenerates into a
172         --  circle).
173      is static;
174
175
176   Eccentricity (me)  returns Real   is static;
177         ---C++: inline
178         --- Purpose :
179         --  Returns the eccentricity of the ellipse  between 0.0 and 1.0
180         --  If f is the distance between the center of the ellipse and
181         --  the Focus1 then the eccentricity e = f / MajorRadius.
182         --  Returns 0 if MajorRadius = 0.
183
184
185   Focal (me)  returns Real is static;
186         ---C++: inline
187         --- Purpose :
188         --  Returns the distance between the center of the ellipse
189         --  and focus1 or focus2.
190
191
192   Focus1 (me)   returns Pnt2d   is static;
193         ---C++: inline
194         --- Purpose :
195         --  Returns the first focus of the ellipse. This focus is on the
196         --  positive side of the major axis of the ellipse.
197
198
199   Focus2 (me)   returns Pnt2d   is static;
200         ---C++: inline
201         --- Purpose :
202         --  Returns the second focus of the ellipse. This focus is on the
203         --  negative side of the major axis of the ellipse.
204
205
206   Location (me)   returns Pnt2d  is static;
207         ---C++:inline
208         --- Purpose : Returns the center of the ellipse.
209         ---C++: return const&
210   
211
212   MajorRadius (me)  returns Real    is static;
213         --- Purpose : Returns the major radius of the Ellipse.
214         ---C++: inline
215
216
217   MinorRadius (me)   returns Real   is static;
218         --- Purpose : Returns the minor radius of the Ellipse.
219         ---C++: inline
220
221
222   Parameter (me)  returns Real   is static;
223         ---C++: inline
224         --- Purpose :
225         --  Returns p = (1 - e * e) * MajorRadius where e is the eccentricity 
226         --  of the ellipse.
227         --  Returns 0 if MajorRadius = 0
228
229
230   Axis (me)  returns Ax22d  is static;
231         --- Purpose : Returns the major axis of the ellipse.
232         ---C++: inline
233         ---C++: return const&
234
235
236   XAxis (me)  returns Ax2d  is static;
237         ---C++:inline
238         --- Purpose : Returns the major axis of the ellipse.
239
240
241   YAxis (me)  returns Ax2d  is static;
242         ---C++:inline
243         --- Purpose : Returns the minor axis of the ellipse.
244        
245
246         --- Purpose : Reverses the direction of the circle.
247
248   Reverse (me : in out)         is static;
249         ---C++:inline
250
251   Reversed (me)  returns Elips2d  is static;
252         ---C++:inline
253
254   IsDirect (me)  returns Boolean  is static;
255         ---C++:inline
256         --- Purpose : Returns true if the local coordinate system is direct
257         --            and false in the other case.
258
259
260      
261   Mirror (me : in out; P : Pnt2d)   
262          is static;
263
264   Mirrored (me; P : Pnt2d)  returns Elips2d  is static;
265
266    --- Purpose :
267         --  Performs the symmetrical transformation of a ellipse with respect 
268         --  to the point P which is the center of the symmetry
269
270
271   Mirror (me : in out; A : Ax2d)   
272          is static;
273
274   Mirrored (me; A : Ax2d)  returns Elips2d  is static;
275
276
277         --- Purpose :
278         --  Performs the symmetrical transformation of a ellipse with respect 
279         --  to an axis placement which is the axis of the symmetry.
280
281   Rotate (me : in out; P : Pnt2d; Ang : Real)  
282          is static;
283
284   Rotated (me; P : Pnt2d; Ang : Real)  returns Elips2d  is static;
285
286
287
288   Scale (me : in out; P : Pnt2d; S : Real)          is static;
289
290   Scaled (me; P : Pnt2d; S : Real)  returns Elips2d  is static;
291         --- Purpose : 
292         --  Scales a ellipse. S is the scaling value.
293
294      
295   Transform (me : in out; T : Trsf2d) 
296             is static;
297
298   Transformed (me; T : Trsf2d)  returns Elips2d   is static;
299    --- Purpose :
300         --  Transforms an ellipse with the transformation T from class Trsf2d.
301
302
303
304
305   Translate (me : in out; V : Vec2d)            is static;
306
307   Translated (me; V : Vec2d)   returns Elips2d  is static;
308
309         --- Purpose :
310         --  Translates a ellipse in the direction of the vector V.
311         --  The magnitude of the translation is the vector's magnitude.
312
313
314   Translate (me : in out; P1, P2 : Pnt2d )           is static;
315
316   Translated (me; P1, P2 : Pnt2d)   returns Elips2d  is static;
317
318         --- Purpose :
319         --  Translates a ellipse from the point P1 to the point P2.
320
321
322
323 fields
324
325      pos         : Ax22d;
326      majorRadius : Real;
327      minorRadius : Real;
328
329 end;
330