[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58665] trunk/blender/source/blender/ editors/space_view3d/view3d_edit.c: cleanup ED_view3d_from_m4() ambiguity with NULL checks, now assert if dist is set up but ofs.
Campbell Barton
ideasman42 at gmail.com
Sat Jul 27 16:44:53 CEST 2013
Revision: 58665
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58665
Author: campbellbarton
Date: 2013-07-27 14:44:52 +0000 (Sat, 27 Jul 2013)
Log Message:
-----------
cleanup ED_view3d_from_m4() ambiguity with NULL checks, now assert if dist is set up but ofs.
also small optimization for matrix conversion.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c 2013-07-27 14:17:20 UTC (rev 58664)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c 2013-07-27 14:44:52 UTC (rev 58665)
@@ -4200,29 +4200,28 @@
*/
void ED_view3d_from_m4(float mat[4][4], float ofs[3], float quat[4], float *dist)
{
+ float nmat[3][3];
+
+ /* dist depends on offset */
+ BLI_assert(dist == NULL || ofs != NULL);
+
+ copy_m3_m4(nmat, mat);
+ normalize_m3(nmat);
+
/* Offset */
if (ofs)
negate_v3_v3(ofs, mat[3]);
/* Quat */
if (quat) {
- float imat[4][4];
- normalize_m4_m4(imat, mat);
- invert_m4(imat);
- mat4_to_quat(quat, imat);
+ float imat[3][3];
+ invert_m3_m3(imat, nmat);
+ mat3_to_quat(quat, imat);
}
- if (dist) {
- float nmat[3][3];
- float vec[3];
+ if (ofs && dist) {
+ float vec[3] = {0.0f, 0.0f, -(*dist)};
- vec[0] = 0.0f;
- vec[1] = 0.0f;
- vec[2] = -(*dist);
-
- copy_m3_m4(nmat, mat);
- normalize_m3(nmat);
-
mul_m3_v3(nmat, vec);
sub_v3_v3(ofs, vec);
}
More information about the Bf-blender-cvs
mailing list