From 3311164b24da61f2967f96d0ee27508a7e2e0267 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 16 Dec 2011 19:53:12 +0000 Subject: Math lib: matrix multiplication order fix for two functions that were inconsistent with similar functions & math notation: mul_m4_m4m4(R, B, A) => mult_m4_m4m4(R, A, B) mul_m3_m3m4(R, B, A) => mult_m3_m3m4(R, A, B) For branch maintainers, it should be relatively simple to fix things manually, it's also possible run this script after merging to do automatic replacement: http://www.pasteall.org/27459/python --- source/blender/blenlib/intern/math_matrix.c | 18 +++++++++--------- source/blender/blenlib/intern/math_rotation.c | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'source/blender/blenlib/intern') diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c index 37cb49fc17b..ee9cbaf1f81 100644 --- a/source/blender/blenlib/intern/math_matrix.c +++ b/source/blender/blenlib/intern/math_matrix.c @@ -142,7 +142,7 @@ void swap_m4m4(float m1[][4], float m2[][4]) /******************************** Arithmetic *********************************/ -void mul_m4_m4m4(float m1[][4], float m2_[][4], float m3_[][4]) +void mult_m4_m4m4(float m1[][4], float m3_[][4], float m2_[][4]) { float m2[4][4], m3[4][4]; @@ -209,7 +209,7 @@ void mul_m4_m4m3(float (*m1)[4], float (*m3)[4], float (*m2)[3]) } /* m1 = m2 * m3, ignore the elements on the 4th row/column of m3*/ -void mul_m3_m3m4(float m1[][3], float m2[][3], float m3[][4]) +void mult_m3_m3m4(float m1[][3], float m3[][4], float m2[][3]) { /* m1[i][j] = m2[i][k] * m3[k][j] */ m1[0][0] = m2[0][0] * m3[0][0] + m2[0][1] * m3[1][0] +m2[0][2] * m3[2][0]; @@ -280,19 +280,19 @@ void mul_serie_m4(float answ[][4], float m1[][4], if(m1==NULL || m2==NULL) return; - mul_m4_m4m4(answ, m2, m1); + mult_m4_m4m4(answ, m1, m2); if(m3) { - mul_m4_m4m4(temp, m3, answ); + mult_m4_m4m4(temp, answ, m3); if(m4) { - mul_m4_m4m4(answ, m4, temp); + mult_m4_m4m4(answ, temp, m4); if(m5) { - mul_m4_m4m4(temp, m5, answ); + mult_m4_m4m4(temp, answ, m5); if(m6) { - mul_m4_m4m4(answ, m6, temp); + mult_m4_m4m4(answ, temp, m6); if(m7) { - mul_m4_m4m4(temp, m7, answ); + mult_m4_m4m4(temp, answ, m7); if(m8) { - mul_m4_m4m4(answ, m8, temp); + mult_m4_m4m4(answ, temp, m8); } else copy_m4_m4(answ, temp); } diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c index e4664798f5d..5596b6f9f22 100644 --- a/source/blender/blenlib/intern/math_rotation.c +++ b/source/blender/blenlib/intern/math_rotation.c @@ -1433,7 +1433,7 @@ void mat4_to_dquat(DualQuat *dq,float basemat[][4], float mat[][4]) /* split scaling and rotation, there is probably a faster way to do this, it's done like this now to correctly get negative scaling */ - mul_m4_m4m4(baseRS, basemat, mat); + mult_m4_m4m4(baseRS, mat, basemat); mat4_to_size(scale,baseRS); copy_v3_v3(dscale, scale); @@ -1452,10 +1452,10 @@ void mat4_to_dquat(DualQuat *dq,float basemat[][4], float mat[][4]) copy_v3_v3(baseR[3], baseRS[3]); invert_m4_m4(baseinv, basemat); - mul_m4_m4m4(R, baseinv, baseR); + mult_m4_m4m4(R, baseR, baseinv); invert_m4_m4(baseRinv, baseR); - mul_m4_m4m4(S, baseRS, baseRinv); + mult_m4_m4m4(S, baseRinv, baseRS); /* set scaling part */ mul_serie_m4(dq->scale, basemat, S, baseinv, NULL, NULL, NULL, NULL, NULL); -- cgit v1.2.3