// 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 _gp_Trsf2d_HeaderFile #define _gp_Trsf2d_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _gp_TrsfForm_HeaderFile #include #endif #ifndef _gp_Mat2d_HeaderFile #include #endif #ifndef _gp_XY_HeaderFile #include #endif #ifndef _Standard_Storable_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Standard_PrimitiveTypes_HeaderFile #include #endif class Standard_ConstructionError; class Standard_OutOfRange; class gp_GTrsf2d; class gp_Trsf; class gp_Pnt2d; class gp_Ax2d; class gp_Vec2d; class gp_XY; class gp_Mat2d; Standard_EXPORT const Handle(Standard_Type)& STANDARD_TYPE(gp_Trsf2d); //! Defines a non-persistent transformation in 2D space.
//! The following transformations are implemented :
//! . Translation, Rotation, Scale
//! . Symmetry with respect to a point and a line.
//! Complex transformations can be obtained by combining the
//! previous elementary transformations using the method Multiply.
//! The transformations can be represented as follow :
//!
//! V1 V2 T XY XY
//! | a11 a12 a13 | | x | | x'|
//! | a21 a22 a23 | | y | | y'|
//! | 0 0 1 | | 1 | | 1 |
class gp_Trsf2d { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! Returns identity transformation.
gp_Trsf2d(); //! Creates a 2d transformation in the XY plane from a
//! 3d transformation .
gp_Trsf2d(const gp_Trsf& T); //! Changes the transformation into a symmetrical transformation.
//! P is the center of the symmetry.
void SetMirror(const gp_Pnt2d& P) ; //! Changes the transformation into a symmetrical transformation.
//! A is the center of the axial symmetry.
Standard_EXPORT void SetMirror(const gp_Ax2d& A) ; //! Changes the transformation into a rotation.
//! P is the rotation's center and Ang is the angular value of the
//! rotation in radian.
void SetRotation(const gp_Pnt2d& P,const Standard_Real Ang) ; //! Changes the transformation into a scale.
//! P is the center of the scale and S is the scaling value.
void SetScale(const gp_Pnt2d& P,const Standard_Real S) ; //! Changes a transformation allowing passage from the coordinate
//! system "FromSystem1" to the coordinate system "ToSystem2".
Standard_EXPORT void SetTransformation(const gp_Ax2d& FromSystem1,const gp_Ax2d& ToSystem2) ; //! Changes the transformation allowing passage from the basic
//! coordinate system
//! {P(0.,0.,0.), VX (1.,0.,0.), VY (0.,1.,0.)}
//! to the local coordinate system defined with the Ax2d ToSystem.
Standard_EXPORT void SetTransformation(const gp_Ax2d& ToSystem) ; //! Changes the transformation into a translation.
//! V is the vector of the translation.
void SetTranslation(const gp_Vec2d& V) ; //! Makes the transformation into a translation from
//! the point P1 to the point P2.
void SetTranslation(const gp_Pnt2d& P1,const gp_Pnt2d& P2) ; //! Replaces the translation vector with V.
Standard_EXPORT void SetTranslationPart(const gp_Vec2d& V) ; //! Modifies the scale factor.
Standard_EXPORT void SetScaleFactor(const Standard_Real S) ; //! Returns true if the determinant of the vectorial part of
//! this transformation is negative..
Standard_Boolean IsNegative() const; //! Returns the nature of the transformation. It can be an
//! identity transformation, a rotation, a translation, a mirror
//! (relative to a point or an axis), a scaling transformation,
//! or a compound transformation.
gp_TrsfForm Form() const; //! Returns the scale factor.
Standard_Real ScaleFactor() const; //! Returns the translation part of the transformation's matrix
const gp_XY& TranslationPart() const; //! Returns the vectorial part of the transformation. It is a
//! 2*2 matrix which includes the scale factor.
Standard_EXPORT gp_Mat2d VectorialPart() const; //! Returns the homogeneous vectorial part of the transformation.
//! It is a 2*2 matrix which doesn't include the scale factor.
//! The coefficients of this matrix must be multiplied by the
//! scale factor to obtain the coefficients of the transformation.
const gp_Mat2d& HVectorialPart() const; //! Returns the angle corresponding to the rotational component
//! of the transformation matrix (operation opposite to SetRotation()).
Standard_EXPORT Standard_Real RotationPart() const; //! Returns the coefficients of the transformation's matrix.
//! It is a 2 rows * 3 columns matrix.
//! Raises OutOfRange if Row < 1 or Row > 2 or Col < 1 or Col > 3
Standard_Real Value(const Standard_Integer Row,const Standard_Integer Col) const; Standard_EXPORT void Invert() ; //! Computes the reverse transformation.
//! Raises an exception if the matrix of the transformation
//! is not inversible, it means that the scale factor is lower
//! or equal to Resolution from package gp.
gp_Trsf2d Inverted() const; gp_Trsf2d Multiplied(const gp_Trsf2d& T) const; gp_Trsf2d operator *(const gp_Trsf2d& T) const { return Multiplied(T); } //! Computes the transformation composed from and .
//! In a C++ implementation you can also write Tcomposed = * T.
//! Example :
//! Trsf2d T1, T2, Tcomp; ...............
//! //composition :
//! Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1)
//! // transformation of a point
//! Pnt2d P1(10.,3.,4.);
//! Pnt2d P2 = P1.Transformed(Tcomp); //using Tcomp
//! Pnt2d P3 = P1.Transformed(T1); //using T1 then T2
//! P3.Transform(T2); // P3 = P2 !!!
Standard_EXPORT void Multiply(const gp_Trsf2d& T) ; void operator *=(const gp_Trsf2d& T) { Multiply(T); } //! Computes the transformation composed from and T.
//! = T *
Standard_EXPORT void PreMultiply(const gp_Trsf2d& T) ; Standard_EXPORT void Power(const Standard_Integer N) ; //! Computes the following composition of transformations
//! * * .......* , N time.
//! if N = 0 = Identity
//! if N < 0 = .Inverse() *...........* .Inverse().
gp_Trsf2d Powered(const Standard_Integer N) ; void Transforms(Standard_Real& X,Standard_Real& Y) const; //! Transforms a doublet XY with a Trsf2d
void Transforms(gp_XY& Coord) const; Standard_Real _CSFDB_Getgp_Trsf2dscale() const { return scale; } void _CSFDB_Setgp_Trsf2dscale(const Standard_Real p) { scale = p; } gp_TrsfForm _CSFDB_Getgp_Trsf2dshape() const { return shape; } void _CSFDB_Setgp_Trsf2dshape(const gp_TrsfForm p) { shape = p; } const gp_Mat2d& _CSFDB_Getgp_Trsf2dmatrix() const { return matrix; } const gp_XY& _CSFDB_Getgp_Trsf2dloc() const { return loc; } friend class gp_GTrsf2d; protected: private: Standard_Real scale; gp_TrsfForm shape; gp_Mat2d matrix; gp_XY loc; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif