IKO_gp_GTrsf2d Interface
Defines a non persistent transformation in 2D space.
This transformation is a general transformation.
It can be a Trsf2d from package gp, an affinity, or you can
define your own transformation giving the corresponding
matrix of transformation.
With a GTrsf2d you can transform only a doublet of coordinates
XY. It is not possible to transform other geometric objects
because these transformations can change the nature of non-
elementary geometric objects.
A GTrsf2d is represented with a 2 rows * 3 columns matrix :
V1 V2 T XY XY
| a11 a12 a14 | | x | | x'|
| a21 a22 a24 | | y | | y'|
| 0 0 1 | | 1 | | 1 |
Query IKO_Standard_Object from this interface to create a copy or obtain the type name
Methods
- Init
- Init1
- Init2
- SetAffinity
- SetValue
- SetTranslationPart
- SetTrsf2d
- SetVectorialPart
- IsNegative
- IsSingular
- Form
- TranslationPart
- VectorialPart
- Value
- Invert
- Inverted
- Multiply
- Multiplied
- PreMultiply
- Power
- Powered
- Transforms
- Transformed
- Transforms1
- Trsf2d
- _CSFDB_Getgp_GTrsf2dmatrix
- _CSFDB_Getgp_GTrsf2dloc
- _CSFDB_Getgp_GTrsf2dshape
- _CSFDB_Setgp_GTrsf2dshape
- _CSFDB_Getgp_GTrsf2dscale
- _CSFDB_Setgp_GTrsf2dscale
HRESULT Init()
returns identity transformation.
HRESULT Init1(IKO_gp_Trsf2d* T)
Converts the gp_Trsf2d transformation T into a
general transformation.
HRESULT Init2(IKO_gp_Mat2d* M, KC2D* 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.
HRESULT SetAffinity(IKO_gp_Ax2d* A, double Ratio)
HRESULT SetValue(int Row, int Col, double Value)
Replaces the coefficient (Row, Col) of the matrix representing
this transformation by Value,
Raises OutOfRange if Row 1 or Row 2 or Col 1 or Col 3
HRESULT SetTranslationPart(KC2D* Coord)
HRESULT SetTrsf2d(IKO_gp_Trsf2d* T)
Assigns the vectorial and translation parts of T to this transformation.
HRESULT SetVectorialPart(IKO_gp_Mat2d* Matrix)
Replaces the vectorial part of this transformation by Matrix.
HRESULT IsNegative(VARIANT_BOOL* ret)
Returns true if the determinant of the vectorial part of
this transformation is negative.
HRESULT IsSingular(VARIANT_BOOL* ret)
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.
HRESULT Form(gp_TrsfFormKO* ret)
Returns the nature of the transformation. It can be
an identity transformation, a rotation, a translation, a mirror
transformation (relative to a point or axis), a scaling
transformation, a compound transformation or some
other type of transformation.
HRESULT TranslationPart(KC2D* ret)
Returns the translation part of the GTrsf2d.
HRESULT VectorialPart(IKO_gp_Mat2d** ret)
Computes the vectorial part of the GTrsf2d. The returned
Matrix is a 2*2 matrix.
HRESULT Value(int Row, int Col, double* ret)
Returns the coefficients of the global matrix of transformation.
Raised OutOfRange if Row 1 or Row 2 or Col 1 or Col 3
HRESULT Invert()
HRESULT Inverted(IKO_gp_GTrsf2d** ret)
Computes the reverse transformation.
Raised an exception if the matrix of the transformation
is not inversible.
HRESULT Multiply(IKO_gp_GTrsf2d* T)
HRESULT Multiplied(IKO_gp_GTrsf2d* T, IKO_gp_GTrsf2d** ret)
Computes the transformation composed with T and me.
In a C++ implementation you can also write Tcomposed = this * T.
Example :
GTrsf2d T1, T2, Tcomp; ...............
//composition :
Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1)
// transformation of a point
XY P(10.,3.);
XY P1(P);
Tcomp.Transforms(P1); //using Tcomp
XY P2(P);
T1.Transforms(P2); //using T1 then T2
T2.Transforms(P2); // P1 = P2 !!!
HRESULT PreMultiply(IKO_gp_GTrsf2d* T)
HRESULT Power(int N)
HRESULT Powered(int N, IKO_gp_GTrsf2d** ret)
Computes the following composition of transformations
this * this * .......* me, N time.
if N = 0 this = Identity
if N 0 this = me.Inverse() *...........* me.Inverse().
HRESULT Transforms(KC2D* Coord)
HRESULT Transformed(KC2D* Coord, KC2D* ret)
HRESULT Transforms1(double* X, double* Y)
Applies this transformation to the coordinates:
- of the number pair Coord, or
- X and Y.
Note:
- Transforms modifies X, Y, or the coordinate pair Coord, while
- Transformed creates a new coordinate pair.
HRESULT Trsf2d(IKO_gp_Trsf2d** ret)
HRESULT _CSFDB_Getgp_GTrsf2dmatrix(IKO_gp_Mat2d** ret)
HRESULT _CSFDB_Getgp_GTrsf2dloc(KC2D* ret)
HRESULT _CSFDB_Getgp_GTrsf2dshape(gp_TrsfFormKO* ret)
HRESULT _CSFDB_Setgp_GTrsf2dshape(gp_TrsfFormKO p)
HRESULT _CSFDB_Getgp_GTrsf2dscale(double* ret)
HRESULT _CSFDB_Setgp_GTrsf2dscale(double p)
|