Revision: 43733
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43733
Author: lockal
Date: 2012-01-26 17:11:43 +0000 (Thu, 26 Jan 2012)
Log Message:
-----------
Fix orthogonality check for mat3 and mat4
Modified Paths:
--------------
trunk/blender/source/blender/blenlib/intern/math_matrix.c
Modified: trunk/blender/source/blender/blenlib/intern/math_matrix.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_matrix.c 2012-01-26
17:03:30 UTC (rev 43732)
+++ trunk/blender/source/blender/blenlib/intern/math_matrix.c 2012-01-26
17:11:43 UTC (rev 43733)
@@ -778,32 +778,38 @@
mul_v3_fl(mat[2], size[2]);
}
-int is_orthogonal_m3(float mat[][3])
+int is_orthogonal_m3(float m[][3])
{
- if (fabsf(dot_v3v3(mat[0], mat[1])) > 1.5f * FLT_EPSILON)
- return 0;
+ int i, j;
- if (fabsf(dot_v3v3(mat[1], mat[2])) > 1.5f * FLT_EPSILON)
- return 0;
+ for (i = 0; i < 3; i++) {
+ for (j = 0; j < i; j++) {
+ if (fabsf(dot_v3v3(m[i], m[j])) > 1.5f * FLT_EPSILON)
+ return 0;
+ }
- if (fabsf(dot_v3v3(mat[0], mat[2])) > 1.5f * FLT_EPSILON)
- return 0;
-
- return 1;
+ if (fabsf(dot_v3v3(m[i], m[i]) - 1) > 1.5f * FLT_EPSILON)
+ return 0;
+ }
+
+ return 1;
}
-int is_orthogonal_m4(float mat[][4])
+int is_orthogonal_m4(float m[][4])
{
- if (fabsf(dot_v3v3(mat[0], mat[1])) > 1.5f * FLT_EPSILON)
- return 0;
+ int i, j;
- if (fabsf(dot_v3v3(mat[1], mat[2])) > 1.5f * FLT_EPSILON)
- return 0;
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < i; j++) {
+ if (fabsf(dot_vn_vn(m[i], m[j], 4)) > 1.5f * FLT_EPSILON)
+ return 0;
+ }
- if (fabsf(dot_v3v3(mat[0], mat[2])) > 1.5f * FLT_EPSILON)
- return 0;
-
- return 1;
+ if (fabsf(dot_vn_vn(m[i], m[i], 4) - 1) > 1.5f * FLT_EPSILON)
+ return 0;
+ }
+
+ return 1;
}
void normalize_m3(float mat[][3])
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs