117 |
|
{ |
118 |
|
unsigned long vcount = (hresolu > 1) ? (unsigned long)hresolu*vresolu |
119 |
|
: (unsigned long)vresolu; |
120 |
< |
long nextflush = (vresolu > 0) & (hresolu > 1) ? 0 : hresolu; |
120 |
> |
long nextflush = (!vresolu | (hresolu <= 1)) * hresolu; |
121 |
|
int something2flush = 0; |
122 |
|
FILE *fp; |
123 |
|
double d; |
146 |
|
case 'f': putreal = putf; break; |
147 |
|
case 'd': putreal = putd; break; |
148 |
|
case 'c': |
149 |
< |
if (outvals[0] && (outvals[1] || !strchr("vVWrx", outvals[0]))) |
150 |
< |
error(USER, "color format only with one of 'vVWrx'"); |
149 |
> |
if (outvals[0] && (outvals[1] || !strchr("vrx", outvals[0]))) |
150 |
> |
error(USER, "color format only with -ov, -or, -ox"); |
151 |
|
putreal = putrgbe; break; |
152 |
|
default: |
153 |
|
error(CONSISTENCY, "botched output format"); |
167 |
|
getvec(direc, inform, fp) == 0) { |
168 |
|
|
169 |
|
d = normalize(direc); |
170 |
< |
if (d == 0.0) { /* zero ==> flush */ |
171 |
< |
if ((--nextflush <= 0) | !vcount && something2flush) { |
170 |
> |
if (d == 0.0) { /* flush request? */ |
171 |
> |
if (something2flush) { |
172 |
|
if (ray_pnprocs > 1 && ray_fifo_flush() < 0) |
173 |
|
error(USER, "child(ren) died"); |
174 |
|
bogusray(); |
175 |
|
fflush(stdout); |
176 |
+ |
nextflush = (!vresolu | (hresolu <= 1)) * hresolu; |
177 |
|
something2flush = 0; |
177 |
– |
nextflush = (vresolu > 0) & (hresolu > 1) ? 0 : |
178 |
– |
hresolu; |
178 |
|
} else |
179 |
|
bogusray(); |
180 |
|
} else { /* compute and print */ |
266 |
|
break; |
267 |
|
case 'V': /* contribution */ |
268 |
|
*table++ = oputV; |
270 |
– |
castonly = 0; |
269 |
|
if (ambounce > 0 && (ambacc > FTINY || ambssamp > 0)) |
270 |
|
error(WARNING, |
271 |
|
"-otV accuracy depends on -aa 0 -as 0"); |
314 |
|
break; |
315 |
|
} |
316 |
|
*table = NULL; |
317 |
< |
if (do_irrad | imm_irrad) /* compatibile? */ |
318 |
< |
for (table = ray_out; *table != NULL; table++) |
319 |
< |
if ((*table == oputr) | (*table == oputR) | |
320 |
< |
(*table == oputx) | (*table == oputX)) { |
321 |
< |
error(WARNING, "-orRxX options incompatible with -I+ and -i+"); |
322 |
< |
break; |
323 |
< |
} |
317 |
> |
/* compatibility */ |
318 |
> |
for (table = ray_out; *table != NULL; table++) { |
319 |
> |
if ((*table == oputV) | (*table == oputW)) |
320 |
> |
error(WARNING, "-oVW options require trace mode"); |
321 |
> |
if ((do_irrad | imm_irrad) && |
322 |
> |
(*table == oputr) | (*table == oputR) | |
323 |
> |
(*table == oputx) | (*table == oputX)) |
324 |
> |
error(WARNING, "-orRxX options incompatible with -I+ and -i+"); |
325 |
> |
} |
326 |
|
} |
327 |
|
|
328 |
|
|
662 |
|
RAY *r |
663 |
|
) |
664 |
|
{ |
665 |
< |
if (r->rot < FHUGE) |
666 |
< |
(*putreal)(r->ron, 3); |
667 |
< |
else |
665 |
> |
if (r->rot < FHUGE) { |
666 |
> |
if (r->rflips & 1) { /* undo any flippin' flips */ |
667 |
> |
FVECT unrm; |
668 |
> |
unrm[0] = -r->ron[0]; |
669 |
> |
unrm[1] = -r->ron[1]; |
670 |
> |
unrm[2] = -r->ron[2]; |
671 |
> |
(*putreal)(unrm, 3); |
672 |
> |
} else |
673 |
> |
(*putreal)(r->ron, 3); |
674 |
> |
} else |
675 |
|
(*putreal)(vdummy, 3); |
676 |
|
} |
677 |
|
|