| 33 |
|
#define H_VDST 010 /* VDISTANCE= True */ |
| 34 |
|
#define H_SWAP 020 /* byte order is different */ |
| 35 |
|
|
| 36 |
– |
char *progname; /* global argv[0] */ |
| 37 |
– |
|
| 36 |
|
struct phead { |
| 37 |
|
VIEW vw; |
| 38 |
|
double expos; |
| 71 |
|
{ |
| 72 |
|
int i; |
| 73 |
|
|
| 74 |
< |
progname = argv[0]; |
| 74 |
> |
fixargv0(argv[0]); |
| 75 |
|
for (i = 2; i < argc && argv[i][0] == '-'; i++) |
| 76 |
|
switch (argv[i][1]) { |
| 77 |
|
case 'u': |
| 532 |
|
hdbcoord(gc, hp, bq[bi]); |
| 533 |
|
rv = hdbray(bp); |
| 534 |
|
for (k = bp->nrm; k--; rv++) { |
| 535 |
+ |
RREAL hitd = hddepth(hp, rv->d); |
| 536 |
|
ryp.d = hdray(ryp.ro, ryp.rd, hp, gc, rv->r); |
| 537 |
< |
if (*(int *)hp->priv & H_OBSF) |
| 537 |
> |
if (*(int *)hp->priv & H_OBST) { |
| 538 |
> |
ryp.d = 0; |
| 539 |
> |
} else { |
| 540 |
> |
if (ryp.d > 0.97*hitd) |
| 541 |
> |
ryp.d = 0.97*hitd; |
| 542 |
|
VSUM(ryp.ro, ryp.ro, ryp.rd, ryp.d); |
| 543 |
< |
else |
| 544 |
< |
ryp.d = 0.; |
| 542 |
< |
ryp.d = hddepth(hp, rv->d) - ryp.d; |
| 543 |
> |
} |
| 544 |
> |
ryp.d = hitd - ryp.d; |
| 545 |
|
copycolr(ryp.cv, rv->v); |
| 546 |
|
if (!write_ray(&ryp, fp)) { |
| 547 |
|
free(bq); |