ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/dircode.c
(Generate patch)

Comparing ray/src/common/dircode.c (file contents):
Revision 2.5 by greg, Fri Jun 20 00:25:49 2003 UTC vs.
Revision 2.6 by greg, Sat Jun 21 14:48:53 2003 UTC

# Line 33 | Line 33 | FVECT  dv;
33                          dc |= FXNEG<<i;
34                  } else
35                          cd[i] = (int)(dv[i] * DCSCALE);
36 +        if (!(cd[0] | cd[1] | cd[2]))
37 +                return(0);              /* zero normal */
38          if (cd[0] <= cd[1]) {
39                  dc |= F1X | cd[0] << F1SFT;
40                  cm = cd[1];
# Line 44 | Line 46 | FVECT  dv;
46                  dc |= F2Z | cd[2] << F2SFT;
47          else
48                  dc |= cm << F2SFT;
49 <        if (!dc)        /* don't generate 0 code */
49 >        if (!dc)        /* don't generate 0 code normally */
50                  dc = F1X;
51          return(dc);
52   }
# Line 57 | Line 59 | register int32 dc;
59   {
60          double  d1, d2, der;
61  
62 +        if (!dc) {              /* special code for zero normal */
63 +                dv[0] = dv[1] = dv[2] = 0.;
64 +                return;
65 +        }
66          d1 = ((dc>>F1SFT & FMASK)+.5)*(1./DCSCALE);
67          d2 = ((dc>>F2SFT & FMASK)+.5)*(1./DCSCALE);
68          der = sqrt(1. - d1*d1 - d2*d2);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines