[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40360] trunk/blender/source/blender/ python/mathutils: add back mathutils Matrix() * Vector(), this is row_vector multiplication.

Campbell Barton ideasman42 at gmail.com
Mon Sep 19 16:29:22 CEST 2011


Revision: 40360
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40360
Author:   campbellbarton
Date:     2011-09-19 14:29:21 +0000 (Mon, 19 Sep 2011)
Log Message:
-----------
add back mathutils Matrix() * Vector(), this is row_vector multiplication.
some minor changes to exception messages.

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

Modified: trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c
===================================================================
--- trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c	2011-09-19 14:20:15 UTC (rev 40359)
+++ trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c	2011-09-19 14:29:21 UTC (rev 40360)
@@ -119,7 +119,7 @@
 {
 	if(kwds && PyDict_Size(kwds)) {
 		PyErr_SetString(PyExc_TypeError,
-		                "mathutils.Matrix(): "
+		                "Matrix(): "
 		                "takes no keyword args");
 		return NULL;
 	}
@@ -155,7 +155,7 @@
 
 	/* will overwrite error */
 	PyErr_SetString(PyExc_TypeError,
-	                "mathutils.Matrix(): "
+	                "Matrix(): "
 	                "expects no args or 2-4 numeric sequences");
 	return NULL;
 }
@@ -216,7 +216,7 @@
 
 	if(!PyArg_ParseTuple(args, "di|O", &angle, &matSize, &vec)) {
 		PyErr_SetString(PyExc_TypeError,
-		                "mathutils.RotationMatrix(angle, size, axis): "
+		                "Matrix.Rotation(angle, size, axis): "
 		                "expected float int and a string or vector");
 		return NULL;
 	}
@@ -225,7 +225,7 @@
 		axis= _PyUnicode_AsString((PyObject *)vec);
 		if(axis==NULL || axis[0]=='\0' || axis[1]!='\0' || axis[0] < 'X' || axis[0] > 'Z') {
 			PyErr_SetString(PyExc_ValueError,
-			                "mathutils.RotationMatrix(): "
+			                "Matrix.Rotation(): "
 			                "3rd argument axis value must be a 3D vector "
 			                "or a string in 'X', 'Y', 'Z'");
 			return NULL;
@@ -240,19 +240,19 @@
 
 	if(matSize != 2 && matSize != 3 && matSize != 4) {
 		PyErr_SetString(PyExc_ValueError,
-		                "mathutils.RotationMatrix(): "
+		                "Matrix.Rotation(): "
 		                "can only return a 2x2 3x3 or 4x4 matrix");
 		return NULL;
 	}
 	if(matSize == 2 && (vec != NULL)) {
 		PyErr_SetString(PyExc_ValueError,
-		                "mathutils.RotationMatrix(): "
+		                "Matrix.Rotation(): "
 		                "cannot create a 2x2 rotation matrix around arbitrary axis");
 		return NULL;
 	}
 	if((matSize == 3 || matSize == 4) && (axis == NULL) && (vec == NULL)) {
 		PyErr_SetString(PyExc_ValueError,
-		                "mathutils.RotationMatrix(): "
+		                "Matrix.Rotation(): "
 		                "axis of rotation for 3d and 4d matrices is required");
 		return NULL;
 	}
@@ -261,7 +261,7 @@
 	if(vec) {
 		float tvec[3];
 
-		if (mathutils_array_parse(tvec, 3, 3, vec, "mathutils.RotationMatrix(angle, size, axis), invalid 'axis' arg") == -1)
+		if (mathutils_array_parse(tvec, 3, 3, vec, "Matrix.Rotation(angle, size, axis), invalid 'axis' arg") == -1)
 			return NULL;
 
 		axis_angle_to_mat3((float (*)[3])mat, tvec, angle);
@@ -428,7 +428,7 @@
 	}
 	if(matSize != 2 && matSize != 3 && matSize != 4) {
 		PyErr_SetString(PyExc_ValueError,
-		                "mathutils.Matrix.OrthoProjection(): "
+		                "Matrix.OrthoProjection(): "
 		                "can only return a 2x2 3x3 or 4x4 matrix");
 		return NULL;
 	}
@@ -445,7 +445,7 @@
 			}
 			else {
 				PyErr_Format(PyExc_ValueError,
-				             "mathutils.Matrix.OrthoProjection(): "
+				             "Matrix.OrthoProjection(): "
 				             "unknown plane, expected: X, Y, not '%.200s'",
 				             plane);
 				return NULL;
@@ -466,7 +466,7 @@
 			}
 			else {
 				PyErr_Format(PyExc_ValueError,
-				             "mathutils.Matrix.OrthoProjection(): "
+				             "Matrix.OrthoProjection(): "
 				             "unknown plane, expected: XY, XZ, YZ, not '%.200s'",
 				             plane);
 				return NULL;
@@ -545,7 +545,7 @@
 	}
 	if(matSize != 2 && matSize != 3 && matSize != 4) {
 		PyErr_SetString(PyExc_ValueError,
-		                "mathutils.Matrix.Shear(): "
+		                "Matrix.Shear(): "
 		                "can only return a 2x2 3x3 or 4x4 matrix");
 		return NULL;
 	}
