Name
gimpmatrix -- Utilities to set up and manipulate 3x3 transformation matrices.
Synopsis
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); |
Description
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.
Details
GimpMatrix3[3][3]
typedef gdouble GimpMatrix3[3][3]; |
GimpMatrix4[4][4]
typedef gdouble GimpMatrix4[4][4]; |
gimp_matrix3_transform_point ()
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.
gimp_matrix3_mult ()
void gimp_matrix3_mult (GimpMatrix3 matrix1,
GimpMatrix3 matrix2); |
Multiplies two matrices and puts the result into the second one.
gimp_matrix3_identity ()
void gimp_matrix3_identity (GimpMatrix3 matrix); |
Sets the matrix to the identity matrix.
gimp_matrix3_translate ()
void gimp_matrix3_translate (GimpMatrix3 matrix,
gdouble x,
gdouble y); |
Translates the matrix by x and y.
gimp_matrix3_scale ()
void gimp_matrix3_scale (GimpMatrix3 matrix,
gdouble x,
gdouble y); |
Scales the matrix by x and y
gimp_matrix3_rotate ()
void gimp_matrix3_rotate (GimpMatrix3 matrix,
gdouble theta); |
Rotates the matrix by theta degrees.
gimp_matrix3_xshear ()
void gimp_matrix3_xshear (GimpMatrix3 matrix,
gdouble amount); |
Shears the matrix in the X direction.
gimp_matrix3_yshear ()
void gimp_matrix3_yshear (GimpMatrix3 matrix,
gdouble amount); |
Shears the matrix in the Y direction.
gimp_matrix3_determinant ()
gdouble gimp_matrix3_determinant (GimpMatrix3 matrix); |
Calculates the determinant of the given matrix.
gimp_matrix3_invert ()
void gimp_matrix3_invert (GimpMatrix3 matrix,
GimpMatrix3 matrix_inv); |
Inverts the given matrix.
gimp_matrix3_duplicate ()
void gimp_matrix3_duplicate (GimpMatrix3 src,
GimpMatrix3 target); |
Copies the source matrix to the destination matrix.
gimp_matrix3_is_diagonal ()
gboolean gimp_matrix3_is_diagonal (GimpMatrix3 matrix); |
Checks if the given matrix is diagonal.
gimp_matrix3_is_identity ()
gboolean gimp_matrix3_is_identity (GimpMatrix3 matrix); |
Checks if the given matrix is the identity matrix.
gimp_matrix3_is_simple ()
gboolean gimp_matrix3_is_simple (GimpMatrix3 matrix); |
Checks if we'll need to interpolate when applying this matrix as
a transformation.
gimp_matrix4_to_deg ()
void gimp_matrix4_to_deg (GimpMatrix4 matrix,
gdouble *a,
gdouble *b,
gdouble *c); |