0024927: Getting rid of "Persistent" functionality -- Storable
[occt.git] / src / gp / gp_Lin.cdl
1 -- Copyright (c) 1991-1999 Matra Datavision
2 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
3 --
4 -- This file is part of Open CASCADE Technology software library.
5 --
6 -- This library is free software; you can redistribute it and/or modify it under
7 -- the terms of the GNU Lesser General Public License version 2.1 as published
8 -- by the Free Software Foundation, with special exception defined in the file
9 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 -- distribution for complete text of the license and disclaimer of any warranty.
11 --
12 -- Alternatively, this file may be used under the terms of Open CASCADE
13 -- commercial license or contractual agreement.
14
15 class Lin    from gp
16
17         ---Purpose:
18         -- Describes a line in 3D space.
19         -- A line is positioned in space with an axis (a gp_Ax1
20         -- object) which gives it an origin and a unit vector.
21         -- A line and an axis are similar objects, thus, we can
22         -- convert one into the other. A line provides direct access
23         -- to the majority of the edit and query functions available
24         -- on its positioning axis. In addition, however, a line has
25         -- specific functions for computing distances and positions.
26         -- See Also
27         -- gce_MakeLin which provides functions for more complex
28         -- line constructions
29         -- Geom_Line which provides additional functions for
30         -- constructing lines and works, in particular, with the
31         -- parametric equations of lines
32
33
34 uses Ax1  from gp,
35      Ax2  from gp,
36      Dir  from gp,
37      Trsf from gp, 
38      Vec  from gp,
39      Pnt  from gp
40
41 raises ConstructionError from Standard
42
43 is
44
45   
46   Create   returns Lin;
47         ---C++:inline
48         --- Purpose : Creates a Line corresponding to Z axis of the
49         --            reference coordinate system.
50
51   Create (A1 : Ax1)  returns Lin;
52         ---C++:inline
53         --- Purpose : Creates a line defined by axis A1.
54
55   Create (P : Pnt; V : Dir) returns Lin;
56         --- Purpose : Creates a line passing through point P and parallel to
57         --  vector V (P and V are, respectively, the origin and
58         -- the unit vector of the positioning axis of the line).
59   
60    
61
62   Reverse (me : in out)       
63         ---C++:inline
64         is static;
65
66   Reversed (me) returns Lin   is static;
67         ---C++:inline
68         --- Purpose : Reverses the direction of the line.        
69         -- Note:
70         -- -   Reverse assigns the result to this line, while
71         -- -   Reversed creates a new one.
72       
73   SetDirection (me : in out; V : Dir)    is static;
74         ---C++:inline
75         --- Purpose :  Changes the direction of the line.
76
77   SetLocation (me : in out; P : Pnt)     is static;
78         ---C++:inline
79         --- Purpose : Changes the location point (origin) of the line.
80
81   SetPosition (me : in out; A1 : Ax1)    is static;
82         ---C++:inline
83         --- Purpose :
84         --  Complete redefinition of the line.
85         --  The "Location" point of <A1> is the origin of the line.
86         --  The "Direction" of <A1> is  the direction of the line.
87
88   Direction (me)  returns Dir            is static;
89         ---C++:inline
90         --- Purpose : Returns the direction of the line.
91         ---C++: return const&
92
93   Location (me)  returns Pnt             is static;
94         ---C++:inline
95         --- Purpose : 
96         --  Returns the location point (origin) of the line.
97         ---C++: return const&
98
99   Position (me)  returns Ax1             is static;
100         --- Purpose :
101         --  Returns the axis placement one axis whith the same
102         --  location and direction as <me>.
103         ---C++: inline
104         ---C++: return const&
105  
106   Angle (me; Other : Lin)   returns Real   is static;
107         ---C++: inline
108         --- Purpose : Computes the angle between two lines in radians.
109
110   Contains (me; P : Pnt; LinearTolerance : Real)    returns Boolean
111      is static;
112         ---C++: inline
113         --- Purpose : Returns true if this line contains the point P, that is, if the
114         -- distance between point P and this line is less than or
115         -- equal to LinearTolerance..
116
117   Distance (me; P : Pnt)  returns Real             is static;
118         ---C++: inline
119         --- Purpose : Computes the distance between <me> and the point P.
120
121   Distance (me; Other : Lin)  returns Real         is static;
122         --- Purpose : Computes the distance between two lines.
123
124   SquareDistance (me; P : Pnt)  returns Real       is static;
125         ---C++: inline
126         --- Purpose : 
127         --  Computes the square distance between <me> and the point P.
128
129   SquareDistance (me; Other : Lin)   returns Real  is static;
130         ---C++: inline
131         --- Purpose : Computes the square distance between two lines.
132
133   Normal (me; P : Pnt)  returns Lin
134         ---C++: inline
135         --- Purpose :
136         --  Computes the line normal to the direction of <me>, passing
137         --  through the point P.  Raises ConstructionError
138         --  if the distance between <me> and the point P is lower
139         --  or equal to Resolution from gp because there is an infinity of
140         --  solutions in 3D space.
141      raises ConstructionError
142       
143      is static;
144
145           
146
147
148   Mirror (me : in out; P : Pnt)  
149         is static;
150
151   Mirrored (me; P : Pnt)  returns Lin
152     is static;
153         --- Purpose :
154         --  Performs the symmetrical transformation of a line
155         --  with respect to the point P which is the center of
156         --  the symmetry.
157
158
159
160
161   Mirror (me : in out; A1 : Ax1)
162          is static;
163
164   Mirrored (me; A1 : Ax1)  returns Lin   is static;
165
166         --- Purpose :
167         --  Performs the symmetrical transformation of a line
168         --  with respect to an axis placement which is the axis
169         --  of the symmetry.
170
171
172   
173   Mirror (me : in out; A2 : Ax2)
174          is static;
175
176
177   Mirrored (me; A2 : Ax2)   returns Lin  is static;
178       --- Purpose :
179         --  Performs the symmetrical transformation of a line
180         --  with respect to a plane. The axis placement  <A2> 
181         --  locates the plane of the symmetry :
182         --  (Location, XDirection, YDirection).
183
184
185      
186   Rotate(me : in out; A1 : Ax1; Ang : Real)
187         ---C++: inline
188          is static;
189
190   Rotated (me; A1 : Ax1; Ang : Real)   returns Lin  is static;
191         ---C++: inline
192         --- Purpose :
193         --  Rotates a line. A1 is the axis of the rotation.
194         --  Ang is the angular value of the rotation in radians.
195
196
197    
198
199   Scale (me : in out; P : Pnt; S : Real)
200         ---C++: inline
201         is static;
202
203   Scaled (me; P : Pnt; S : Real)   returns Lin  is static;
204         ---C++: inline
205         --- Purpose : 
206         --  Scales a line. S is the scaling value.
207         --  The "Location" point (origin) of the line is modified.
208         --  The "Direction" is reversed if the scale is negative.
209
210
211      
212
213   Transform (me : in out; T : Trsf)
214         ---C++: inline
215          is static;
216
217
218   Transformed (me; T : Trsf)   returns Lin  is static;
219         ---C++: inline
220         --- Purpose :
221         --  Transforms a line with the transformation T from class Trsf.
222
223        
224   Translate (me : in out; V : Vec)
225         ---C++: inline
226          is static;
227
228   Translated (me; V : Vec)   returns Lin   is static;
229         ---C++: inline
230         --- Purpose :
231         --  Translates a line in the direction of the vector V.
232         --  The magnitude of the translation is the vector's magnitude.
233
234
235
236
237   Translate (me : in out; P1, P2 : Pnt)        is static;
238         ---C++: inline
239
240   Translated (me; P1, P2 : Pnt)   returns Lin  is static;
241         ---C++: inline
242         --- Purpose :
243         --  Translates a line from the point P1 to the point P2.
244
245
246
247 fields
248
249    pos : Ax1;
250
251 end;