[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23149] trunk/blender/source/blender: simple error in recent arithb.c commit, have Mathutils. RotationMatrix use AxisAngleToMat3

Campbell Barton ideasman42 at gmail.com
Sat Sep 12 15:25:38 CEST 2009


Revision: 23149
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23149
Author:   campbellbarton
Date:     2009-09-12 15:25:38 +0200 (Sat, 12 Sep 2009)

Log Message:
-----------
simple error in recent arithb.c commit, have Mathutils.RotationMatrix use AxisAngleToMat3

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/arithb.c
    trunk/blender/source/blender/python/generic/Mathutils.c

Modified: trunk/blender/source/blender/blenlib/intern/arithb.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/arithb.c	2009-09-12 12:59:33 UTC (rev 23148)
+++ trunk/blender/source/blender/blenlib/intern/arithb.c	2009-09-12 13:25:38 UTC (rev 23149)
@@ -3369,7 +3369,7 @@
 {
 	float tmat[3][3];
 	
-	AxisAngleToMat3(axis, angle, mat);
+	AxisAngleToMat3(axis, angle, tmat);
 	Mat4One(mat);
 	Mat4CpyMat3(mat, tmat);
 }

Modified: trunk/blender/source/blender/python/generic/Mathutils.c
===================================================================
--- trunk/blender/source/blender/python/generic/Mathutils.c	2009-09-12 12:59:33 UTC (rev 23148)
+++ trunk/blender/source/blender/python/generic/Mathutils.c	2009-09-12 13:25:38 UTC (rev 23149)
@@ -353,7 +353,7 @@
 	VectorObject *vec = NULL;
 	char *axis = NULL;
 	int matSize;
-	float angle = 0.0f, norm = 0.0f, cosAngle = 0.0f, sinAngle = 0.0f;
+	float angle = 0.0f;
 	float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
 		0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
 
@@ -437,40 +437,8 @@
 		mat[8] = 1.0f;
 	} else if((strcmp(axis, "r") == 0) || (strcmp(axis, "R") == 0)) {
 		//arbitrary rotation
-		//normalize arbitrary axis
-		norm = (float) sqrt(vec->vec[0] * vec->vec[0] +
-				       vec->vec[1] * vec->vec[1] +
-				       vec->vec[2] * vec->vec[2]);
-		vec->vec[0] /= norm;
-		vec->vec[1] /= norm;
-		vec->vec[2] /= norm;
-		
-		if (isnan(vec->vec[0]) || isnan(vec->vec[1]) || isnan(vec->vec[2])) {
-			/* zero length vector, return an identity matrix, could also return an error */
-			mat[0]= mat[4] = mat[8] = 1.0f;
-		} else {	
-			/* create matrix */
-			cosAngle = (float) cos(angle);
-			sinAngle = (float) sin(angle);
-			mat[0] = ((vec->vec[0] * vec->vec[0]) * (1 - cosAngle)) +
-				cosAngle;
-			mat[1] = ((vec->vec[0] * vec->vec[1]) * (1 - cosAngle)) +
-				(vec->vec[2] * sinAngle);
-			mat[2] = ((vec->vec[0] * vec->vec[2]) * (1 - cosAngle)) -
-				(vec->vec[1] * sinAngle);
-			mat[3] = ((vec->vec[0] * vec->vec[1]) * (1 - cosAngle)) -
-				(vec->vec[2] * sinAngle);
-			mat[4] = ((vec->vec[1] * vec->vec[1]) * (1 - cosAngle)) +
-				cosAngle;
-			mat[5] = ((vec->vec[1] * vec->vec[2]) * (1 - cosAngle)) +
-				(vec->vec[0] * sinAngle);
-			mat[6] = ((vec->vec[0] * vec->vec[2]) * (1 - cosAngle)) +
-				(vec->vec[1] * sinAngle);
-			mat[7] = ((vec->vec[1] * vec->vec[2]) * (1 - cosAngle)) -
-				(vec->vec[0] * sinAngle);
-			mat[8] = ((vec->vec[2] * vec->vec[2]) * (1 - cosAngle)) +
-				cosAngle;
-		}
+		AxisAngleToMat3(vec->vec, angle, (float *)mat);
+
 	} else {
 		PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): unrecognizable axis of rotation type - expected x,y,z or r\n");
 		return NULL;





More information about the Bf-blender-cvs mailing list