Matrix definition and operations. More...
Data Structures | |
struct | _Eina_Matrix3 |
Macros | |
#define | EINA_MATRIX3_FORMAT "g %g %g | %g %g %g | %g %g %g" |
Helper macro for printf formatting. | |
#define | EINA_MATRIX3_ARGS(m) |
Helper macro for printf formatting arg. More... | |
Typedefs | |
typedef struct _Eina_Matrix3 | Eina_Matrix3 |
Floating point matrix3 handler. | |
Functions | |
EAPI Eina_Matrix_Type | eina_matrix3_type_get (const Eina_Matrix3 *m) |
Return the type of the given floating point matrix. More... | |
EAPI void | eina_matrix3_values_set (Eina_Matrix3 *m, double xx, double xy, double xz, double yx, double yy, double yz, double zx, double zy, double zz) |
Set the values of the coefficients of the given floating point matrix. More... | |
EAPI void | eina_matrix3_values_get (const Eina_Matrix3 *m, double *xx, double *xy, double *xz, double *yx, double *yy, double *yz, double *zx, double *zy, double *zz) |
Get the values of the coefficients of the given floating point matrix. More... | |
EAPI void | eina_matrix3_fixed_values_get (const Eina_Matrix3 *m, Eina_F16p16 *xx, Eina_F16p16 *xy, Eina_F16p16 *xz, Eina_F16p16 *yx, Eina_F16p16 *yy, Eina_F16p16 *yz, Eina_F16p16 *zx, Eina_F16p16 *zy, Eina_F16p16 *zz) |
Get the values of the coefficients of the given fixed point matrix. More... | |
EAPI void | eina_matrix3_matrix3_f16p16_to (const Eina_Matrix3 *m, Eina_Matrix3_F16p16 *fm) |
Transform the given floating point matrix to the given fixed point matrix. More... | |
EAPI Eina_Bool | eina_matrix3_equal (const Eina_Matrix3 *m1, const Eina_Matrix3 *m2) |
Check whether the two given matrices are equal or not. More... | |
EAPI void | eina_matrix3_compose (const Eina_Matrix3 *m1, const Eina_Matrix3 *m2, Eina_Matrix3 *dst) |
EAPI void | eina_matrix3_translate (Eina_Matrix3 *t, double tx, double ty) |
Set the matrix values for a translation. More... | |
EAPI void | eina_matrix3_scale (Eina_Matrix3 *t, double sx, double sy) |
Set the matrix values for a scale. More... | |
EAPI void | eina_matrix3_rotate (Eina_Matrix3 *t, double rad) |
Set the matrix values for a rotation. More... | |
EAPI void | eina_matrix3_identity (Eina_Matrix3 *t) |
Set the given floating point matrix to the identity matrix. More... | |
EAPI double | eina_matrix3_determinant (const Eina_Matrix3 *m) |
Return the determinant of the given matrix. More... | |
EAPI void | eina_matrix3_divide (Eina_Matrix3 *m, double scalar) |
Divide the given matrix by the given scalar. More... | |
EAPI void | eina_matrix3_inverse (const Eina_Matrix3 *m, Eina_Matrix3 *m2) |
Compute the inverse of the given matrix. More... | |
EAPI void | eina_matrix3_transpose (const Eina_Matrix3 *m, Eina_Matrix3 *a) |
EAPI void | eina_matrix3_cofactor (const Eina_Matrix3 *m, Eina_Matrix3 *a) |
EAPI void | eina_matrix3_adjoint (const Eina_Matrix3 *m, Eina_Matrix3 *a) |
EAPI void | eina_matrix3_point_transform (const Eina_Matrix3 *m, double x, double y, double *xr, double *yr) |
EAPI void | eina_matrix3_rectangle_transform (const Eina_Matrix3 *m, const Eina_Rectangle *r, const Eina_Quad *q) |
EAPI Eina_Bool | eina_matrix3_quad_quad_map (Eina_Matrix3 *m, const Eina_Quad *src, const Eina_Quad *dst) |
Creates a projective matrix that maps a quadrangle to a quadrangle. | |
EAPI Eina_Bool | eina_matrix3_square_quad_map (Eina_Matrix3 *m, const Eina_Quad *q) |
EAPI Eina_Bool | eina_matrix3_quad_square_map (Eina_Matrix3 *m, const Eina_Quad *q) |
Matrix definition and operations.
#define EINA_MATRIX3_ARGS | ( | m | ) |
Helper macro for printf formatting arg.
EAPI Eina_Matrix_Type eina_matrix3_type_get | ( | const Eina_Matrix3 * | m | ) |
Return the type of the given floating point matrix.
m | The floating point matrix. |
This function returns the type of the matrix m
. No check is done on m
.
References EINA_MATRIX_TYPE_AFFINE, EINA_MATRIX_TYPE_IDENTITY, and EINA_MATRIX_TYPE_PROJECTIVE.
EAPI void eina_matrix3_values_set | ( | Eina_Matrix3 * | m, |
double | xx, | ||
double | xy, | ||
double | xz, | ||
double | yx, | ||
double | yy, | ||
double | yz, | ||
double | zx, | ||
double | zy, | ||
double | zz | ||
) |
Set the values of the coefficients of the given floating point matrix.
m | The floating point matrix. |
xx | The first coefficient value. |
xy | The second coefficient value. |
xz | The third coefficient value. |
yx | The fourth coefficient value. |
yy | The fifth coefficient value. |
yz | The sixth coefficient value. |
zx | The seventh coefficient value. |
zy | The heighth coefficient value. |
zz | The nineth coefficient value. |
This function sets the values of the coefficients of the matrix m
. No check is done on m
.
EAPI void eina_matrix3_values_get | ( | const Eina_Matrix3 * | m, |
double * | xx, | ||
double * | xy, | ||
double * | xz, | ||
double * | yx, | ||
double * | yy, | ||
double * | yz, | ||
double * | zx, | ||
double * | zy, | ||
double * | zz | ||
) |
Get the values of the coefficients of the given floating point matrix.
m | The floating point matrix. |
xx | The first coefficient value. |
xy | The second coefficient value. |
xz | The third coefficient value. |
yx | The fourth coefficient value. |
yy | The fifth coefficient value. |
yz | The sixth coefficient value. |
zx | The seventh coefficient value. |
zy | The heighth coefficient value. |
zz | The nineth coefficient value. |
This function gets the values of the coefficients of the matrix m
. No check is done on m
.
EAPI void eina_matrix3_fixed_values_get | ( | const Eina_Matrix3 * | m, |
Eina_F16p16 * | xx, | ||
Eina_F16p16 * | xy, | ||
Eina_F16p16 * | xz, | ||
Eina_F16p16 * | yx, | ||
Eina_F16p16 * | yy, | ||
Eina_F16p16 * | yz, | ||
Eina_F16p16 * | zx, | ||
Eina_F16p16 * | zy, | ||
Eina_F16p16 * | zz | ||
) |
Get the values of the coefficients of the given fixed point matrix.
m | The fixed point matrix. |
xx | The first coefficient value. |
xy | The second coefficient value. |
xz | The third coefficient value. |
yx | The fourth coefficient value. |
yy | The fifth coefficient value. |
yz | The sixth coefficient value. |
zx | The seventh coefficient value. |
zy | The heighth coefficient value. |
zz | The nineth coefficient value. |
This function gets the values of the coefficients of the matrix m
. No check is done on m
.
References eina_f16p16_double_from().
Referenced by eina_matrix3_matrix3_f16p16_to().
EAPI void eina_matrix3_matrix3_f16p16_to | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3_F16p16 * | fm | ||
) |
Transform the given floating point matrix to the given fixed point matrix.
m | The floating point matrix. |
fm | The fixed point matrix. |
This function transforms the floating point matrix m
to a fixed point matrix and store the coefficients into the fixed point matrix fm
.
References eina_matrix3_fixed_values_get(), _Eina_Matrix3_F16p16::xx, _Eina_Matrix3_F16p16::xy, _Eina_Matrix3_F16p16::xz, _Eina_Matrix3_F16p16::yx, _Eina_Matrix3_F16p16::yy, _Eina_Matrix3_F16p16::yz, _Eina_Matrix3_F16p16::zx, _Eina_Matrix3_F16p16::zy, and _Eina_Matrix3_F16p16::zz.
EAPI Eina_Bool eina_matrix3_equal | ( | const Eina_Matrix3 * | m1, |
const Eina_Matrix3 * | m2 | ||
) |
Check whether the two given matrices are equal or not.
m1 | The first matrix. |
m2 | The second matrix. |
This function return EINA_TRUE if thematrices m1
and m2
are equal, EINA_FALSE otherwise. No check is done on the matrices.
References EINA_FALSE, EINA_TRUE, _Eina_Matrix3::xx, _Eina_Matrix3::xy, _Eina_Matrix3::xz, _Eina_Matrix3::yx, _Eina_Matrix3::yy, _Eina_Matrix3::yz, _Eina_Matrix3::zx, _Eina_Matrix3::zy, and _Eina_Matrix3::zz.
EAPI void eina_matrix3_compose | ( | const Eina_Matrix3 * | m1, |
const Eina_Matrix3 * | m2, | ||
Eina_Matrix3 * | dst | ||
) |
Referenced by eina_matrix3_quad_quad_map(), eina_matrix3_rotate(), eina_matrix3_scale(), and eina_matrix3_translate().
EAPI void eina_matrix3_translate | ( | Eina_Matrix3 * | t, |
double | tx, | ||
double | ty | ||
) |
Set the matrix values for a translation.
[in] | m | The matrix to set the translation values |
[in] | tx | The X coordinate translate |
[in] | ty | The Y coordinate translate |
References eina_matrix3_compose().
EAPI void eina_matrix3_scale | ( | Eina_Matrix3 * | t, |
double | sx, | ||
double | sy | ||
) |
Set the matrix values for a scale.
[in] | m | The matrix to set the scale values |
[in] | sx | The X coordinate scale |
[in] | sy | The Y coordinate scale |
References eina_matrix3_compose().
EAPI void eina_matrix3_rotate | ( | Eina_Matrix3 * | t, |
double | rad | ||
) |
Set the matrix values for a rotation.
[in] | m | The matrix to set the rotation values |
[in] | rad | The radius to rotate the matrix |
References eina_matrix3_compose().
EAPI void eina_matrix3_identity | ( | Eina_Matrix3 * | t | ) |
Set the given floating point matrix to the identity matrix.
m | The floating point matrix to set |
This function sets m
to the identity matrix. No check is done on m
.
Referenced by eina_matrix3_inverse(), eina_matrix3_position_transform_set(), and eina_matrix3_scale_transform_set().
EAPI double eina_matrix3_determinant | ( | const Eina_Matrix3 * | m | ) |
Return the determinant of the given matrix.
m | The matrix. |
This function returns the determinant of the matrix m
. No check is done on m
.
Referenced by eina_matrix3_inverse().
EAPI void eina_matrix3_divide | ( | Eina_Matrix3 * | m, |
double | scalar | ||
) |
Divide the given matrix by the given scalar.
m | The matrix. |
scalar | The scalar number. |
This function divides the matrix m
by scalar
. No check is done on m
.
Referenced by eina_matrix3_inverse(), and eina_matrix3_quad_square_map().
EAPI void eina_matrix3_inverse | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | m2 | ||
) |
Compute the inverse of the given matrix.
m | The matrix to inverse. |
m2 | The inverse matrix. |
This function inverse the matrix m
and stores the result in m2
. No check is done on m
or m2
. If m
can not be invertible, then m2
is set to the identity matrix.
References eina_matrix3_adjoint(), eina_matrix3_determinant(), eina_matrix3_divide(), and eina_matrix3_identity().
Referenced by eina_matrix3_quad_square_map().
EAPI void eina_matrix3_transpose | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | a | ||
) |
Referenced by eina_matrix3_adjoint().
EAPI void eina_matrix3_cofactor | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | a | ||
) |
Referenced by eina_matrix3_adjoint().
EAPI void eina_matrix3_adjoint | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | a | ||
) |
References eina_matrix3_cofactor(), and eina_matrix3_transpose().
Referenced by eina_matrix3_inverse().
EAPI void eina_matrix3_point_transform | ( | const Eina_Matrix3 * | m, |
double | x, | ||
double | y, | ||
double * | xr, | ||
double * | yr | ||
) |
Referenced by eina_matrix3_rectangle_transform().
EAPI void eina_matrix3_rectangle_transform | ( | const Eina_Matrix3 * | m, |
const Eina_Rectangle * | r, | ||
const Eina_Quad * | q | ||
) |
References eina_matrix3_point_transform(), _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
EAPI Eina_Bool eina_matrix3_square_quad_map | ( | Eina_Matrix3 * | m, |
const Eina_Quad * | q | ||
) |
References EINA_FALSE, and EINA_TRUE.
Referenced by eina_matrix3_quad_quad_map(), and eina_matrix3_quad_square_map().
EAPI Eina_Bool eina_matrix3_quad_square_map | ( | Eina_Matrix3 * | m, |
const Eina_Quad * | q | ||
) |
References EINA_FALSE, eina_matrix3_divide(), eina_matrix3_inverse(), eina_matrix3_square_quad_map(), and EINA_TRUE.
Referenced by eina_matrix3_quad_quad_map().