@@ -555,7 +555,7 @@
 
 		if(factor==-1.0f && PyErr_Occurred()) {
 			PyErr_SetString(PyExc_TypeError,
-			                "mathutils.Matrix.Shear(): "
+			                "Matrix.Shear(): "
 			                "the factor to be a float");
 			return NULL;
 		}
@@ -604,7 +604,7 @@
 		}
 		else {
 			PyErr_SetString(PyExc_ValueError,
-			                "mathutils.Matrix.Shear(): "
+			                "Matrix.Shear(): "
 			                "expected: X, Y, XY, XZ, YZ");
 			return NULL;
 		}
@@ -663,7 +663,7 @@
 	/*must be 3-4 cols, 3-4 rows, square matrix*/
 	if((self->col_size < 3) || (self->row_size < 3) || (self->col_size != self->row_size)) {
 		PyErr_SetString(PyExc_ValueError,
-		                "matrix.to_quat(): "
+		                "Matrix.to_quat(): "
 		                "inappropriate matrix size - expects 3x3 or 4x4 matrix");
 		return NULL;
 	}
@@ -727,13 +727,13 @@
 	}
 	else {
 		PyErr_SetString(PyExc_ValueError,
-		                "matrix.to_euler(): "
+		                "Matrix.to_euler(): "
 		                "inappropriate matrix size - expects 3x3 or 4x4 matrix");
 		return NULL;
 	}
 
 	if(order_str) {
-		order= euler_order_from_string(order_str, "matrix.to_euler()");
+		order= euler_order_from_string(order_str, "Matrix.to_euler()");
 
 		if(order == -1)
 			return NULL;
@@ -762,11 +762,13 @@
 
 	if(self->wrapped==Py_WRAP){
 		PyErr_SetString(PyExc_TypeError,
+		                "Matrix.resize_4x4(): "
 		                "cannot resize wrapped data - make a copy and resize that");
 		return NULL;
 	}
 	if(self->cb_user){
 		PyErr_SetString(PyExc_TypeError,
+		                "Matrix.resize_4x4(): "
 		                "cannot resize owned data - make a copy and resize that");
 		return NULL;
 	}
@@ -774,7 +776,8 @@
 	self->contigPtr = PyMem_Realloc(self->contigPtr, (sizeof(float) * 16));
 	if(self->contigPtr == NULL) {
 		PyErr_SetString(PyExc_MemoryError,
-		                "matrix.resize_4x4(): problem allocating pointer space");
+		                "Matrix.resize_4x4(): "
+		                "problem allocating pointer space");
 		return NULL;
 	}
 	/*set row pointers*/
@@ -835,7 +838,8 @@
 	/* TODO, 2x2 matrix */
 
 	PyErr_SetString(PyExc_TypeError,
-	                "matrix.to_4x4(): inappropriate matrix size");
+	                "Matrix.to_4x4(): "
+	                "inappropriate matrix size");
 	return NULL;
 }
 
@@ -856,7 +860,7 @@
 
 	if((self->col_size < 3) || (self->row_size < 3)) {
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.to_3x3(): inappropriate matrix size");
+		                "Matrix.to_3x3(): inappropriate matrix size");
 		return NULL;
 	}
 
@@ -880,7 +884,7 @@
 
 	if((self->col_size < 3) || self->row_size < 4){
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.to_translation(): "
+		                "Matrix.to_translation(): "
 		                "inappropriate matrix size");
 		return NULL;
 	}
@@ -910,7 +914,7 @@
 	/*must be 3-4 cols, 3-4 rows, square matrix*/
 	if((self->col_size < 3) || (self->row_size < 3)) {
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.to_scale(): "
+		                "Matrix.to_scale(): "
 		                "inappropriate matrix size, 3x3 minimum size");
 		return NULL;
 	}
@@ -946,7 +950,7 @@
 
 	if(self->row_size != self->col_size){
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.invert(ed): "
+		                "Matrix.invert(ed): "
 		                "only square matrices are supported");
 		return NULL;
 	}
@@ -982,6 +986,7 @@
 	}
 	else {
 		PyErr_SetString(PyExc_ValueError,
+		                "Matrix.invert(ed): "
 		                "matrix does not have an inverse");
 		return NULL;
 	}
@@ -1027,7 +1032,8 @@
 
 	if(self->col_size != 3 || self->row_size != 3) {
 		PyErr_SetString(PyExc_TypeError,
-		                "Matrix must have 3x3 dimensions");
+		                "Matrix.rotate(): "
+		                "must have 3x3 dimensions");
 		return NULL;
 	}
 
@@ -1059,7 +1065,7 @@
 
 	if(self->col_size != 4 || self->row_size != 4) {
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.decompose(): "
+		                "Matrix.decompose(): "
 		                "inappropriate matrix size - expects 4x4 matrix");
 		return NULL;
 	}
@@ -1102,7 +1108,7 @@
 
 	if(self->row_size != mat2->row_size || self->col_size != mat2->col_size) {
 		PyErr_SetString(PyExc_ValueError,
-		                "matrix.lerp(): "
+		                "Matrix.lerp(): "
 		                "expects both matrix objects of the same dimensions");
 		return NULL;
 	}
@@ -1119,7 +1125,7 @@
 	}
 	else {
 		PyErr_SetString(PyExc_ValueError,
-		                "matrix.lerp(): "
+		                "Matrix.lerp(): "
 		                "only 3x3 and 4x4 matrices supported");
 		return NULL;
 	}
@@ -1145,7 +1151,7 @@
 
 	if(self->row_size != self->col_size){
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.determinant: "
+		                "Matrix.determinant(): "
 		                "only square matrices are supported");
 		return NULL;
 	}
@@ -1169,7 +1175,7 @@
 
 	if(self->row_size != self->col_size){
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.transpose(d): "
+		                "Matrix.transpose(d): "
 		                "only square matrices are supported");
 		return NULL;
 	}
@@ -1238,7 +1244,7 @@
 
 	if(self->row_size != self->col_size){
 		PyErr_SetString(PyExc_TypeError,
-		                "matrix.identity: "
+		                "Matrix.identity(): "
 		                "only square matrices are supported");
 		return NULL;
 	}
@@ -1771,7 +1777,7 @@
 	/*must be 3-4 cols, 3-4 rows, square matrix*/
 	if((self->col_size < 3) || (self->row_size < 3)) {
 		PyErr_SetString(PyExc_AttributeError,
-		                "matrix.median_scale: "
+		                "Matrix.median_scale: "
 		                "inappropriate matrix size, 3x3 minimum");
 		return NULL;
 	}
@@ -1793,7 +1799,7 @@
 		return PyBool_FromLong(is_negative_m3((float (*)[3])self->contigPtr));
 	else {
 		PyErr_SetString(PyExc_AttributeError,
-		                "matrix.is_negative: "
+		                "Matrix.is_negative: "
 		                "inappropriate matrix size - expects 3x3 or 4x4 matrix");
 		return NULL;
 	}
@@ -1811,7 +1817,7 @@
 		return PyBool_FromLong(is_orthogonal_m3((float (*)[3])self->contigPtr));
 	else {
 		PyErr_SetString(PyExc_AttributeError,
-		                "matrix.is_orthogonal: "
+		                "Matrix.is_orthogonal: "
 		                "inappropriate matrix size - expects 3x3 or 4x4 matrix");
 		return NULL;
 	}


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list