summaryrefslogtreecommitdiff
path: root/inc/Geom_Axis2Placement.hxx
blob: ac5e0b58273acc55a4fd012962e5b62484c9dd58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _Geom_Axis2Placement_HeaderFile
#define _Geom_Axis2Placement_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Geom_Axis2Placement_HeaderFile
#include <Handle_Geom_Axis2Placement.hxx>
#endif

#ifndef _gp_Dir_HeaderFile
#include <gp_Dir.hxx>
#endif
#ifndef _Geom_AxisPlacement_HeaderFile
#include <Geom_AxisPlacement.hxx>
#endif
#ifndef _Handle_Geom_Geometry_HeaderFile
#include <Handle_Geom_Geometry.hxx>
#endif
class Standard_ConstructionError;
class gp_Ax2;
class gp_Pnt;
class gp_Dir;
class gp_Trsf;
class Geom_Geometry;


//!  Describes a right-handed coordinate system in 3D space. <br>
//! A coordinate system is defined by: <br>
//! - its origin, also termed the "Location point" of the coordinate system, <br>
//! - three orthogonal unit vectors, termed respectively <br>
//!   the "X Direction", "Y Direction" and "Direction" (or <br>
//!   "main Direction") of the coordinate system. <br>
//! As a Geom_Axis2Placement coordinate system is <br>
//! right-handed, its "Direction" is always equal to the <br>
//! cross product of its "X Direction" and "Y Direction". <br>
//! The "Direction" of a coordinate system is called the <br>
//! "main Direction" because when this unit vector is <br>
//! modified, the "X Direction" and "Y Direction" are <br>
//! recomputed, whereas when the "X Direction" or "Y <br>
//! Direction" is changed, the "main Direction" is <br>
//! retained. The "main Direction" is also the "Z Direction". <br>
//! Note: Geom_Axis2Placement coordinate systems <br>
//! provide the same kind of "geometric" services as <br>
//! gp_Ax2 coordinate systems but have more complex <br>
//! data structures. The geometric objects provided by <br>
//! the Geom package use gp_Ax2 objects to include <br>
//! coordinate systems in their data structures, or to <br>
//! define the geometric transformations, which are applied to them. <br>
//! Geom_Axis2Placement coordinate systems are <br>
//! used in a context where they can be shared by <br>
//! several objects contained inside a common data structure. <br>
class Geom_Axis2Placement : public Geom_AxisPlacement {

public:

  //! Returns a transient copy of A2. <br>
  Standard_EXPORT   Geom_Axis2Placement(const gp_Ax2& A2);
  
//!  P is the origin of the axis placement, N is the main <br>
//!  direction of the axis placement and Vx is the "XDirection". <br>
//!  If the two directions N and Vx are not orthogonal the <br>
//!  "XDirection" is computed as follow : <br>
//!  XDirection = N ^ (Vx ^ N). <br>//! Raised if N and Vx are parallel. <br>
  Standard_EXPORT   Geom_Axis2Placement(const gp_Pnt& P,const gp_Dir& N,const gp_Dir& Vx);
  //! Assigns the origin and the three unit vectors of A2 to <br>
//! this coordinate system. <br>
  Standard_EXPORT     void SetAx2(const gp_Ax2& A2) ;
  
//!  Changes the main direction of the axis placement. <br>
//!  The "Xdirection" is modified : <br>
//!  New XDirection = V ^ (Previous_Xdirection ^ V). <br>
//!  Raised if V and the previous "XDirection" are parallel <br>
//!  because it is impossible to calculate the new "XDirection" <br>
//!  and the new "YDirection". <br>
  Standard_EXPORT     void SetDirection(const gp_Dir& V) ;
  
//!  Changes the "XDirection" of the axis placement, Vx is the <br>
//!  new "XDirection". If Vx is not normal to the main direction <br>
//!  then "XDirection" is computed as follow : <br>
//!  XDirection = Direction ^ ( Vx ^ Direction). <br>
//!  The main direction is not modified. <br>//!  Raised if Vx and "Direction"  are parallel. <br>
  Standard_EXPORT     void SetXDirection(const gp_Dir& Vx) ;
  
//!  Changes the "YDirection" of the axis placement, Vy is the <br>
//!  new "YDirection". If Vy is not normal to the main direction <br>
//!  then "YDirection" is computed as follow : <br>
//!  YDirection = Direction ^ ( Vy ^ Direction). <br>
//!  The main direction is not modified. The "XDirection" is <br>
//!  modified. <br>//! Raised if Vy and the main direction are parallel. <br>
  Standard_EXPORT     void SetYDirection(const gp_Dir& Vy) ;
  //! Returns a non transient copy of <me>. <br>
  Standard_EXPORT     gp_Ax2 Ax2() const;
  //! Returns the "XDirection". This is a unit vector. <br>
  Standard_EXPORT    const gp_Dir& XDirection() const;
  //! Returns the "YDirection". This is a unit vector. <br>
  Standard_EXPORT    const gp_Dir& YDirection() const;
  
//!  Transforms an axis placement with a Trsf. <br>
//!  The "Location" point, the "XDirection" and the <br>
//!  "YDirection" are transformed with T.  The resulting <br>
//!  main "Direction" of <me> is the cross product between <br>
//!  the "XDirection" and the "YDirection" after transformation. <br>
  Standard_EXPORT     void Transform(const gp_Trsf& T) ;
  //! Creates a new object which is a copy of this coordinate system. <br>
  Standard_EXPORT     Handle_Geom_Geometry Copy() const;




  DEFINE_STANDARD_RTTI(Geom_Axis2Placement)

protected:




private: 

  
  Standard_EXPORT   Geom_Axis2Placement(const gp_Pnt& P,const gp_Dir& Vz,const gp_Dir& Vx,const gp_Dir& Vy);

gp_Dir vxdir;
gp_Dir vydir;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif