[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43733] trunk/blender/source/blender/ blenlib/intern/math_matrix.c: Fix orthogonality check for mat3 and mat4
Campbell Barton
ideasman42 at gmail.com
Thu Jan 26 18:23:38 CET 2012
Can you give an example as to what case this fixes?
On Fri, Jan 27, 2012 at 4:11 AM, Sv. Lockal <lockalsash at gmail.com> wrote:
> 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
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
--
- Campbell
More information about the Bf-committers
mailing list