601d53d59b53558ff0af9d86c827593125f627f2
[occt.git] / src / Geom / Geom_Axis1Placement.hxx
1 // Created on: 1993-03-09
2 // Created by: JCV
3 // Copyright (c) 1993-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _Geom_Axis1Placement_HeaderFile
18 #define _Geom_Axis1Placement_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_Type.hxx>
22
23 #include <Geom_AxisPlacement.hxx>
24 class gp_Ax1;
25 class gp_Pnt;
26 class gp_Dir;
27 class gp_Trsf;
28 class Geom_Geometry;
29
30
31 class Geom_Axis1Placement;
32 DEFINE_STANDARD_HANDLE(Geom_Axis1Placement, Geom_AxisPlacement)
33
34 //! Describes an axis in 3D space.
35 //! An axis is defined by:
36 //! - its origin, also termed the "Location point" of the axis,
37 //! - its unit vector, termed the "Direction" of the axis.
38 //! Note: Geom_Axis1Placement axes provide the
39 //! same kind of "geometric" services as gp_Ax1 axes
40 //! but have more complex data structures. The
41 //! geometric objects provided by the Geom package
42 //! use gp_Ax1 objects to include axes in their data
43 //! structures, or to define an axis of symmetry or axis of rotation.
44 //! Geom_Axis1Placement axes are used in a context
45 //! where they can be shared by several objects
46 //! contained inside a common data structure.
47 class Geom_Axis1Placement : public Geom_AxisPlacement
48 {
49
50 public:
51
52   
53   //! Returns a transient copy of A1.
54   Standard_EXPORT Geom_Axis1Placement(const gp_Ax1& A1);
55   
56
57   //! P is the origin of the axis placement and V is the direction
58   //! of the axis placement.
59   Standard_EXPORT Geom_Axis1Placement(const gp_Pnt& P, const gp_Dir& V);
60   
61   //! Returns a non transient copy of <me>.
62   Standard_EXPORT const gp_Ax1& Ax1() const;
63   
64   //! Reverses the direction of the axis placement.
65   Standard_EXPORT void Reverse();
66   
67   //! Returns a copy of <me> reversed.
68   Standard_EXPORT Standard_NODISCARD Handle(Geom_Axis1Placement) Reversed() const;
69   
70   //! Assigns V to the unit vector of this axis.
71   Standard_EXPORT void SetDirection (const gp_Dir& V) Standard_OVERRIDE;
72   
73   //! Applies the transformation T to this axis.
74   Standard_EXPORT void Transform (const gp_Trsf& T) Standard_OVERRIDE;
75   
76   //! Creates a new object, which is a copy of this axis.
77   Standard_EXPORT Handle(Geom_Geometry) Copy() const Standard_OVERRIDE;
78
79
80
81
82   DEFINE_STANDARD_RTTIEXT(Geom_Axis1Placement,Geom_AxisPlacement)
83
84 protected:
85
86
87
88
89 private:
90
91
92
93
94 };
95
96
97
98
99
100
101
102 #endif // _Geom_Axis1Placement_HeaderFile