[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11958] trunk/blender/source/blender/ python/api2_2x: matrix to scale fixes from stable
Campbell Barton
cbarton at metavr.com
Fri Sep 7 09:55:36 CEST 2007
Revision: 11958
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11958
Author: campbellbarton
Date: 2007-09-07 09:55:36 +0200 (Fri, 07 Sep 2007)
Log Message:
-----------
matrix to scale fixes from stable
Modified Paths:
--------------
trunk/blender/source/blender/python/api2_2x/Object.c
trunk/blender/source/blender/python/api2_2x/matrix.c
Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c 2007-09-07 07:45:07 UTC (rev 11957)
+++ trunk/blender/source/blender/python/api2_2x/Object.c 2007-09-07 07:55:36 UTC (rev 11958)
@@ -1374,14 +1374,23 @@
"expected a string or nothing" );
if( BLI_streq( space, "worldspace" ) ) { /* Worldspace matrix */
- float scale[3];
+ float rot[3];
+ float mat[3][3], imat[3][3], tmat[3][3];
disable_where_script( 1 );
where_is_object( self->object );
- Mat4ToSize(self->object->obmat, scale);
- return Py_BuildValue( "fff",
- self->object->size[0],
- self->object->size[1],
- self->object->size[2] );
+
+ Mat3CpyMat4(mat, self->object->obmat);
+
+ /* functionality copied from editobject.c apply_obmat */
+ Mat3ToEul(mat, rot);
+ EulToMat3(rot, tmat);
+ Mat3Inv(imat, tmat);
+ Mat3MulMat3(tmat, imat, mat);
+
+ attr = Py_BuildValue( "fff",
+ tmat[0][0],
+ tmat[1][1],
+ tmat[2][2] );
disable_where_script( 0 );
} else if( BLI_streq( space, "localspace" ) ) { /* Localspace matrix */
return Py_BuildValue( "fff",
Modified: trunk/blender/source/blender/python/api2_2x/matrix.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/matrix.c 2007-09-07 07:45:07 UTC (rev 11957)
+++ trunk/blender/source/blender/python/api2_2x/matrix.c 2007-09-07 07:55:36 UTC (rev 11958)
@@ -202,16 +202,27 @@
/*---------------------------Matrix.scalePart() --------------------*/
PyObject *Matrix_scalePart(MatrixObject * self)
{
- float scale[3];
-
+ float scale[3], rot[3];
+ float mat[3][3], imat[3][3], tmat[3][3];
+
/*must be 3-4 cols, 3-4 rows, square matrix*/
if(self->colSize == 4 && self->rowSize == 4)
- Mat4ToSize((float (*)[4])*self->matrix, scale);
+ Mat3CpyMat4(mat, (float (*)[4])*self->matrix);
else if(self->colSize == 3 && self->rowSize == 3)
- Mat3ToSize((float (*)[3])*self->matrix, scale);
+ Mat3CpyMat3(mat, (float (*)[3])*self->matrix);
else
return EXPP_ReturnPyObjError(PyExc_AttributeError,
"Matrix.scalePart(): inappropriate matrix size - expects 3x3 or 4x4 matrix\n");
+
+ /* functionality copied from editobject.c apply_obmat */
+ Mat3ToEul(mat, rot);
+ EulToMat3(rot, tmat);
+ Mat3Inv(imat, tmat);
+ Mat3MulMat3(tmat, imat, mat);
+
+ scale[0]= tmat[0][0];
+ scale[1]= tmat[1][1];
+ scale[2]= tmat[2][2];
return newVectorObject(scale, 3, Py_NEW);
}
/*---------------------------Matrix.invert() ---------------------*/
More information about the Bf-blender-cvs
mailing list