[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42754] trunk/blender/source/blender/ python/mathutils: patch [#29662] Modifications to Mathutils Vectors for Consistency with Commit 42752

Campbell Barton ideasman42 at gmail.com
Tue Dec 20 06:48:45 CET 2011


Revision: 42754
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42754
Author:   campbellbarton
Date:     2011-12-20 05:48:35 +0000 (Tue, 20 Dec 2011)
Log Message:
-----------
patch [#29662] Modifications to Mathutils Vectors for Consistency with Commit 42752
from Andrew Hale

Modified Paths:
--------------
    trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c
    trunk/blender/source/blender/python/mathutils/mathutils_Matrix.h

Modified: trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c
===================================================================
--- trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c	2011-12-20 04:23:29 UTC (rev 42753)
+++ trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c	2011-12-20 05:48:35 UTC (rev 42754)
@@ -51,56 +51,56 @@
 	return BaseMath_ReadCallback(self);
 }
 
-static int mathutils_matrix_vector_get(BaseMathObject *bmo, int subtype)
+static int mathutils_matrix_vector_get(BaseMathObject *bmo, int col)
 {
 	MatrixObject *self= (MatrixObject *)bmo->cb_user;
-	int index;
+	int row;
 
 	if (BaseMath_ReadCallback(self) == -1)
 		return -1;
 
-	for (index=0; index < self->num_row; index++) {
-		bmo->data[index] = MATRIX_ITEM(self, subtype, index);
+	for (row=0; row < self->num_row; row++) {
+		bmo->data[row] = MATRIX_ITEM(self, row, col);
 	}
 
 	return 0;
 }
 
-static int mathutils_matrix_vector_set(BaseMathObject *bmo, int subtype)
+static int mathutils_matrix_vector_set(BaseMathObject *bmo, int col)
 {
 	MatrixObject *self= (MatrixObject *)bmo->cb_user;
-	int index;
+	int row;
 
 	if (BaseMath_ReadCallback(self) == -1)
 		return -1;
 
-	for (index=0; index < self->num_row; index++) {
-		MATRIX_ITEM(self, subtype, index) = bmo->data[index];
+	for (row=0; row < self->num_row; row++) {
+		MATRIX_ITEM(self, row, col) = bmo->data[row];
 	}
 
 	(void)BaseMath_WriteCallback(self);
 	return 0;
 }
 
-static int mathutils_matrix_vector_get_index(BaseMathObject *bmo, int subtype, int index)
+static int mathutils_matrix_vector_get_index(BaseMathObject *bmo, int col, int row)
 {
 	MatrixObject *self= (MatrixObject *)bmo->cb_user;
 
 	if (BaseMath_ReadCallback(self) == -1)
 		return -1;
 
-	bmo->data[index]= MATRIX_ITEM(self, subtype, index);
+	bmo->data[row]= MATRIX_ITEM(self, row, col);
 	return 0;
 }
 
-static int mathutils_matrix_vector_set_index(BaseMathObject *bmo, int subtype, int index)
+static int mathutils_matrix_vector_set_index(BaseMathObject *bmo, int col, int row)
 {
 	MatrixObject *self= (MatrixObject *)bmo->cb_user;
 
 	if (BaseMath_ReadCallback(self) == -1)
 		return -1;
 
-	MATRIX_ITEM(self, subtype, index) = bmo->data[index];
+	MATRIX_ITEM(self, row, col) = bmo->data[row];
 
 	(void)BaseMath_WriteCallback(self);
 	return 0;
@@ -624,9 +624,9 @@
 
 void matrix_as_3x3(float mat[3][3], MatrixObject *self)
 {
-	copy_v3_v3(mat[0], MATRIX_ROW_PTR(self, 0));
-	copy_v3_v3(mat[1], MATRIX_ROW_PTR(self, 1));
-	copy_v3_v3(mat[2], MATRIX_ROW_PTR(self, 2));
+	copy_v3_v3(mat[0], MATRIX_COL_PTR(self, 0));
+	copy_v3_v3(mat[1], MATRIX_COL_PTR(self, 1));
+	copy_v3_v3(mat[2], MATRIX_COL_PTR(self, 2));
 }
 
 /* assumes rowsize == colsize is checked and the read callback has run */
@@ -889,7 +889,7 @@
 		return NULL;
 	}
 
-	return Vector_CreatePyObject(MATRIX_ROW_PTR(self, 3), 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(MATRIX_COL_PTR(self, 3), 3, Py_NEW, NULL);
 }
 
 PyDoc_STRVAR(Matrix_to_scale_doc,
@@ -981,7 +981,7 @@
 		/*set values*/
 		for (x = 0; x < self->num_col; x++) {
 			for (y = 0; y < self->num_row; y++) {
-				MATRIX_ITEM(self, x, y) = mat[z];
+				MATRIX_ITEM(self, y, x) = mat[z];
 				z++;
 			}
 		}
@@ -1292,16 +1292,16 @@
 /*print the object to screen*/
 static PyObject *Matrix_repr(MatrixObject *self)
 {
-	int x, y;
+	int col, row;
 	PyObject *rows[MATRIX_MAX_DIM]= {NULL};
 
 	if (BaseMath_ReadCallback(self) == -1)
 		return NULL;
 
-	for (x = 0; x < self->num_col; x++) {
-		rows[x]= PyTuple_New(self->num_row);
-		for (y = 0; y < self->num_row; y++) {
-			PyTuple_SET_ITEM(rows[x], y, PyFloat_FromDouble(MATRIX_ITEM(self, x, y)));
+	for (col = 0; col < self->num_col; col++) {
+		rows[col]= PyTuple_New(self->num_row);
+		for (row = 0; row < self->num_row; row++) {
+			PyTuple_SET_ITEM(rows[col], row, PyFloat_FromDouble(MATRIX_ITEM(self, row, col)));
 		}
 	}
 	switch (self->num_col) {
@@ -1340,7 +1340,7 @@
 	for (col = 0; col < self->num_col; col++) {
 		maxsize[col]= 0;
 		for (row = 0; row < self->num_row; row++) {
-			int size= BLI_snprintf(dummy_buf, sizeof(dummy_buf), "%.4f", MATRIX_ITEM(self, col, row));
+			int size= BLI_snprintf(dummy_buf, sizeof(dummy_buf), "%.4f", MATRIX_ITEM(self, row, col));
 			maxsize[col]= MAX2(maxsize[col], size);
 		}
 	}
@@ -1349,7 +1349,7 @@
 	BLI_dynstr_appendf(ds, "<Matrix %dx%d (", self->num_row, self->num_col);
 	for (row = 0; row < self->num_row; row++) {
 		for (col = 0; col < self->num_col; col++) {
-			BLI_dynstr_appendf(ds, col ? ", %*.4f" : "%*.4f", maxsize[col], MATRIX_ITEM(self, col, row));
+			BLI_dynstr_appendf(ds, col ? ", %*.4f" : "%*.4f", maxsize[col], MATRIX_ITEM(self, row, col));
 		}
 		BLI_dynstr_append(ds, row + 1 != self->num_row ? ")\n             " : ")");
 	}
@@ -1439,7 +1439,7 @@
 		return -1;
 	}
 
-	memcpy(MATRIX_ROW_PTR(self, i), vec, self->num_row * sizeof(float));
+	memcpy(MATRIX_COL_PTR(self, i), vec, self->num_row * sizeof(float));
 
 	(void)BaseMath_WriteCallback(self);
 	return 0;
@@ -1619,14 +1619,14 @@
 						0.0f, 0.0f, 0.0f, 0.0f,
 						0.0f, 0.0f, 0.0f, 1.0f};
 		double dot = 0.0f;
-		int x, y, z;
+		int col, row, item;
 
-		for (x = 0; x < mat2->num_col; x++) {
-			for (y = 0; y < mat1->num_row; y++) {
-				for (z = 0; z < mat1->num_col; z++) {
-					dot += MATRIX_ITEM(mat1, z, y) * MATRIX_ITEM(mat2, x, z);
+		for (col = 0; col < mat2->num_col; col++) {
+			for (row = 0; row < mat1->num_row; row++) {
+				for (item = 0; item < mat1->num_col; item++) {
+					dot += MATRIX_ITEM(mat1, row, item) * MATRIX_ITEM(mat2, item, col);
 				}
-				mat[((x * mat1->num_row) + y)] = (float)dot;
+				mat[((col * mat1->num_row) + row)] = (float)dot;
 				dot = 0.0f;
 			}
 		}

Modified: trunk/blender/source/blender/python/mathutils/mathutils_Matrix.h
===================================================================
--- trunk/blender/source/blender/python/mathutils/mathutils_Matrix.h	2011-12-20 04:23:29 UTC (rev 42753)
+++ trunk/blender/source/blender/python/mathutils/mathutils_Matrix.h	2011-12-20 05:48:35 UTC (rev 42754)
@@ -41,17 +41,17 @@
 /* matrix[row][col] == MATRIX_ITEM_INDEX(matrix, row, col) */
 
 #ifdef DEBUG
-#  define MATRIX_ITEM_ASSERT(_mat, _row, _col) (BLI_assert(_row < (_mat)->num_col && _col < (_mat)->num_row))
+#  define MATRIX_ITEM_ASSERT(_mat, _row, _col) (BLI_assert(_row < (_mat)->num_row && _col < (_mat)->num_col))
 #else
 #  define MATRIX_ITEM_ASSERT(_mat, _row, _col) (void)0
 #endif
 
-#define MATRIX_ITEM_INDEX(_mat, _row, _col) (MATRIX_ITEM_ASSERT(_mat, _row, _col),(((_mat)->num_row * (_row)) + (_col)))
+#define MATRIX_ITEM_INDEX(_mat, _row, _col) (MATRIX_ITEM_ASSERT(_mat, _row, _col),(((_mat)->num_row * (_col)) + (_row)))
 #define MATRIX_ITEM_PTR(  _mat, _row, _col) ((_mat)->matrix + MATRIX_ITEM_INDEX(_mat, _row, _col))
 #define MATRIX_ITEM(      _mat, _row, _col) ((_mat)->matrix  [MATRIX_ITEM_INDEX(_mat, _row, _col)])
 
-#define MATRIX_ROW_INDEX(_mat, _row) (MATRIX_ITEM_INDEX(_mat, _row, 0))
-#define MATRIX_ROW_PTR(  _mat, _row) ((_mat)->matrix + MATRIX_ROW_INDEX(_mat, _row))
+#define MATRIX_COL_INDEX(_mat, _col) (MATRIX_ITEM_INDEX(_mat, 0, _col))
+#define MATRIX_COL_PTR(  _mat, _col) ((_mat)->matrix + MATRIX_COL_INDEX(_mat, _col))
 
 typedef struct {
 	BASE_MATH_MEMBERS(matrix);




More information about the Bf-blender-cvs mailing list