Fix for mat3_to_rot_size modifying input matrix
authorCampbell Barton <ideasman42@gmail.com>
Thu, 30 Oct 2014 09:37:27 +0000 (10:37 +0100)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 30 Oct 2014 09:37:55 +0000 (10:37 +0100)
source/blender/blenlib/intern/math_matrix.c

index 6b40f0cf28ed071991f772eef7565467cc472ded..115980cb3e63cf53b9346047cf5468b8885299eb 100644 (file)
@@ -1425,11 +1425,19 @@ void mat3_to_rot_size(float rot[3][3], float size[3], float mat3[3][3])
        /* scale */
        /* note: mat4_to_size(ob->size, mat) fails for negative scale */
        invert_m3_m3(imat3_n, mat3_n);
+
+       /* better not edit mat3 */
+#if 0
        mul_m3_m3m3(mat3, imat3_n, mat3);
 
        size[0] = mat3[0][0];
        size[1] = mat3[1][1];
        size[2] = mat3[2][2];
+#else
+       size[0] = dot_m3_v3_row_x(imat3_n, mat3[0]);
+       size[1] = dot_m3_v3_row_y(imat3_n, mat3[1]);
+       size[2] = dot_m3_v3_row_z(imat3_n, mat3[2]);
+#endif
 }
 
 void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wmat[4][4])