--- ray/src/util/rfluxmtx.c 2014/08/26 19:10:10 2.18 +++ ray/src/util/rfluxmtx.c 2014/12/04 05:26:28 2.19 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rfluxmtx.c,v 2.18 2014/08/26 19:10:10 greg Exp $"; +static const char RCSid[] = "$Id: rfluxmtx.c,v 2.19 2014/12/04 05:26:28 greg Exp $"; #endif /* * Calculate flux transfer matrix or matrices using rcontrib @@ -516,21 +516,12 @@ make_axes(FVECT uva[2], const FVECT nrm) { int i; - uva[1][0] = 0.5 - frandom(); - uva[1][1] = 0.5 - frandom(); - uva[1][2] = 0.5 - frandom(); - for (i = 3; i--; ) - if ((-0.6 < nrm[i]) & (nrm[i] < 0.6)) - break; - if (i < 0) { + if (!getperpendicular(uva[0], nrm)) { fputs(progname, stderr); fputs(": bad surface normal in make_axes!\n", stderr); exit(1); } - uva[1][i] = 1.0; - VCROSS(uva[0], uva[1], nrm); - normalize(uva[0]); - VCROSS(uva[1], nrm, uva[0]); + fcross(uva[1], nrm, uva[0]); } /* Illegal sender surfaces end up here */