Skip to content

Commit 47b9d9d

Browse files
committed
[lisp/c/matrix.c] check whether norm is nan to support the case of rotating around x,y,z axis.
1 parent fda2b84 commit 47b9d9d

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

lisp/c/matrix.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,14 +1103,14 @@ pointer argv[];
11031103
printf("rotation-angle1: %f %f %f\n",kx,ky,kz);
11041104
if ((fabs(kx) > fabs(ky)) && (fabs(kx) > fabs(kz))) {
11051105
ky=(m[size]+m[1])/(2*kx*vers); kz=(m[2]+m[size+size])/(2*kx*vers);
1106-
norm=sqrt((ky*ky+kz*kz)/(1.0-kx*kx)); ky/=norm; kz/=norm;}
1106+
norm=sqrt((ky*ky+kz*kz)/(1.0-kx*kx)); if (!isnan(norm)) {ky/=norm; kz/=norm;}}
11071107
else if ((fabs(ky) > fabs(kx)) && (fabs(ky) > fabs(kz))) {
11081108
kx=(m[size]+m[1])/(2*ky*vers); kz=(m[size+2]+m[size+size+1])/(2*ky*vers);
1109-
norm=sqrt((kx*kx+kz*kz)/(1.0-ky*ky)); kx/=norm; kz/=norm;}
1109+
norm=sqrt((kx*kx+kz*kz)/(1.0-ky*ky)); if (!isnan(norm)) {kx/=norm; kz/=norm;}}
11101110
else {
11111111
kx=(m[2]+m[size+size])/(2*kz*vers);
11121112
ky=(m[size+2]+m[size+size+1])/(2*kz*vers);
1113-
norm=sqrt((kx*kx+ky*ky)/(1.0-kz*kz)); kx/=norm; ky/=norm;}
1113+
norm=sqrt((kx*kx+ky*ky)/(1.0-kz*kz)); if (!isnan(norm)) {kx/=norm; ky/=norm;}}
11141114
/**/
11151115
norm=sqrt(kx*kx + ky*ky + kz*kz);
11161116
if (debug)

0 commit comments

Comments
 (0)