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

Comparing ray/src/rt/func.c (file contents):
Revision 1.7 by greg, Thu Oct 5 07:23:22 1989 UTC vs.
Revision 1.8 by greg, Sat Apr 7 16:12:56 1990 UTC

# Line 42 | Line 42 | double  sca;
42                  scompile(NULL, "Nx=$4;Ny=$5;Nz=$6;");
43                  scompile(NULL, "Px=$7;Py=$8;Pz=$9;");
44                  scompile(NULL, "T=$10;Rdot=$11;");
45 +                scompile(NULL, "S=$12;Tx=$13;Ty=$14;Tz=$15;");
46 +                scompile(NULL, "Ix=$16;Iy=$17;Iz=$18;");
47 +                scompile(NULL, "Jx=$19;Jy=$20;Jz=$21;");
48 +                scompile(NULL, "Kx=$22;Ky=$23;Kz=$24;");
49                  funset("arg", 1, l_arg);
50                  funset("noise3", 3, l_noise3);
51                  funset("noise3a", 3, l_noise3a);
# Line 126 | Line 130 | double
130   chanvalue(n)                    /* return channel n to calcomp */
131   register int  n;
132   {
133 <        double  res;
133 >        double  sum;
134          register RAY  *r;
135  
136 <        n--;                                    /* for convenience */
136 >        n--;                            /* for convenience */
137  
138 <        if (n < 0 || n > 10)
138 >        if (n < 0 || n > 23)
139                  error(USER, "illegal channel number");
140  
141 <        if (n == 9) {                           /* distance */
141 >        if (n == 9) {                   /* distance */
142  
143 <                res = fray->rot;
143 >                sum = fray->rot;
144                  for (r = fray->parent; r != NULL; r = r->parent)
145 <                        res += r->rot;
146 <                res *= fxf.sca;
145 >                        sum += r->rot;
146 >                return(sum * fxf.sca);
147  
148 <        } else if (n == 10) {                   /* dot product */
148 >        }
149 >        if (n == 10)                    /* dot product */
150 >                return(fray->rod);
151  
152 <                res = fray->rod;
152 >        if (n < 3)                      /* ray direction */
153  
154 <        } else if (n < 3) {                     /* ray direction */
155 <                        res = ( fray->rdir[0]*fxf.xfm[0][n] +
156 <                                        fray->rdir[1]*fxf.xfm[1][n] +
157 <                                        fray->rdir[2]*fxf.xfm[2][n]     )
152 <                                 / fxf.sca ;
153 <        } else if (n < 6) {                     /* surface normal */
154 <                        res = ( fray->ron[0]*fxf.xfm[0][n-3] +
155 <                                        fray->ron[1]*fxf.xfm[1][n-3] +
156 <                                        fray->ron[2]*fxf.xfm[2][n-3]    )
157 <                                 / fxf.sca ;
158 <        } else {                                /* intersection */
159 <                        res =   fray->rop[0]*fxf.xfm[0][n-6] +
160 <                                        fray->rop[1]*fxf.xfm[1][n-6] +
161 <                                        fray->rop[2]*fxf.xfm[2][n-6] +
162 <                                                     fxf.xfm[3][n-6] ;
163 <        }
154 >                return( (       fray->rdir[0]*fxf.xfm[0][n] +
155 >                                fray->rdir[1]*fxf.xfm[1][n] +
156 >                                fray->rdir[2]*fxf.xfm[2][n]     )
157 >                         / fxf.sca );
158  
159 <        return(res);
159 >        if (n < 6)                      /* surface normal */
160 >
161 >                return( (       fray->ron[0]*fxf.xfm[0][n-3] +
162 >                                fray->ron[1]*fxf.xfm[1][n-3] +
163 >                                fray->ron[2]*fxf.xfm[2][n-3]    )
164 >                         / fxf.sca );
165 >
166 >        if (n < 9)                      /* intersection */
167 >
168 >                return( fray->rop[0]*fxf.xfm[0][n-6] +
169 >                                fray->rop[1]*fxf.xfm[1][n-6] +
170 >                                fray->rop[2]*fxf.xfm[2][n-6] +
171 >                                             fxf.xfm[3][n-6] );
172 >
173 >        if (n == 11)                    /* scale */
174 >                return(fxf.sca);
175 >
176 >        if (n < 15)                     /* origin */
177 >                return(fxf.xfm[3][n-12]);
178 >
179 >        if (n < 18)                     /* i unit vector */
180 >                return(fxf.xfm[0][n-15] / fxf.sca);
181 >
182 >        if (n < 21)                     /* j unit vector */
183 >                return(fxf.xfm[1][n-15] / fxf.sca);
184 >
185 >        if (n < 24)                     /* k unit vector */
186 >                return(fxf.xfm[2][n-21] / fxf.sca);
187   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines