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

Comparing ray/src/common/fvect.c (file contents):
Revision 1.6 by greg, Tue Apr 2 15:27:44 1991 UTC vs.
Revision 2.3 by greg, Fri Dec 10 09:53:30 1993 UTC

# Line 10 | Line 10 | static char SCCSid[] = "$SunId$ LBL";
10   *     8/14/85
11   */
12  
13 + #include  <math.h>
14   #include  "fvect.h"
15  
15 #define  FTINY          1e-7
16  
17
17   double
18   fdot(v1, v2)                    /* return the dot product of two vectors */
19   register FVECT  v1, v2;
# Line 104 | Line 103 | register FVECT  v;
103          if (len <= 0.0)
104                  return(0.0);
105          
106 <        /****** problematic
107 <        if (len >= (1.0-FTINY)*(1.0-FTINY) &&
108 <                        len <= (1.0+FTINY)*(1.0+FTINY))
109 <                return(1.0);
111 <        ******/
106 >        if (len <= 1.0+FTINY && len >= 1.0-FTINY)
107 >                len = 0.5 + 0.5*len;    /* first order approximation */
108 >        else
109 >                len = sqrt(len);
110  
113        len = sqrt(len);
111          v[0] /= len;
112          v[1] /= len;
113          v[2] /= len;
114 +
115          return(len);
116   }
117  
# Line 122 | Line 120 | spinvector(vres, vorig, vnorm, theta)  /* rotate vector
120   FVECT  vres, vorig, vnorm;
121   double  theta;
122   {
125        extern double  cos(), sin();
123          double  sint, cost, normprod;
124          FVECT  vperp;
125          register int  i;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines