|  |  |  | GIMP Math Library Reference Manual |  | 
|---|
| GimpMatrixGimpMatrix — Utilities to set up and manipulate 3x3 transformation matrices. | 
            GimpMatrix2;
            GimpMatrix3;
            GimpMatrix4;
void        gimp_matrix2_identity           (GimpMatrix2 *matrix);
void        gimp_matrix2_mult               (const GimpMatrix2 *matrix1,
                                             GimpMatrix2 *matrix2);
void        gimp_matrix3_identity           (GimpMatrix3 *matrix);
void        gimp_matrix3_mult               (const GimpMatrix3 *matrix1,
                                             GimpMatrix3 *matrix2);
void        gimp_matrix3_translate          (GimpMatrix3 *matrix,
                                             gdouble x,
                                             gdouble y);
void        gimp_matrix3_scale              (GimpMatrix3 *matrix,
                                             gdouble x,
                                             gdouble y);
void        gimp_matrix3_rotate             (GimpMatrix3 *matrix,
                                             gdouble theta);
void        gimp_matrix3_xshear             (GimpMatrix3 *matrix,
                                             gdouble amount);
void        gimp_matrix3_yshear             (GimpMatrix3 *matrix,
                                             gdouble amount);
void        gimp_matrix3_affine             (GimpMatrix3 *matrix,
                                             gdouble a,
                                             gdouble b,
                                             gdouble c,
                                             gdouble d,
                                             gdouble e,
                                             gdouble f);
void        gimp_matrix3_transform_point    (const GimpMatrix3 *matrix,
                                             gdouble x,
                                             gdouble y,
                                             gdouble *newx,
                                             gdouble *newy);
gdouble     gimp_matrix3_determinant        (const GimpMatrix3 *matrix);
void        gimp_matrix3_invert             (GimpMatrix3 *matrix);
gboolean    gimp_matrix3_is_diagonal        (const GimpMatrix3 *matrix);
gboolean    gimp_matrix3_is_identity        (const GimpMatrix3 *matrix);
gboolean    gimp_matrix3_is_simple          (const GimpMatrix3 *matrix);
void        gimp_matrix4_to_deg             (const GimpMatrix4 *matrix,
                                             gdouble *a,
                                             gdouble *b,
                                             gdouble *c);
When doing image manipulation you will often need 3x3 transformation matrices that define translation, rotation, scaling, shearing and arbitrary perspective transformations using a 3x3 matrix. Here you'll find a set of utility functions to set up those matrices and to perform basic matrix manipulations and tests.
void gimp_matrix2_identity (GimpMatrix2 *matrix);
Sets the matrix to the identity matrix.
| matrix: | A matrix. | 
void gimp_matrix2_mult (const GimpMatrix2 *matrix1, GimpMatrix2 *matrix2);
Multiplies two matrices and puts the result into the second one.
| matrix1: | The first input matrix. | 
| matrix2: | The second input matrix which will be overwritten by the result. | 
void gimp_matrix3_identity (GimpMatrix3 *matrix);
Sets the matrix to the identity matrix.
| matrix: | A matrix. | 
void gimp_matrix3_mult (const GimpMatrix3 *matrix1, GimpMatrix3 *matrix2);
Multiplies two matrices and puts the result into the second one.
| matrix1: | The first input matrix. | 
| matrix2: | The second input matrix which will be overwritten by the result. | 
void gimp_matrix3_translate (GimpMatrix3 *matrix, gdouble x, gdouble y);
Translates the matrix by x and y.
| matrix: | The matrix that is to be translated. | 
| x: | Translation in X direction. | 
| y: | Translation in Y direction. | 
void gimp_matrix3_scale (GimpMatrix3 *matrix, gdouble x, gdouble y);
Scales the matrix by x and y
| matrix: | The matrix that is to be scaled. | 
| x: | X scale factor. | 
| y: | Y scale factor. | 
void gimp_matrix3_rotate (GimpMatrix3 *matrix, gdouble theta);
Rotates the matrix by theta degrees.
| matrix: | The matrix that is to be rotated. | 
| theta: | The angle of rotation (in radians). | 
void gimp_matrix3_xshear (GimpMatrix3 *matrix, gdouble amount);
Shears the matrix in the X direction.
| matrix: | The matrix that is to be sheared. | 
| amount: | X shear amount. | 
void gimp_matrix3_yshear (GimpMatrix3 *matrix, gdouble amount);
Shears the matrix in the Y direction.
| matrix: | The matrix that is to be sheared. | 
| amount: | Y shear amount. | 
void gimp_matrix3_affine (GimpMatrix3 *matrix, gdouble a, gdouble b, gdouble c, gdouble d, gdouble e, gdouble f);
Applies the affine transformation given by six values to matrix.
The six values form define an affine transformation matrix as
illustrated below:
( a c e ) ( b d f ) ( 0 0 1 )
| matrix: | The input matrix. | 
| a: | |
| b: | |
| c: | |
| d: | |
| e: | |
| f: | 
void gimp_matrix3_transform_point (const GimpMatrix3 *matrix, gdouble x, gdouble y, gdouble *newx, gdouble *newy);
Transforms a point in 2D as specified by the transformation matrix.
| matrix: | The transformation matrix. | 
| x: | The source X coordinate. | 
| y: | The source Y coordinate. | 
| newx: | The transformed X coordinate. | 
| newy: | The transformed Y coordinate. | 
gdouble gimp_matrix3_determinant (const GimpMatrix3 *matrix);
Calculates the determinant of the given matrix.
| matrix: | The input matrix. | 
| Returns : | The determinant. | 
void gimp_matrix3_invert (GimpMatrix3 *matrix);
Inverts the given matrix.
| matrix: | The matrix that is to be inverted. | 
gboolean gimp_matrix3_is_diagonal (const GimpMatrix3 *matrix);
Checks if the given matrix is diagonal.
| matrix: | The matrix that is to be tested. | 
| Returns : | TRUE if the matrix is diagonal. | 
gboolean gimp_matrix3_is_identity (const GimpMatrix3 *matrix);
Checks if the given matrix is the identity matrix.
| matrix: | The matrix that is to be tested. | 
| Returns : | TRUE if the matrix is the identity matrix. | 
gboolean gimp_matrix3_is_simple (const GimpMatrix3 *matrix);
Checks if we'll need to interpolate when applying this matrix as a transformation.
| matrix: | The matrix that is to be tested. | 
| Returns : | TRUE if all entries of the upper left 2x2 matrix are either 0 or 1 | 
void gimp_matrix4_to_deg (const GimpMatrix4 *matrix, gdouble *a, gdouble *b, gdouble *c);
| matrix: | |
| a: | |
| b: | |
| c: | 
| << GimpMath | GimpVector >> |