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.4 by greg, Tue Oct 17 13:35:30 1989 UTC vs.
Revision 2.2 by greg, Fri Oct 2 16:02:43 1992 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 115 | Line 114 | register FVECT  v;
114          v[1] /= len;
115          v[2] /= len;
116          return(len);
117 + }
118 +
119 +
120 + spinvector(vres, vorig, vnorm, theta)   /* rotate vector around normal */
121 + FVECT  vres, vorig, vnorm;
122 + double  theta;
123 + {
124 +        double  sint, cost, normprod;
125 +        FVECT  vperp;
126 +        register int  i;
127 +        
128 +        if (theta == 0.0) {
129 +                if (vres != vorig)
130 +                        VCOPY(vres, vorig);
131 +                return;
132 +        }
133 +        cost = cos(theta);
134 +        sint = sin(theta);
135 +        normprod = DOT(vorig, vnorm)*(1.-cost);
136 +        fcross(vperp, vnorm, vorig);
137 +        for (i = 0; i < 3; i++)
138 +                vres[i] = vorig[i]*cost + vnorm[i]*normprod + vperp[i]*sint;
139   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines