Open CASCADE Technology  6.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Attributes
Select3D_Projector Class Reference

A framework to define 3D projectors.
Projector provides services for projecting points from
world-coordinates to a viewing plane. Projection could be defined by
corresponding transformation, or coordinate system. The transformation
could be constructed for a view with transposed view transformation
matrix ( that represents view-orientation ), including, for perspective
view, focal distance ( distance from an eye to the view plane ) and
translational part that represents translation of focal point in
view-coordinate space. The Select3D_Projector class recognizes the
predefined set of popular projections: axonometric, top view, front
view and uses more efficient algorithm for projection computations.
User-defined transformation could be also defined in constructor.
Perspective projection consists of two separate parts, that are
composed together during computation: transformation component and
focale distance.
More...

#include <Select3D_Projector.hxx>

Inheritance diagram for Select3D_Projector:
Inheritance graph
[legend]

Public Member Functions

 Select3D_Projector (const Handle< V3d_View > &aView)
 Constructs the 3D projector object defined by the 3D view aView.
More...
 
 Select3D_Projector ()
 
 Select3D_Projector (const gp_Ax2 &CS)
 
 Creates an axonometric projector. <CS> represents viewing coordinate <br>

system and could be constructed from x direction, view plane normal direction,
and view point location in world-coordinate space.
More...

 
 Select3D_Projector (const gp_Ax2 &CS, const Standard_Real Focus)
 
 Creates  a  perspective  projector. <CS> represents viewing <br>

coordinate system and could be constructed from x direction,
view plane normal direction, and focal point location in world-coordinate
space. <Focus> should represent distance of an eye from view plane
in world-coordinate space (focal distance).
More...

 
 Select3D_Projector (const gp_Trsf &T, const Standard_Boolean Persp, const Standard_Real Focus)
 
 build a Projector from the given transformation. <br>

In case, when <T> transformation should represent custom view projection,
it could be constructed from two separate components: transposed view
orientation matrix and translation of focal point in view-coordiante
system. <T> could be built up from x direction, up direction,
view plane normal direction vectors and translation with SetValues(...)
method, where first row arguments (a11, a12, a13, a14) are x, y, z
component of x direction vector, and x value of reversed translation
vector. Second row arguments, are x y z for up direction and y value of
reversed translation, and the third row defined in the same manner.
This also suits for simple perspective view, where <Focus> is the focale
distance of an eye from view plane in world-space coordiantes.
Note, that in that case amount of perspective distortion (perspective
angle) should be defined through focal distance.
More...

 
 Select3D_Projector (const gp_GTrsf &GT, const Standard_Boolean Persp, const Standard_Real Focus)
 
 build a Projector from the given transformation. <br>

In case, when <GT> transformation should represent custom view
projection, it could be constructed from two separate components:
transposed view orientation matrix and translation of a focal point
in view-coordinate system.
This also suits for perspective view, with <Focus> that could be
equal to distance from an eye to a view plane in
world-coordinates (focal distance).
The 3x3 transformation matrix is built up from three vectors:
x direction, up direction and view plane normal vectors, where each
vector is a matrix row. Then <GT> is constructed from matrix and
reversed translation with methods SetTranslationPart(..) and
SetVectorialPart(..).
Note, that in that case amount of perspective distortion (perspective
angle) should be defined through focal distance.
More...

 
void Set (const gp_Trsf &T, const Standard_Boolean Persp, const Standard_Real Focus)
 
void SetView (const Handle< V3d_View > &V)
 Sets the 3D view V used at the time of construction.
More...
 
const Handle_V3d_View & View () const
 Returns the 3D view used at the time of construction.
More...
 
virtual void Scaled (const Standard_Boolean On=Standard_False)
 to compute with the given scale and translation.
More...
 
virtual Standard_Boolean Perspective () const
 Returns True if there is a perspective transformation.
More...
 
virtual const gp_GTrsfTransformation () const
 Returns the active transformation.
More...
 
virtual const gp_GTrsfInvertedTransformation () const
 Returns the active inverted transformation.
More...
 
virtual const gp_TrsfFullTransformation () const
 Returns the original transformation.
More...
 
virtual Standard_Real Focus () const
 Returns the focal length.
More...
 
virtual void Transform (gp_Vec &D) const
 
virtual void Transform (gp_Pnt &Pnt) const
 
virtual void Project (const gp_Pnt &P, gp_Pnt2d &Pout) const
 Transform and apply perspective if needed.
More...
 
void Project (const gp_Pnt &P, Standard_Real &X, Standard_Real &Y, Standard_Real &Z) const
 Transform and apply perspective if needed.
More...
 
virtual void Project (const gp_Pnt &P, const gp_Vec &D1, gp_Pnt2d &Pout, gp_Vec2d &D1out) const
 Transform and apply perspective if needed.
More...
 
virtual gp_Lin Shoot (const Standard_Real X, const Standard_Real Y) const
 return a line going through the eye towards the
2d point <X,Y>.
More...
 
virtual void Transform (gp_Pnt &P, const gp_GTrsf &T) const
 
virtual void Transform (gp_Lin &D, const gp_GTrsf &T) const
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor. More...
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing. More...
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter. More...
 
virtual ~Standard_Transient ()
 Destructor must be virtual. More...
 
virtual void Delete () const
 Memory deallocator for transient classes. More...
 
virtual void ShallowDump (Standard_OStream &) const
 
virtual const
Handle_Standard_Type & 
DynamicType () const
 Returns a type information object about this object. More...
 
Standard_Boolean IsInstance (const Handle_Standard_Type &theType) const
 Returns a true value if this is an instance of Type. More...
 
Standard_Boolean IsInstance (const Standard_CString theTypeName) const
 Returns a true value if this is an instance of TypeName. More...
 
Standard_Boolean IsKind (const Handle_Standard_Type &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More...
 
Standard_Boolean IsKind (const Standard_CString theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More...
 
virtual Handle_Standard_Transient This () const
 Returns a Handle which references this object. Must never be called to objects created in stack. More...
 
Standard_Integer GetRefCount () const
 Get the reference counter of this object. More...
 

Protected Attributes

Standard_Boolean myPersp
 
Standard_Real myFocus
 
gp_Trsf myScaledTrsf
 
gp_GTrsf myGTrsf
 
gp_GTrsf myInvTrsf
 

Detailed Description

A framework to define 3D projectors.
Projector provides services for projecting points from
world-coordinates to a viewing plane. Projection could be defined by
corresponding transformation, or coordinate system. The transformation
could be constructed for a view with transposed view transformation
matrix ( that represents view-orientation ), including, for perspective
view, focal distance ( distance from an eye to the view plane ) and
translational part that represents translation of focal point in
view-coordinate space. The Select3D_Projector class recognizes the
predefined set of popular projections: axonometric, top view, front
view and uses more efficient algorithm for projection computations.
User-defined transformation could be also defined in constructor.
Perspective projection consists of two separate parts, that are
composed together during computation: transformation component and
focale distance.

Constructor & Destructor Documentation

Select3D_Projector::Select3D_Projector ( const Handle< V3d_View > &  aView)

Constructs the 3D projector object defined by the 3D view aView.

Select3D_Projector::Select3D_Projector ( )
Select3D_Projector::Select3D_Projector ( const gp_Ax2 CS)

 Creates an axonometric projector. <CS> represents viewing coordinate <br>

system and could be constructed from x direction, view plane normal direction,
and view point location in world-coordinate space.

Select3D_Projector::Select3D_Projector ( const gp_Ax2 CS,
const Standard_Real  Focus 
)

 Creates  a  perspective  projector. <CS> represents viewing <br>

coordinate system and could be constructed from x direction,
view plane normal direction, and focal point location in world-coordinate
space. <Focus> should represent distance of an eye from view plane
in world-coordinate space (focal distance).

Select3D_Projector::Select3D_Projector ( const gp_Trsf T,
const Standard_Boolean  Persp,
const Standard_Real  Focus 
)

 build a Projector from the given transformation. <br>

In case, when <T> transformation should represent custom view projection,
it could be constructed from two separate components: transposed view
orientation matrix and translation of focal point in view-coordiante
system. <T> could be built up from x direction, up direction,
view plane normal direction vectors and translation with SetValues(...)
method, where first row arguments (a11, a12, a13, a14) are x, y, z
component of x direction vector, and x value of reversed translation
vector. Second row arguments, are x y z for up direction and y value of
reversed translation, and the third row defined in the same manner.
This also suits for simple perspective view, where <Focus> is the focale
distance of an eye from view plane in world-space coordiantes.
Note, that in that case amount of perspective distortion (perspective
angle) should be defined through focal distance.

Select3D_Projector::Select3D_Projector ( const gp_GTrsf GT,
const Standard_Boolean  Persp,
const Standard_Real  Focus 
)

 build a Projector from the given transformation. <br>

In case, when <GT> transformation should represent custom view
projection, it could be constructed from two separate components:
transposed view orientation matrix and translation of a focal point
in view-coordinate system.
This also suits for perspective view, with <Focus> that could be
equal to distance from an eye to a view plane in
world-coordinates (focal distance).
The 3x3 transformation matrix is built up from three vectors:
x direction, up direction and view plane normal vectors, where each
vector is a matrix row. Then <GT> is constructed from matrix and
reversed translation with methods SetTranslationPart(..) and
SetVectorialPart(..).
Note, that in that case amount of perspective distortion (perspective
angle) should be defined through focal distance.

Member Function Documentation

virtual Standard_Real Select3D_Projector::Focus ( ) const
virtual

Returns the focal length.

virtual const gp_Trsf& Select3D_Projector::FullTransformation ( ) const
virtual

Returns the original transformation.

virtual const gp_GTrsf& Select3D_Projector::InvertedTransformation ( ) const
virtual

Returns the active inverted transformation.

virtual Standard_Boolean Select3D_Projector::Perspective ( ) const
virtual

Returns True if there is a perspective transformation.

virtual void Select3D_Projector::Project ( const gp_Pnt P,
gp_Pnt2d Pout 
) const
virtual

Transform and apply perspective if needed.

void Select3D_Projector::Project ( const gp_Pnt P,
Standard_Real X,
Standard_Real Y,
Standard_Real Z 
) const

Transform and apply perspective if needed.

virtual void Select3D_Projector::Project ( const gp_Pnt P,
const gp_Vec D1,
gp_Pnt2d Pout,
gp_Vec2d D1out 
) const
virtual

Transform and apply perspective if needed.

virtual void Select3D_Projector::Scaled ( const Standard_Boolean  On = Standard_False)
virtual

to compute with the given scale and translation.

void Select3D_Projector::Set ( const gp_Trsf T,
const Standard_Boolean  Persp,
const Standard_Real  Focus 
)
void Select3D_Projector::SetView ( const Handle< V3d_View > &  V)

Sets the 3D view V used at the time of construction.

virtual gp_Lin Select3D_Projector::Shoot ( const Standard_Real  X,
const Standard_Real  Y 
) const
virtual

return a line going through the eye towards the
2d point <X,Y>.

virtual void Select3D_Projector::Transform ( gp_Vec D) const
virtual
virtual void Select3D_Projector::Transform ( gp_Pnt Pnt) const
virtual
virtual void Select3D_Projector::Transform ( gp_Pnt P,
const gp_GTrsf T 
) const
virtual
virtual void Select3D_Projector::Transform ( gp_Lin D,
const gp_GTrsf T 
) const
virtual
virtual const gp_GTrsf& Select3D_Projector::Transformation ( ) const
virtual

Returns the active transformation.

const Handle_V3d_View& Select3D_Projector::View ( ) const

Returns the 3D view used at the time of construction.

Field Documentation

Standard_Real Select3D_Projector::myFocus
protected
gp_GTrsf Select3D_Projector::myGTrsf
protected
gp_GTrsf Select3D_Projector::myInvTrsf
protected
Standard_Boolean Select3D_Projector::myPersp
protected
gp_Trsf Select3D_Projector::myScaledTrsf
protected

The documentation for this class was generated from the following file: