1 -- Copyright (c) 1991-1999 Matra Datavision
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.
15 class Ax2d   from gp
17          ---Purpose:
18          -- Describes an axis in the plane (2D space).
19          -- An axis is defined by:
20          -- -   its origin (also referred to as its "Location point"),   and
21          -- -   its unit vector (referred to as its "Direction").
22          -- An axis implicitly defines a direct, right-handed
23          -- coordinate system in 2D space by:
24          -- -   its origin,
25          -- - its "Direction" (giving the "X Direction" of the coordinate system), and
26          -- -   the unit vector normal to "Direction" (positive angle
27          --   measured in the trigonometric sense).
28          -- An axis is used:
29          -- -   to describe 2D geometric entities (for example, the
30          --   axis which defines angular coordinates on a circle).
31          --   It serves for the same purpose as the STEP function
32          --   "axis placement one axis", or
33          -- -   to define geometric transformations (axis of
34          --   symmetry, axis of rotation, and so on).
35          -- Note: to define a left-handed 2D coordinate system, use gp_Ax22d.
37 uses Dir2d, Pnt2d, Trsf2d, Vec2d
39 is
42   Create  returns Ax2d;
43         ---C++:inline
44         --- Purpose : Creates an axis object representing X axis of
45         --            the reference co-ordinate system.
47   Create (P : Pnt2d; V : Dir2d)  returns Ax2d;
48         ---C++:inline
49         --- Purpose :
50         --  Creates an Ax2d. <P> is the "Location" point of
51         --  the axis placement and V is the "Direction" of
52         --  the axis placement.
55   SetLocation (me : out; Locat : Pnt2d)      is static;
56         ---C++:inline
57         --- Purpose :  Changes the "Location" point (origin) of <me>.
59   SetDirection (me : out; V : Dir2d)         is static;
60         ---C++:inline
61         --- Purpose : Changes the direction of <me>.
63   Location (me)  returns Pnt2d       is static;
64         ---C++:inline
65         --- Purpose : Returns the origin of <me>.
66         ---C++: return const&
68   Direction (me)   returns Dir2d     is static;
69         ---C++:inline
70         --- Purpose : Returns the direction of <me>.
71         ---C++: return const&
73   IsCoaxial (me; Other : Ax2d; AngularTolerance, LinearTolerance : Real)
74      returns Boolean
75      is static;
76         --- Purpose :
77         --  Returns True if  :
78         --  . the angle between <me> and <Other> is lower or equal
79         --    to <AngularTolerance> and
80         --  . the distance between <me>.Location() and <Other> is lower
81         --    or equal to <LinearTolerance> and
82         --  . the distance between <Other>.Location() and <me> is lower
83         --    or equal to LinearTolerance.
86   IsNormal (me; Other : Ax2d; AngularTolerance : Real)   returns Boolean
87      is static;
88         ---C++:inline
89         --- Purpose : Returns true if this axis and the axis Other are normal to
90         -- each other. That is, if the angle between the two axes is equal to Pi/2 or -Pi/2.
91         -- Note: the tolerance criterion is given by AngularTolerance.
94   IsOpposite (me; Other : Ax2d; AngularTolerance : Real)   returns Boolean
95      is static;
96         ---C++:inline
97         --- Purpose : Returns true if this axis and the axis Other are parallel,
98         -- and have opposite orientations. That is, if the angle
99         -- between the two axes is equal to Pi or -Pi.
100         -- Note: the tolerance criterion is given by AngularTolerance.
102   IsParallel (me; Other : Ax2d; AngularTolerance : Real)   returns Boolean
103      is static;
104         ---C++:inline
105         --- Purpose :  Returns true if this axis and the axis Other are parallel,
106         -- and have either the same or opposite orientations. That
107         -- is, if the angle between the two axes is equal to 0, Pi or -Pi.
108         -- Note: the tolerance criterion is given by AngularTolerance.
110   Angle (me; Other : Ax2d)   returns Real   is static;
111         ---C++:inline
112         --- Purpose :
113         -- Computes the angle, in radians, between this axis and
114         -- the axis Other. The value of the angle is between -Pi and Pi.
116   Reverse (me : in out)          is static;
117         ---C++:inline
118         --- Purpose : Reverses the direction of <me> and assigns the result to this axis.
121   Reversed (me)   returns Ax2d   is static;
122         ---C++:inline
123         --- Purpose :
124         --  Computes a new axis placement with a direction opposite to
125         --  the direction of <me>.
128   Mirror (me : in out; P : Pnt2d)          is static;
130   Mirrored (me; P : Pnt2d)  returns Ax2d   is static;
133         --- Purpose :
134         --  Performs the symmetrical transformation of an axis
135         --  placement with respect to the point P which is the
136         --  center of the symmetry.
140   Mirror (me : in out; A : Ax2d)           is static;
142   Mirrored (me; A : Ax2d) returns Ax2d     is static;
143         --- Purpose :
144         --  Performs the symmetrical transformation of an axis
145         --  placement with respect to an axis placement which
146         --  is the axis of the symmetry.
152   Rotate (me : in out; P : Pnt2d; Ang : Real)        is static;
153         ---C++:inline
155   Rotated (me; P : Pnt2d; Ang : Real)  returns Ax2d  is static;
156         ---C++:inline
157         --- Purpose :
158         --  Rotates an axis placement. <P> is the center of the
159         --  rotation . Ang is the angular value of the rotation
165   Scale (me : in out; P : Pnt2d; S : Real)         is static;
167   Scaled (me; P : Pnt2d; S : Real)  returns Ax2d   is static;
168         ---C++:inline
169        --- Purpose :
170         --  Applies a scaling transformation on the axis placement.
171         --  The "Location" point of the axisplacement is modified.
172         --  The "Direction" is reversed if the scale is negative.
178   Transform (me : in out; T : Trsf2d)              is static;
179         ---C++:inline
181   Transformed(me; T : Trsf2d)   returns Ax2d       is static;
182         ---C++:inline
183         --- Purpose :  Transforms an axis placement with a Trsf.
187   Translate (me : in out; V : Vec2d)               is static;
188         ---C++:inline
190   Translated (me; V : Vec2d)  returns Ax2d         is static;
191         ---C++:inline
192         --- Purpose :
193         --  Translates an axis placement in the direction of the vector
194         --  <V>. The magnitude of the translation is the vector's magnitude.
196   Translate (me : in out; P1, P2 : Pnt2d)          is static;
197         ---C++:inline
199   Translated (me; P1, P2 : Pnt2d) returns Ax2d     is static;
200         ---C++:inline
201         --- Purpose :
202         --  Translates an axis placement from the point <P1> to the
203         --  point <P2>.
207 fields
209    loc  : Pnt2d;
210    vdir : Dir2d;
212 end;