Math Lib: Add copy_m2_m2, unit_m2, zero_m2
authorCampbell Barton <ideasman42@gmail.com>
Sat, 6 Sep 2014 01:19:34 +0000 (11:19 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 6 Sep 2014 01:29:27 +0000 (11:29 +1000)
source/blender/blenlib/BLI_math_matrix.h
source/blender/blenlib/intern/math_matrix.c
source/blender/python/mathutils/mathutils_Matrix.c

index 7bcaab1f93970c92691327eb7487932dae2380cb..0eac92c1db96eba1e343ae58c01e30d3ced64e37 100644 (file)
@@ -38,12 +38,15 @@ extern "C" {
 
 /********************************* Init **************************************/
 
+void zero_m2(float R[2][2]);
 void zero_m3(float R[3][3]);
 void zero_m4(float R[4][4]);
 
+void unit_m2(float R[2][2]);
 void unit_m3(float R[3][3]);
 void unit_m4(float R[4][4]);
 
+void copy_m2_m2(float R[2][2], float A[2][2]);
 void copy_m3_m3(float R[3][3], float A[3][3]);
 void copy_m4_m4(float R[4][4], float A[4][4]);
 void copy_m3_m4(float R[3][3], float A[4][4]);
index 09c581a589b2e16d6b6bf629274ad3da9c856548..888587e055c9ef5ab5ffcf4ec18cb50ff29e63ea 100644 (file)
 
 /********************************* Init **************************************/
 
+void zero_m2(float m[2][2])
+{
+       memset(m, 0, sizeof(float[2][2]));
+}
+
 void zero_m3(float m[3][3])
 {
-       memset(m, 0, 3 * 3 * sizeof(float));
+       memset(m, 0, sizeof(float[3][3]));
 }
 
 void zero_m4(float m[4][4])
 {
-       memset(m, 0, 4 * 4 * sizeof(float));
+       memset(m, 0, sizeof(float[4][4]));
+}
+
+void unit_m2(float m[2][2])
+{
+       m[0][0] = m[1][1] = 1.0f;
+       m[0][1] = 0.0f;
+       m[1][0] = 0.0f;
 }
 
 void unit_m3(float m[3][3])
@@ -62,15 +74,20 @@ void unit_m4(float m[4][4])
        m[3][0] = m[3][1] = m[3][2] = 0.0f;
 }
 
+void copy_m2_m2(float m1[2][2], float m2[2][2])
+{
+       memcpy(m1, m2, sizeof(float[2][2]));
+}
+
 void copy_m3_m3(float m1[3][3], float m2[3][3])
 {
        /* destination comes first: */
-       memcpy(&m1[0], &m2[0], 9 * sizeof(float));
+       memcpy(m1, m2, sizeof(float[3][3]));
 }
 
 void copy_m4_m4(float m1[4][4], float m2[4][4])
 {
-       memcpy(m1, m2, 4 * 4 * sizeof(float));
+       memcpy(m1, m2, sizeof(float[4][4]));
 }
 
 void copy_m3_m4(float m1[3][3], float m2[4][4])
index 34564007478241bea98c1b1949e14a105d8d4014..09db282d95640a9bf40823e080c65369243c5424 100644 (file)
@@ -1755,10 +1755,7 @@ static PyObject *Matrix_identity(MatrixObject *self)
        }
 
        if (self->num_col == 2) {
-               MATRIX_ITEM(self, 0, 0) = 1.0f;
-               MATRIX_ITEM(self, 0, 1) = 0.0f;
-               MATRIX_ITEM(self, 1, 0) = 0.0f;
-               MATRIX_ITEM(self, 1, 1) = 1.0f;
+               unit_m2((float (*)[2])self->matrix);
        }
        else if (self->num_col == 3) {
                unit_m3((float (*)[3])self->matrix);