[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