diff options
Diffstat (limited to 'source/blender/blenlib/BLI_math_matrix.h')
-rw-r--r-- | source/blender/blenlib/BLI_math_matrix.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h index c97eb4c588c..97cd6a60862 100644 --- a/source/blender/blenlib/BLI_math_matrix.h +++ b/source/blender/blenlib/BLI_math_matrix.h @@ -88,13 +88,15 @@ void mul_serie_m4(float R[4][4], void mul_m4_v3(float M[4][4], float r[3]); void mul_v3_m4v3(float r[3], float M[4][4], const float v[3]); +void mul_v2_m2v2(float r[2], float M[2][2], const float v[2]); void mul_mat3_m4_v3(float M[4][4], float r[3]); void mul_m4_v4(float M[4][4], float r[4]); -void mul_v4_m4v4(float r[4], float M[4][4], float v[4]); +void mul_v4_m4v4(float r[4], float M[4][4], const float v[4]); void mul_project_m4_v3(float M[4][4], float vec[3]); void mul_m3_v3(float M[3][3], float r[3]); -void mul_v3_m3v3(float r[3], float M[3][3], float a[3]); +void mul_v3_m3v3(float r[3], float M[3][3], const float a[3]); +void mul_v2_m3v3(float r[2], float M[3][3], const float a[3]); void mul_transposed_m3_v3(float M[3][3], float r[3]); void mul_m3_v3_double(float M[3][3], double r[3]); @@ -144,10 +146,14 @@ float determinant_m2(float a, float b, float determinant_m3(float a, float b, float c, float d, float e, float f, float g, float h, float i); +float determinant_m3_array(float m[3][3]); float determinant_m4(float A[4][4]); +#define PSEUDOINVERSE_EPSILON 1e-8f + void svd_m4(float U[4][4], float s[4], float V[4][4], float A[4][4]); void pseudoinverse_m4_m4(float Ainv[4][4], float A[4][4], float epsilon); +void pseudoinverse_m3_m3(float Ainv[3][3], float A[3][3], float epsilon); /****************************** Transformations ******************************/ @@ -165,10 +171,13 @@ void mat4_to_size(float r[3], float M[4][4]); void translate_m4(float mat[4][4], float tx, float ty, float tz); void rotate_m4(float mat[4][4], const char axis, const float angle); +void rotate_m2(float mat[2][2], const float angle); void mat3_to_rot_size(float rot[3][3], float size[3], float mat3[3][3]); void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wmat[4][4]); +void mat4_to_loc_quat(float loc[3], float quat[4], float wmat[4][4]); +void mat4_decompose(float loc[3], float quat[4], float size[3], float wmat[4][4]); void loc_eul_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3]); |