GIMP Math Library Reference Manual |
---|
GimpMatrix — Utilities to set up and manipulate 3x3 transformation matrices.
struct GimpMatrix2; struct GimpMatrix3; struct 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 >> |