46 |
|
OBJREC *m; |
47 |
|
register RAY *r; |
48 |
|
{ |
49 |
– |
double sqrt(), pow(); |
49 |
|
COLOR mcolor; |
50 |
|
double pdot; |
51 |
|
FVECT pnorm; |
94 |
|
if (!(r->crtype & SHADOW) && |
95 |
|
DOT(r->pert,r->pert) > FTINY*FTINY) { |
96 |
|
for (i = 0; i < 3; i++) /* perturb direction */ |
97 |
< |
p.rdir[i] = r->rdir[i] - r->pert[i]/rindex; |
98 |
< |
normalize(p.rdir); |
97 |
> |
p.rdir[i] = r->rdir[i] + |
98 |
> |
2.*(1.-rindex)*r->pert[i]; |
99 |
> |
if (normalize(p.rdir) == 0.0) { |
100 |
> |
objerror(m, WARNING, "bad perturbation"); |
101 |
> |
VCOPY(p.rdir, r->rdir); |
102 |
> |
} |
103 |
|
} else { |
104 |
|
VCOPY(p.rdir, r->rdir); |
105 |
|
transtest = 2; |