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

Comparing ray/src/gen/genblinds.c (file contents):
Revision 2.11 by schorsch, Sun Nov 16 10:29:38 2003 UTC vs.
Revision 2.12 by greg, Wed Dec 28 19:42:13 2005 UTC

# Line 102 | Line 102 | main(
102          char  *argv[]
103   )
104   {
105 <    double  width, delem, depth, rcurv = 0.0, angle;
105 >    double  width, delem, depth, rcurv = 0.0, mydelta, angle;
106      double  beta, gamma, theta, chi = 0;
107      int     i, j, k, l;
108  
# Line 126 | Line 126 | main(
126  
127      /* CURVED BLIND CALCULATION */
128  
129 <    if (rcurv != 0) {
129 >    if (rcurv != 0.) {
130  
131          /* BLINDS SUSTAINED ANGLE */
132  
133 <        theta = 2*asin(depth/(2*fabs(rcurv)));
133 >        theta = 2.*asin(depth/(2.*fabs(rcurv)));
134  
135          /* HOW MANY ELEMENTARY SURFACES SHOULD BE CALCULATED ? */
136  
137 <        nsurf = (int)(theta / ((PI/180.)*DELTA)) + 1;
137 >        nsurf = (int)(theta / ((PI/180.)*DELTA) + 0.99999);
138 >        
139 >        mydelta = (180./PI) * theta / nsurf;
140  
141          /* WHAT IS THE DEPTH OF THE ELEMENTARY SURFACES ? */
142  
143 <        delem = 2*fabs(rcurv)*sin((PI/180.)*(DELTA/2.));
143 >        delem = 2.*fabs(rcurv)*sin((PI/180.)*(mydelta/2.));
144  
145          beta = (PI-theta)/2.;
146          gamma = beta -((PI/180.)*angle);
# Line 147 | Line 149 | main(
149  
150          if (rcurv < 0) {
151              A[0]=fabs(rcurv)*cos(gamma);
152 <            A[0] *= -1;
152 >            A[0] *= -1.;
153              A[1]=0.;
154              A[2]=fabs(rcurv)*sin(gamma);
155          }
# Line 155 | Line 157 | main(
157              A[0]=fabs(rcurv)*cos(gamma+theta);
158              A[1]=0.;
159              A[2]=fabs(rcurv)*sin(gamma+theta);
160 <            A[2] *= -1;
160 >            A[2] *= -1.;
161          }
162  
163          for (k=0; k < nsurf; k++) {
164              if (rcurv < 0) {
165 <                chi=(PI/180.)*((180.-DELTA)/2.) - (gamma+(k*(PI/180.)*DELTA));
165 >                chi=(PI/180.)*((180.-mydelta)/2.) - (gamma+(k*(PI/180.)*mydelta));
166              }
167              if (rcurv > 0) {
168 <                chi=(PI-(gamma+theta)+(k*(PI/180.)*DELTA))-(PI/180.)*  
169 <                    ((180.-DELTA)/2.);
168 >                chi=(PI-(gamma+theta)+(k*(PI/180.)*mydelta))-(PI/180.)*  
169 >                    ((180.-mydelta)/2.);
170              }
171              makeflat(width, delem, chi);
172              if (rcurv < 0.) {
173 <                X[0]=(-fabs(rcurv))*cos(gamma+(k*(PI/180.)*DELTA))-A[0];
173 >                X[0]=(-fabs(rcurv))*cos(gamma+(k*(PI/180.)*mydelta))-A[0];
174                  X[1]=0.;
175 <                X[2]=fabs(rcurv)*sin(gamma+(k*(PI/180.)*DELTA))-A[2];
175 >                X[2]=fabs(rcurv)*sin(gamma+(k*(PI/180.)*mydelta))-A[2];
176              }
177              if (rcurv > 0.) {
178 <                X[0]=fabs(rcurv)*cos(gamma+theta-(k*(PI/180.)*DELTA))-A[0];
178 >                X[0]=fabs(rcurv)*cos(gamma+theta-(k*(PI/180.)*mydelta))-A[0];
179                  X[1]=0.;
180 <                X[2]=(-fabs(rcurv))*sin(gamma+theta-(k*(PI/180.)*DELTA))-A[2];
180 >                X[2]=(-fabs(rcurv))*sin(gamma+theta-(k*(PI/180.)*mydelta))-A[2];
181              }
182  
183              for (i=0; i < 4; i++)  {
# Line 188 | Line 190 | main(
190  
191      /* FLAT BLINDS CALCULATION */
192  
193 <    if (rcurv == 0.) {
193 >    else {
194  
195          nsurf=1;
196          makeflat(width,depth,angle*(PI/180.));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines