![]() | ![]() | ![]() | GIMP Math Library Reference Manual | ![]() |
---|
GimpMatrix — Utilities to set up and manipulate 3x3 transformation matrices.
typedef GimpMatrix3[3][3]; typedef GimpMatrix4[4][4]; void gimp_matrix3_transform_point (GimpMatrix3 matrix, gdouble x, gdouble y, gdouble *newx, gdouble *newy); void gimp_matrix3_mult (GimpMatrix3 matrix1, GimpMatrix3 matrix2); void gimp_matrix3_identity (GimpMatrix3 matrix); 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); gdouble gimp_matrix3_determinant (GimpMatrix3 matrix); void gimp_matrix3_invert (GimpMatrix3 matrix, GimpMatrix3 matrix_inv); void gimp_matrix3_duplicate (GimpMatrix3 src, GimpMatrix3 target); gboolean gimp_matrix3_is_diagonal (GimpMatrix3 matrix); gboolean gimp_matrix3_is_identity (GimpMatrix3 matrix); gboolean gimp_matrix3_is_simple (GimpMatrix3 matrix); void gimp_matrix4_to_deg (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_matrix3_transform_point (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. |
void gimp_matrix3_mult (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 oeverwritten ba the result. |
void gimp_matrix3_identity (GimpMatrix3 matrix);
Sets the matrix to the identity matrix.
matrix : | A matrix. |
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. |
gdouble gimp_matrix3_determinant (GimpMatrix3 matrix);
Calculates the determinant of the given matrix.
matrix : | The input matrix. |
Returns : | The determinant. |
void gimp_matrix3_invert (GimpMatrix3 matrix, GimpMatrix3 matrix_inv);
Inverts the given matrix.
matrix : | The matrix that is to be inverted. |
matrix_inv : | A matrix the inverted matrix should be written into. |
void gimp_matrix3_duplicate (GimpMatrix3 src, GimpMatrix3 target);
Copies the source matrix to the destination matrix.
src : | The source matrix. |
target : | The destination matrix. |
gboolean gimp_matrix3_is_diagonal (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 (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 (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 |
<< GimpMath | GimpVector >> |