Tizen Native API
9.0
|
Definition and operations for 3x3 matrices.
Functions | |
Eina_Matrix_Type | eina_matrix3_type_get (const Eina_Matrix3 *m) |
Returns the type of the given floating point matrix. | |
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) |
Sets the values of the coefficients of the given floating point matrix. | |
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) |
Gets the values of the coefficients of the given floating point matrix. | |
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) |
Gets the values of the coefficients of the given fixed point matrix. | |
void | eina_matrix3_matrix3_f16p16_to (const Eina_Matrix3 *m, Eina_Matrix3_F16p16 *fm) |
Transforms the given floating point matrix to the given fixed point matrix. | |
Eina_Bool | eina_matrix3_equal (const Eina_Matrix3 *m1, const Eina_Matrix3 *m2) |
Checks whether the two matrices are equivalent. | |
void | eina_matrix3_compose (const Eina_Matrix3 *m1, const Eina_Matrix3 *m2, Eina_Matrix3 *dst) |
Sets dst as the matrix multiplication (composition) of two matrices. | |
void | eina_matrix3_translate (Eina_Matrix3 *m, double tx, double ty) |
Sets the matrix values for a translation operation. | |
void | eina_matrix3_scale (Eina_Matrix3 *m, double sx, double sy) |
Sets the matrix values for a scaling operation. | |
void | eina_matrix3_rotate (Eina_Matrix3 *m, double rad) |
Sets the matrix values for a rotation operation. | |
void | eina_matrix3_identity (Eina_Matrix3 *m) |
Sets the given floating point matrix to the identity matrix. | |
double | eina_matrix3_determinant (const Eina_Matrix3 *m) |
Calculates the determinant of the given matrix. | |
void | eina_matrix3_divide (Eina_Matrix3 *m, double scalar) |
Divides the given matrix by a scalar number. | |
void | eina_matrix3_inverse (const Eina_Matrix3 *m, Eina_Matrix3 *m2) |
Computes the inverse of the given matrix. | |
void | eina_matrix3_transpose (const Eina_Matrix3 *m, Eina_Matrix3 *a) |
Computes the transpose of the given matrix. | |
void | eina_matrix3_cofactor (const Eina_Matrix3 *m, Eina_Matrix3 *a) |
Computes the cofactor of the given matrix. | |
void | eina_matrix3_adjoint (const Eina_Matrix3 *m, Eina_Matrix3 *a) |
Computes the adjoint of the given matrix. | |
void | eina_matrix3_point_transform (const Eina_Matrix3 *m, double x, double y, double *xr, double *yr) |
Computes the transform of a 2D point using the given matrix. | |
void | eina_matrix3_rectangle_transform (const Eina_Matrix3 *m, const Eina_Rectangle *r, const Eina_Quad *q) |
Computes the transformation of a rectangle using the given matrix. | |
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. | |
Eina_Bool | eina_matrix3_square_quad_map (Eina_Matrix3 *m, const Eina_Quad *q) |
Creates a matrix for unit-square to quad mapping. | |
Eina_Bool | eina_matrix3_quad_square_map (Eina_Matrix3 *m, const Eina_Quad *q) |
Creates a matrix for mapping squares to match quad. | |
void | eina_matrix3_array_set (Eina_Matrix3 *m, const double *v) |
Sets matrix values using an array. | |
void | eina_matrix3_copy (Eina_Matrix3 *dst, const Eina_Matrix3 *src) |
Copies a matrix. | |
void | eina_matrix3_multiply (Eina_Matrix3 *out, const Eina_Matrix3 *mat_a, const Eina_Matrix3 *mat_b) |
Multiplies two matrices. | |
void | eina_matrix3_multiply_copy (Eina_Matrix3 *out, const Eina_Matrix3 *mat_a, const Eina_Matrix3 *mat_b) |
Multiplies two matrices without overwriting them. | |
void | eina_matrix3_scale_transform_set (Eina_Matrix3 *out, double s_x, double s_y) |
Sets the scale parameters (XX, YY) of a matrix. | |
void | eina_matrix3_position_transform_set (Eina_Matrix3 *out, const double p_x, const double p_y) |
Sets the positional parameters (XZ, YZ) of a matrix. | |
void | eina_normal3_matrix_get (Eina_Matrix3 *out, const Eina_Matrix4 *m) |
Sets normal of the given matrix. | |
void | eina_matrix3_matrix4_to (Eina_Matrix4 *m4, const Eina_Matrix3 *m3) |
Converts an Eina_Matrix3 into an Eina_Matrix4. | |
Typedefs | |
typedef struct _Eina_Matrix3 | Eina_Matrix3 |
Defines | |
#define | EINA_MATRIX3_FORMAT "g %g %g | %g %g %g | %g %g %g" |
#define | EINA_MATRIX3_ARGS(m) |
Define Documentation
#define EINA_MATRIX3_ARGS | ( | m | ) |
(m)->xx, (m)->xy, (m)->xz, \ (m)->yx, (m)->yy, (m)->yz, \ (m)->zx, (m)->zy, (m)->zz
Helper macro for printf formatting arg
#define EINA_MATRIX3_FORMAT "g %g %g | %g %g %g | %g %g %g" |
Helper macro for printf formatting
Typedef Documentation
A 3x3 floating point matrix.
Function Documentation
void eina_matrix3_adjoint | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | a | ||
) |
Computes the adjoint of the given matrix.
- Parameters:
-
[in] m The matrix to be adjointed. [out] a The adjoint matrix.
This function finds the adjoint of the matrix m
and stores the result in a
. No check is done on m
or a
. The adjoint of a matrix3 is effectively the transpose of its cofactor.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_array_set | ( | Eina_Matrix3 * | m, |
const double * | v | ||
) |
Sets matrix values using an array.
- Parameters:
-
[out] m The result matrix. [in] v The array[9] of values.
Uses the first 9 elements in the given C array v
to set the values in the matrix m
. The values will be set in the order of the elements in the Eina_Matrix3 structure.
- Since (EFL) :
- 1.17
- Since :
- 3.0
void eina_matrix3_cofactor | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | a | ||
) |
Computes the cofactor of the given matrix.
- Parameters:
-
[in] m The source matrix. [out] a The cofactored matrix.
This function cofactors the matrix m
and stores the result in a
. No check is done on m
or a
. The cofactor of a matrix3 at row i, column j is computed by taking the determinant of the submatrix formed by deleting the i-th row and j-th column, and then multiplying by (-1)^(i+j).
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_compose | ( | const Eina_Matrix3 * | m1, |
const Eina_Matrix3 * | m2, | ||
Eina_Matrix3 * | dst | ||
) |
Sets dst as the matrix multiplication (composition) of two matrices.
- Parameters:
-
[in] m1 The first matrix. Must be non-NULL. [in] m2 The second matrix. Must be non-NULL. [out] dst The results matrix.
In matrix multiplication, AB, the resultant matrix is created from the rows of A multiplied against the columns of B and summed. This is not commutative; i.e. AB != BA, so the ordering of arguments m1
and m2
matters.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_copy | ( | Eina_Matrix3 * | dst, |
const Eina_Matrix3 * | src | ||
) |
Copies a matrix.
- Parameters:
-
[out] dst Copy of the matrix. [in] src The matrix to copy.
- Since (EFL) :
- 1.16
- Since :
- 3.0
double eina_matrix3_determinant | ( | const Eina_Matrix3 * | m | ) |
Calculates the determinant of the given matrix.
- Parameters:
-
[in] m The matrix.
- Returns:
- The determinant.
This function returns the determinant of the matrix m
. No check is done on m
.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_divide | ( | Eina_Matrix3 * | m, |
double | scalar | ||
) |
Divides the given matrix by a scalar number.
- Parameters:
-
[in,out] m The matrix. [in] scalar The scalar number.
This function divides the matrix m
by scalar
. No check is done on m
.
- Since (EFL) :
- 1.14
- Since :
- 3.0
Eina_Bool eina_matrix3_equal | ( | const Eina_Matrix3 * | m1, |
const Eina_Matrix3 * | m2 | ||
) |
Checks whether the two matrices are equivalent.
- Parameters:
-
[in] m1 The first matrix. [in] m2 The second matrix.
- Returns:
EINA_TRUE
if the two matrices are equal,EINA_FALSE
otherwise.
This function returns EINA_TRUE
if the matrices m1
and m2
are equal, EINA_FALSE
otherwise. No check is done on the matrices.
- Since (EFL) :
- 1.14
- Since :
- 3.0
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 | ||
) |
Gets the values of the coefficients of the given fixed point matrix.
- Parameters:
-
[in] m The fixed point matrix. [out] xx The first coefficient value. [out] xy The second coefficient value. [out] xz The third coefficient value. [out] yx The fourth coefficient value. [out] yy The fifth coefficient value. [out] yz The sixth coefficient value. [out] zx The seventh coefficient value. [out] zy The eighth coefficient value. [out] zz The nine-th coefficient value.
This function gets the values of the coefficients of the matrix m
. No check is done on m
.
- See also:
- eina_matrix3_values_set()
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_identity | ( | Eina_Matrix3 * | m | ) |
Sets the given floating point matrix to the identity matrix.
- Parameters:
-
[out] m The matrix to set to identity.
This function sets m
to the identity matrix. No check is done on m
.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_inverse | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | m2 | ||
) |
Computes the inverse of the given matrix.
- Parameters:
-
[in] m The source matrix. [out] m2 The inverse matrix.
This function inverts the matrix m
and stores the result in m2
. No check is done on m
or m2
. If m
cannot be inverted, then m2
is set to the identity matrix.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_matrix3_f16p16_to | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3_F16p16 * | fm | ||
) |
Transforms the given floating point matrix to the given fixed point matrix.
- Parameters:
-
[in] m The floating point matrix. [out] fm The fixed point matrix.
This function transforms the floating point matrix m
to a fixed point matrix and stores the coefficients into the fixed point matrix fm
.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_matrix4_to | ( | Eina_Matrix4 * | m4, |
const Eina_Matrix3 * | m3 | ||
) |
Converts an Eina_Matrix3 into an Eina_Matrix4.
- Parameters:
-
[out] m3 The destination Eina_Matrix3. [in] m4 The source Eina_Matrix4.
- Since (EFL) :
- 1.15
- Since :
- 3.0
void eina_matrix3_multiply | ( | Eina_Matrix3 * | out, |
const Eina_Matrix3 * | mat_a, | ||
const Eina_Matrix3 * | mat_b | ||
) |
Multiplies two matrices.
- Parameters:
-
[out] out The resulting matrix. [in] mat_a The first member of the multiplication. [in] mat_b The second member of the multiplication.
out
must not point to the same structure as mat_a
or mat_b
, else the calculation results will be incorrect. Use eina_matrix3_multiply_copy() instead in this case.
- Since (EFL) :
- 1.17
- Since :
- 3.0
void eina_matrix3_multiply_copy | ( | Eina_Matrix3 * | out, |
const Eina_Matrix3 * | mat_a, | ||
const Eina_Matrix3 * | mat_b | ||
) |
Multiplies two matrices without overwriting them.
- Parameters:
-
[out] out The resulting matrix. [in] mat_a The first member of the multiplication. [in] mat_b The second member of the multiplication.
Safely multiplies mat_a
and mat_b
by checking if the out
parameter points to either of them, and if so uses a temporary matrix for the intermediary calculations.
- Since (EFL) :
- 1.17
- Since :
- 3.0
void eina_matrix3_point_transform | ( | const Eina_Matrix3 * | m, |
double | x, | ||
double | y, | ||
double * | xr, | ||
double * | yr | ||
) |
Computes the transform of a 2D point using the given matrix.
- Parameters:
-
[in] m The transformation matrix to apply. [in] x The x point to be transformed. [in] y The y point to be transformed. [out] xr The transformed x point. [out] yr The transformed y point.
Applies the transformation matrix m
to the point (x,y), and stores the result in (*xr,*yr). No check is done on m
; xr
and yr
must point to valid memory. A fast-path is included for if the zx and zy components of the matrix are zero.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_position_transform_set | ( | Eina_Matrix3 * | out, |
const double | p_x, | ||
const double | p_y | ||
) |
Sets the positional parameters (XZ, YZ) of a matrix.
- Parameters:
-
[out] out The resulting matrix. [in] p_x The position value for x. [in] p_y The position value for y.
Sets only the XZ and YZ components of the matrix, leaving the rest of the matrix as it was.
- Since (EFL) :
- 1.17
- Since :
- 3.0
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.
- Parameters:
-
[out] m The transformation matrix to create. [in] src The source quadrangle. [in] dst The destination quadrangle.
- Returns:
EINA_TRUE
if matrix could be successfully created,EINA_FALSE
otherwise.
Calculates a matrix m
that can be used to transform from an arbitrary source quadrangle src
to another arbitrary quadrangle dst
.
- Since :
- 3.0
Eina_Bool eina_matrix3_quad_square_map | ( | Eina_Matrix3 * | m, |
const Eina_Quad * | q | ||
) |
Creates a matrix for mapping squares to match quad.
- Parameters:
-
[out] m The transformation matrix to create. [in] q The source quadrangle.
- Returns:
EINA_FALSE
on successful transform creation,EINA_FALSE
otherwise.
Calculates a matrix m
that can be used to transform a square to fit a given quadrangle. The created matrix will always have its zz element equal to 1.0. The m
matrix and q
quad must be valid memory.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_rectangle_transform | ( | const Eina_Matrix3 * | m, |
const Eina_Rectangle * | r, | ||
const Eina_Quad * | q | ||
) |
Computes the transformation of a rectangle using the given matrix.
- Parameters:
-
[in] m The transformation matrix to apply. [in] r The rectangle to be transformed. [out] q The resultant transformed points.
Performs a point transformation of each corner of the rectangle r
, and stores the result in the quadrangle q
. No checks are done on the inputs, and q
must point to valid memory.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_rotate | ( | Eina_Matrix3 * | m, |
double | rad | ||
) |
Sets the matrix values for a rotation operation.
- Parameters:
-
[out] m The matrix. [in] rad The number of radians to rotate.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_scale | ( | Eina_Matrix3 * | m, |
double | sx, | ||
double | sy | ||
) |
Sets the matrix values for a scaling operation.
- Parameters:
-
[out] m The matrix. [in] sx The X coordinate scaling factor. [in] sy The Y coordinate scaling factor.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_scale_transform_set | ( | Eina_Matrix3 * | out, |
double | s_x, | ||
double | s_y | ||
) |
Sets the scale parameters (XX, YY) of a matrix.
- Parameters:
-
[out] out The resulting matrix. [in] s_x The scale value for x. [in] s_y The scale value for y.
Sets only the XX and YY components of the matrix, leaving the rest of the matrix as it was.
- Since (EFL) :
- 1.17
- Since :
- 3.0
Eina_Bool eina_matrix3_square_quad_map | ( | Eina_Matrix3 * | m, |
const Eina_Quad * | q | ||
) |
Creates a matrix for unit-square to quad mapping.
- Parameters:
-
[out] m The transformation matrix to create. [in] q The source quadrangle.
- Returns:
EINA_TRUE
if matrix could be successfully created,EINA_FALSE
otherwise.
Calculates a matrix m
that can be used to transform an arbitrary quadrangle q
into a square. If q
is a parallelogram, then a fast path affine transformation is used, otherwise it computes the matrix using a full projective transformation operation. No other checks are done on m
or q
.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_translate | ( | Eina_Matrix3 * | m, |
double | tx, | ||
double | ty | ||
) |
Sets the matrix values for a translation operation.
- Parameters:
-
[out] m The matrix. [in] tx The X coordinate translation. [in] ty The Y coordinate translation.
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_matrix3_transpose | ( | const Eina_Matrix3 * | m, |
Eina_Matrix3 * | a | ||
) |
Computes the transpose of the given matrix.
- Parameters:
-
[in] m The source matrix. [out] a The transposed matrix.
This function transposes the matrix m
and stores the result in a
. No check is done on m
or a
. The transpose of a matrix essentially flips a matrix over its diagonal.
- Since (EFL) :
- 1.14
- Since :
- 3.0
Eina_Matrix_Type eina_matrix3_type_get | ( | const Eina_Matrix3 * | m | ) |
Returns the type of the given floating point matrix.
- Parameters:
-
[in] m The floating point matrix.
- Returns:
- The type of the matrix.
This function returns the type of the matrix m
. No check is done on m
.
- Since (EFL) :
- 1.14
- Since :
- 3.0
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 | ||
) |
Gets the values of the coefficients of the given floating point matrix.
- Parameters:
-
[in] m The floating point matrix. [out] xx The first coefficient value. [out] xy The second coefficient value. [out] xz The third coefficient value. [out] yx The fourth coefficient value. [out] yy The fifth coefficient value. [out] yz The sixth coefficient value. [out] zx The seventh coefficient value. [out] zy The eighth coefficient value. [out] zz The ninth coefficient value.
This function gets the values of the coefficients of the matrix m
. No check is done on m
.
- See also:
- eina_matrix3_values_set()
- Since (EFL) :
- 1.14
- Since :
- 3.0
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 | ||
) |
Sets the values of the coefficients of the given floating point matrix.
- Parameters:
-
[out] m The floating point matrix. [in] xx The first coefficient value. [in] xy The second coefficient value. [in] xz The third coefficient value. [in] yx The fourth coefficient value. [in] yy The fifth coefficient value. [in] yz The sixth coefficient value. [in] zx The seventh coefficient value. [in] zy The eighth coefficient value. [in] zz The ninth coefficient value.
This function sets the values of the coefficients of the matrix m
. No check is done on m
.
- See also:
- eina_matrix3_values_get()
- Since (EFL) :
- 1.14
- Since :
- 3.0
void eina_normal3_matrix_get | ( | Eina_Matrix3 * | out, |
const Eina_Matrix4 * | m | ||
) |
Sets normal of the given matrix.
- Parameters:
-
[out] out The resulting matrix. [in] m The matrix.
- Since (EFL) :
- 1.17
- Since :
- 3.0