[Bf-blender-cvs] [2387ba93d26] blender2.8: BLI_math: add helper function to extract XY 2D scale from a 4D matrix.

Bastien Montagne noreply at git.blender.org
Wed Apr 26 12:00:29 CEST 2017


Commit: 2387ba93d268235d1f8faeec16e17c9d2c78fa21
Author: Bastien Montagne
Date:   Wed Apr 26 11:55:50 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB2387ba93d268235d1f8faeec16e17c9d2c78fa21

BLI_math: add helper function to extract XY 2D scale from a 4D matrix.

===================================================================

M	source/blender/blenlib/BLI_math_matrix.h
M	source/blender/blenlib/intern/math_matrix.c

===================================================================

diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h
index 029f6872b04..90aff1fcbbc 100644
--- a/source/blender/blenlib/BLI_math_matrix.h
+++ b/source/blender/blenlib/BLI_math_matrix.h
@@ -223,6 +223,7 @@ void scale_m4_fl(float R[4][4], float scale);
 
 float mat3_to_scale(const float M[3][3]);
 float mat4_to_scale(const float M[4][4]);
+float mat4_to_xy_scale(const float M[4][4]);
 
 void size_to_mat3(float R[3][3], const float size[3]);
 void size_to_mat4(float R[4][4], const float size[3]);
diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c
index 50b92f5a383..1883b62f532 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -1578,6 +1578,15 @@ float mat4_to_scale(const float mat[4][4])
 	return len_v3(unit_vec);
 }
 
+/** Return 2D scale (in XY plane) of given mat4. */
+float mat4_to_xy_scale(const float M[4][4])
+{
+	/* unit length vector in xy plane */
+	float unit_vec[3] = {(float)M_SQRT1_2, (float)M_SQRT1_2, 0.0f};
+	mul_mat3_m4_v3(M, unit_vec);
+	return len_v3(unit_vec);
+}
+
 void mat3_to_rot_size(float rot[3][3], float size[3], const float mat3[3][3])
 {
 	/* keep rot as a 3x3 matrix, the caller can convert into a quat or euler */




More information about the Bf-blender-cvs mailing list