Open CASCADE Technology  7.4.0
Public Member Functions

gp_GTrsf Class Reference

Defines a non-persistent transformation in 3D space. This transformation is a general transformation. It can be a Trsf from gp, an affinity, or you can define your own transformation giving the matrix of transformation. More...

#include <gp_GTrsf.hxx>

Public Member Functions

 gp_GTrsf ()
 Returns the Identity transformation. More...
 
 gp_GTrsf (const gp_Trsf &T)
 Converts the gp_Trsf transformation T into a general transformation, i.e. Returns a GTrsf with the same matrix of coefficients as the Trsf T. More...
 
 gp_GTrsf (const gp_Mat &M, const gp_XYZ &V)
 Creates a transformation based on the matrix M and the vector V where M defines the vectorial part of the transformation, and V the translation part, or. More...
 
void SetAffinity (const gp_Ax1 &A1, const Standard_Real Ratio)
 Changes this transformation into an affinity of ratio Ratio with respect to the axis A1. Note: an affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis A1 or the plane A2, the vectors HP and HP' satisfy: HP' = Ratio * HP. More...
 
void SetAffinity (const gp_Ax2 &A2, const Standard_Real Ratio)
 Changes this transformation into an affinity of ratio Ratio with respect to the plane defined by the origin, the "X Direction" and the "Y Direction" of coordinate system A2. Note: an affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis A1 or the plane A2, the vectors HP and HP' satisfy: HP' = Ratio * HP. More...
 
void SetValue (const Standard_Integer Row, const Standard_Integer Col, const Standard_Real Value)
 Replaces the coefficient (Row, Col) of the matrix representing this transformation by Value. Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 4. More...
 
void SetVectorialPart (const gp_Mat &Matrix)
 Replaces the vectorial part of this transformation by Matrix. More...
 
void SetTranslationPart (const gp_XYZ &Coord)
 Replaces the translation part of this transformation by the coordinates of the number triple Coord. More...
 
void SetTrsf (const gp_Trsf &T)
 Assigns the vectorial and translation parts of T to this transformation. More...
 
Standard_Boolean IsNegative () const
 Returns true if the determinant of the vectorial part of this transformation is negative. More...
 
Standard_Boolean IsSingular () const
 Returns true if this transformation is singular (and therefore, cannot be inverted). Note: The Gauss LU decomposition is used to invert the transformation matrix. Consequently, the transformation is considered as singular if the largest pivot found is less than or equal to gp::Resolution(). Warning If this transformation is singular, it cannot be inverted. More...
 
gp_TrsfForm Form () const
 Returns the nature of the transformation. It can be an identity transformation, a rotation, a translation, a mirror transformation (relative to a point, an axis or a plane), a scaling transformation, a compound transformation or some other type of transformation. More...
 
void SetForm ()
 verify and set the shape of the GTrsf Other or CompoundTrsf Ex : myGTrsf.SetValue(row1,col1,val1); myGTrsf.SetValue(row2,col2,val2); ... myGTrsf.SetForm(); More...
 
const gp_XYZTranslationPart () const
 Returns the translation part of the GTrsf. More...
 
const gp_MatVectorialPart () const
 Computes the vectorial part of the GTrsf. The returned Matrix is a 3*3 matrix. More...
 
Standard_Real Value (const Standard_Integer Row, const Standard_Integer Col) const
 Returns the coefficients of the global matrix of transformation. Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 4. More...
 
Standard_Real operator() (const Standard_Integer Row, const Standard_Integer Col) const
 
void Invert ()
 
gp_GTrsf Inverted () const
 Computes the reverse transformation. Raises an exception if the matrix of the transformation is not inversible. More...
 
gp_GTrsf Multiplied (const gp_GTrsf &T) const
 Computes the transformation composed from T and <me>. In a C++ implementation you can also write Tcomposed = <me> * T. Example : GTrsf T1, T2, Tcomp; ............... //composition : Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1) // transformation of a point XYZ P(10.,3.,4.); XYZ P1(P); Tcomp.Transforms(P1); //using Tcomp XYZ P2(P); T1.Transforms(P2); //using T1 then T2 T2.Transforms(P2); // P1 = P2 !!! More...
 
gp_GTrsf operator* (const gp_GTrsf &T) const
 
void Multiply (const gp_GTrsf &T)
 Computes the transformation composed with <me> and T. <me> = <me> * T. More...
 
void operator*= (const gp_GTrsf &T)
 
void PreMultiply (const gp_GTrsf &T)
 Computes the product of the transformation T and this transformation and assigns the result to this transformation. this = T * this. More...
 
void Power (const Standard_Integer N)
 
gp_GTrsf Powered (const Standard_Integer N) const
 Computes: More...
 
void Transforms (gp_XYZ &Coord) const
 
void Transforms (Standard_Real &X, Standard_Real &Y, Standard_Real &Z) const
 Transforms a triplet XYZ with a GTrsf. More...
 
gp_Trsf Trsf () const
 

Detailed Description

Defines a non-persistent transformation in 3D space. This transformation is a general transformation. It can be a Trsf from gp, an affinity, or you can define your own transformation giving the matrix of transformation.

With a Gtrsf you can transform only a triplet of coordinates XYZ. It is not possible to transform other geometric objects because these transformations can change the nature of non- elementary geometric objects. The transformation GTrsf can be represented as follow :

V1 V2 V3 T XYZ XYZ | a11 a12 a13 a14 | | x | | x'| | a21 a22 a23 a24 | | y | | y'| | a31 a32 a33 a34 | | z | = | z'| | 0 0 0 1 | | 1 | | 1 |

where {V1, V2, V3} define the vectorial part of the transformation and T defines the translation part of the transformation. Warning A GTrsf transformation is only applicable to coordinates. Be careful if you apply such a transformation to all points of a geometric object, as this can change the nature of the object and thus render it incoherent! Typically, a circle is transformed into an ellipse by an affinity transformation. To avoid modifying the nature of an object, use a gp_Trsf transformation instead, as objects of this class respect the nature of geometric objects.

Constructor & Destructor Documentation

◆ gp_GTrsf() [1/3]

gp_GTrsf::gp_GTrsf ( )

Returns the Identity transformation.

◆ gp_GTrsf() [2/3]

gp_GTrsf::gp_GTrsf ( const gp_Trsf T)

Converts the gp_Trsf transformation T into a general transformation, i.e. Returns a GTrsf with the same matrix of coefficients as the Trsf T.

◆ gp_GTrsf() [3/3]

gp_GTrsf::gp_GTrsf ( const gp_Mat M,
const gp_XYZ V 
)

Creates a transformation based on the matrix M and the vector V where M defines the vectorial part of the transformation, and V the translation part, or.

Member Function Documentation

◆ Form()

gp_TrsfForm gp_GTrsf::Form ( ) const

Returns the nature of the transformation. It can be an identity transformation, a rotation, a translation, a mirror transformation (relative to a point, an axis or a plane), a scaling transformation, a compound transformation or some other type of transformation.

◆ Invert()

void gp_GTrsf::Invert ( )

◆ Inverted()

gp_GTrsf gp_GTrsf::Inverted ( ) const

Computes the reverse transformation. Raises an exception if the matrix of the transformation is not inversible.

◆ IsNegative()

Standard_Boolean gp_GTrsf::IsNegative ( ) const

Returns true if the determinant of the vectorial part of this transformation is negative.

◆ IsSingular()

Standard_Boolean gp_GTrsf::IsSingular ( ) const

Returns true if this transformation is singular (and therefore, cannot be inverted). Note: The Gauss LU decomposition is used to invert the transformation matrix. Consequently, the transformation is considered as singular if the largest pivot found is less than or equal to gp::Resolution(). Warning If this transformation is singular, it cannot be inverted.

◆ Multiplied()

gp_GTrsf gp_GTrsf::Multiplied ( const gp_GTrsf T) const

Computes the transformation composed from T and <me>. In a C++ implementation you can also write Tcomposed = <me> * T. Example : GTrsf T1, T2, Tcomp; ............... //composition : Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1) // transformation of a point XYZ P(10.,3.,4.); XYZ P1(P); Tcomp.Transforms(P1); //using Tcomp XYZ P2(P); T1.Transforms(P2); //using T1 then T2 T2.Transforms(P2); // P1 = P2 !!!

◆ Multiply()

void gp_GTrsf::Multiply ( const gp_GTrsf T)

Computes the transformation composed with <me> and T. <me> = <me> * T.

◆ operator()()

Standard_Real gp_GTrsf::operator() ( const Standard_Integer  Row,
const Standard_Integer  Col 
) const
inline

◆ operator*()

gp_GTrsf gp_GTrsf::operator* ( const gp_GTrsf T) const
inline

◆ operator*=()

void gp_GTrsf::operator*= ( const gp_GTrsf T)
inline

◆ Power()

void gp_GTrsf::Power ( const Standard_Integer  N)

◆ Powered()

gp_GTrsf gp_GTrsf::Powered ( const Standard_Integer  N) const

Computes:

  • the product of this transformation multiplied by itself N times, if N is positive, or
  • the product of the inverse of this transformation multiplied by itself |N| times, if N is negative. If N equals zero, the result is equal to the Identity transformation. I.e.: <me> * <me> * .......* <me>, N time. if N =0 <me> = Identity if N < 0 <me> = <me>.Inverse() *...........* <me>.Inverse().

Raises an exception if N < 0 and if the matrix of the transformation not inversible.

◆ PreMultiply()

void gp_GTrsf::PreMultiply ( const gp_GTrsf T)

Computes the product of the transformation T and this transformation and assigns the result to this transformation. this = T * this.

◆ SetAffinity() [1/2]

void gp_GTrsf::SetAffinity ( const gp_Ax1 A1,
const Standard_Real  Ratio 
)

Changes this transformation into an affinity of ratio Ratio with respect to the axis A1. Note: an affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis A1 or the plane A2, the vectors HP and HP' satisfy: HP' = Ratio * HP.

◆ SetAffinity() [2/2]

void gp_GTrsf::SetAffinity ( const gp_Ax2 A2,
const Standard_Real  Ratio 
)

Changes this transformation into an affinity of ratio Ratio with respect to the plane defined by the origin, the "X Direction" and the "Y Direction" of coordinate system A2. Note: an affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis A1 or the plane A2, the vectors HP and HP' satisfy: HP' = Ratio * HP.

◆ SetForm()

void gp_GTrsf::SetForm ( )

verify and set the shape of the GTrsf Other or CompoundTrsf Ex : myGTrsf.SetValue(row1,col1,val1); myGTrsf.SetValue(row2,col2,val2); ... myGTrsf.SetForm();

◆ SetTranslationPart()

void gp_GTrsf::SetTranslationPart ( const gp_XYZ Coord)

Replaces the translation part of this transformation by the coordinates of the number triple Coord.

◆ SetTrsf()

void gp_GTrsf::SetTrsf ( const gp_Trsf T)

Assigns the vectorial and translation parts of T to this transformation.

◆ SetValue()

void gp_GTrsf::SetValue ( const Standard_Integer  Row,
const Standard_Integer  Col,
const Standard_Real  Value 
)

Replaces the coefficient (Row, Col) of the matrix representing this transformation by Value. Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 4.

◆ SetVectorialPart()

void gp_GTrsf::SetVectorialPart ( const gp_Mat Matrix)

Replaces the vectorial part of this transformation by Matrix.

◆ Transforms() [1/2]

void gp_GTrsf::Transforms ( gp_XYZ Coord) const

◆ Transforms() [2/2]

void gp_GTrsf::Transforms ( Standard_Real X,
Standard_Real Y,
Standard_Real Z 
) const

Transforms a triplet XYZ with a GTrsf.

◆ TranslationPart()

const gp_XYZ& gp_GTrsf::TranslationPart ( ) const

Returns the translation part of the GTrsf.

◆ Trsf()

gp_Trsf gp_GTrsf::Trsf ( ) const

◆ Value()

Standard_Real gp_GTrsf::Value ( const Standard_Integer  Row,
const Standard_Integer  Col 
) const

Returns the coefficients of the global matrix of transformation. Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 4.

◆ VectorialPart()

const gp_Mat& gp_GTrsf::VectorialPart ( ) const

Computes the vectorial part of the GTrsf. The returned Matrix is a 3*3 matrix.


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