Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-04-01 04:14:41 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-04-01 04:14:41 +0400
commit26b0255049974c502fd171e4c4d3387b0d021806 (patch)
tree72e06b6be69734ec8a76e6e820a2e9a770f399b1 /source/blender/blenlib/intern/math_matrix.c
parent8f949dd58decac45fd49f9a93152f2cddc98d901 (diff)
Fix for is_orthogonal check which in fact was checking for orthonormal matrix.
Separated it into two functions so now it'll be clear if check happens for orthonormal or just orthogonal.
Diffstat (limited to 'source/blender/blenlib/intern/math_matrix.c')
-rw-r--r--source/blender/blenlib/intern/math_matrix.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c
index e61a8ef041a..76b986d7346 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -816,9 +816,6 @@ int is_orthogonal_m3(float m[][3])
if (fabsf(dot_v3v3(m[i], m[j])) > 1.5f * FLT_EPSILON)
return 0;
}
-
- if (fabsf(dot_v3v3(m[i], m[i]) - 1) > 1.5f * FLT_EPSILON)
- return 0;
}
return 1;
@@ -834,13 +831,41 @@ int is_orthogonal_m4(float m[][4])
return 0;
}
- if (fabsf(dot_vn_vn(m[i], m[i], 4) - 1) > 1.5f * FLT_EPSILON)
- return 0;
}
return 1;
}
+int is_orthonormal_m3(float m[][3])
+{
+ if (is_orthogonal_m3(m)) {
+ int i;
+
+ for (i = 0; i < 3; i++)
+ if (fabsf(dot_v3v3(m[i], m[i]) - 1) > 1.5f * FLT_EPSILON)
+ return 0;
+
+ return 1;
+ }
+
+ return 0;
+}
+
+int is_orthonormal_m4(float m[][4])
+{
+ if (is_orthogonal_m4(m)) {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ if (fabsf(dot_vn_vn(m[i], m[i], 4) - 1) > 1.5f * FLT_EPSILON)
+ return 0;
+
+ return 1;
+ }
+
+ return 0;
+}
+
void normalize_m3(float mat[][3])
{
normalize_v3(mat[0]);