summaryrefslogtreecommitdiff
path: root/inc/Select3D_Projector.hxx
blob: b56f7f55983f5f0ac3a84bae1cb29859454f3d42 (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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
// 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 _Select3D_Projector_HeaderFile
#define _Select3D_Projector_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Select3D_Projector_HeaderFile
#include <Handle_Select3D_Projector.hxx>
#endif

#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _gp_Trsf_HeaderFile
#include <gp_Trsf.hxx>
#endif
#ifndef _gp_GTrsf_HeaderFile
#include <gp_GTrsf.hxx>
#endif
#ifndef _gp_Vec2d_HeaderFile
#include <gp_Vec2d.hxx>
#endif
#ifndef _Handle_V3d_View_HeaderFile
#include <Handle_V3d_View.hxx>
#endif
#ifndef _Standard_Transient_HeaderFile
#include <Standard_Transient.hxx>
#endif
class V3d_View;
class Standard_NoSuchObject;
class gp_Ax2;
class gp_Trsf;
class gp_Vec2d;
class gp_GTrsf;
class gp_Vec;
class gp_Pnt;
class gp_Pnt2d;
class Bnd_Box;
class gp_Lin;


//! A framework to define 3D projectors. <br>
class Select3D_Projector : public Standard_Transient {

public:

  //! Constructs the 3D projector object defined by the 3D view aView. <br>
  Standard_EXPORT   Select3D_Projector(const Handle(V3d_View)& aView);
  
  Standard_EXPORT   Select3D_Projector();
  //! Creates   an axonometric  projector.   <CS> is the <br>
//!          viewing coordinate system. <br>
  Standard_EXPORT   Select3D_Projector(const gp_Ax2& CS);
  //! Creates  a  perspective  projector.   <CS>  is the <br>
//!          viewing coordinate system. <br>
  Standard_EXPORT   Select3D_Projector(const gp_Ax2& CS,const Standard_Real Focus);
  //! build a Projector with automatic minmax directions. <br>
  Standard_EXPORT   Select3D_Projector(const gp_Trsf& T,const Standard_Boolean Persp,const Standard_Real Focus);
  //! build a Projector with given minmax directions. <br>
  Standard_EXPORT   Select3D_Projector(const gp_Trsf& T,const Standard_Boolean Persp,const Standard_Real Focus,const gp_Vec2d& v1,const gp_Vec2d& v2,const gp_Vec2d& v3);
  //! build a Projector with automatic minmax directions. <br>
  Standard_EXPORT   Select3D_Projector(const gp_GTrsf& GT,const Standard_Boolean Persp,const Standard_Real Focus);
  
  Standard_EXPORT     void Set(const gp_Trsf& T,const Standard_Boolean Persp,const Standard_Real Focus) ;
  //! Sets the 3D view V used at the time of construction. <br>
  Standard_EXPORT     void SetView(const Handle(V3d_View)& V) ;
  //! Returns the 3D view used at the time of construction. <br>
       const Handle_V3d_View& View() const;
  
      virtual  void Directions(gp_Vec2d& D1,gp_Vec2d& D2,gp_Vec2d& D3) const;
  //! to compute with the given scale and translation. <br>
  Standard_EXPORT   virtual  void Scaled(const Standard_Boolean On = Standard_False) ;
  //! Returns True if there is a perspective transformation. <br>
      virtual  Standard_Boolean Perspective() const;
  //! Returns the active transformation. <br>
      virtual const gp_GTrsf& Transformation() const;
  //! Returns the active inverted transformation. <br>
      virtual const gp_GTrsf& InvertedTransformation() const;
  //! Returns the original transformation. <br>
      virtual const gp_Trsf& FullTransformation() const;
  //! Returns the focal length. <br>
      virtual  Standard_Real Focus() const;
  
      virtual  void Transform(gp_Vec& D) const;
  
      virtual  void Transform(gp_Pnt& Pnt) const;
  //! Transform and apply perspective if needed. <br>
  Standard_EXPORT   virtual  void Project(const gp_Pnt& P,gp_Pnt2d& Pout) const;
  //! Transform and apply perspective if needed. <br>
  Standard_EXPORT     void Project(const gp_Pnt& P,Standard_Real& X,Standard_Real& Y,Standard_Real& Z) const;
  //! Transform and apply perspective if needed. <br>
  Standard_EXPORT   virtual  void Project(const gp_Pnt& P,const gp_Vec& D1,gp_Pnt2d& Pout,gp_Vec2d& D1out) const;
  //! Adds to the box <B> the min-max of the point <P>. <br>
  Standard_EXPORT   virtual  void BoxAdd(const gp_Pnt2d& P,Bnd_Box& B) const;
  //! return a line going through the eye towards the <br>
//!          2d point <X,Y>. <br>
  Standard_EXPORT   virtual  gp_Lin Shoot(const Standard_Real X,const Standard_Real Y) const;
  //! Returns the minimum depth value (if clipping plane defined). <br>
//!         Should be used when call ::Shoot() to compute eyeline. <br>
        Standard_Real DepthMin() const;
  //! Returns the maximum depth value (if clipping plane defined). <br>
//!         Should be used when call ::Shoot() to compute eyeline. <br>
        Standard_Real DepthMax() const;
  //! Setup the min/max depth values (doesn't affect <br>
//!         projection functionality itself). <br>
//!         Should be used when call ::Shoot() to compute eyeline. <br>
  Standard_EXPORT     void DepthMinMax(const Standard_Real theDepthMin,const Standard_Real theDepthMax) ;
  
      virtual  void Transform(gp_Pnt& P,const gp_GTrsf& T) const;
  
      virtual  void Transform(gp_Lin& D,const gp_GTrsf& T) const;




  DEFINE_STANDARD_RTTI(Select3D_Projector)

protected:


Standard_Boolean myPersp;
Standard_Real myFocus;
gp_Trsf myScaledTrsf;
gp_GTrsf myGTrsf;
gp_GTrsf myInvTrsf;
gp_Vec2d myD1;
gp_Vec2d myD2;
gp_Vec2d myD3;


private: 

  
  Standard_EXPORT     void SetDirection() ;

Standard_Integer myType;
Handle_V3d_View myView;
Standard_Real myDepthMin;
Standard_Real myDepthMax;


};


#include <Select3D_Projector.lxx>



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


#endif