| 31 |
|
delta[0] = p2[0] - p1[0]; |
| 32 |
|
delta[1] = p2[1] - p1[1]; |
| 33 |
|
delta[2] = p2[2] - p1[2]; |
| 34 |
+ |
|
| 35 |
|
return(DOT(delta, delta)); |
| 36 |
|
} |
| 37 |
|
|
| 45 |
|
|
| 46 |
|
d = dist2(ep1, ep2); |
| 47 |
|
d1 = dist2(ep1, p); |
| 48 |
< |
d2 = dist2(ep2, p); |
| 48 |
> |
d2 = d + d1 - dist2(ep2, p); |
| 49 |
|
|
| 50 |
< |
return(d1 - (d+d1-d2)*(d+d1-d2)/d/4); |
| 50 |
> |
return(d1 - 0.25*d2*d2/d); |
| 51 |
|
} |
| 52 |
|
|
| 53 |
|
|
| 69 |
|
if (d1 - d2 > d) |
| 70 |
|
return(d2); |
| 71 |
|
} |
| 72 |
+ |
d2 = d + d1 - d2; |
| 73 |
|
|
| 74 |
< |
return(d1 - (d+d1-d2)*(d+d1-d2)/d/4); /* distance to line */ |
| 74 |
> |
return(d1 - 0.25*d2*d2/d); /* distance to line */ |
| 75 |
|
} |
| 76 |
|
|
| 77 |
|
|
| 85 |
|
|
| 86 |
|
|
| 87 |
|
fvsum(vres, v0, v1, f) /* vres = v0 + f*v1 */ |
| 88 |
< |
FVECT vres, v0, v1; |
| 89 |
< |
double f; |
| 88 |
> |
register FVECT vres, v0, v1; |
| 89 |
> |
register double f; |
| 90 |
|
{ |
| 91 |
|
vres[0] = v0[0] + f*v1[0]; |
| 92 |
|
vres[1] = v0[1] + f*v1[1]; |
| 98 |
|
normalize(v) /* normalize a vector, return old magnitude */ |
| 99 |
|
register FVECT v; |
| 100 |
|
{ |
| 101 |
< |
register double len; |
| 101 |
> |
register double len, d; |
| 102 |
|
|
| 103 |
< |
len = DOT(v, v); |
| 103 |
> |
d = DOT(v, v); |
| 104 |
|
|
| 105 |
< |
if (len <= 0.0) |
| 105 |
> |
if (d <= 0.0) |
| 106 |
|
return(0.0); |
| 107 |
|
|
| 108 |
< |
if (len <= 1.0+FTINY && len >= 1.0-FTINY) |
| 109 |
< |
len = 0.5 + 0.5*len; /* first order approximation */ |
| 108 |
> |
if (d <= 1.0+FTINY && d >= 1.0-FTINY) |
| 109 |
> |
len = 0.5 + 0.5*d; /* first order approximation */ |
| 110 |
|
else |
| 111 |
< |
len = sqrt(len); |
| 111 |
> |
len = sqrt(d); |
| 112 |
|
|
| 113 |
< |
v[0] /= len; |
| 114 |
< |
v[1] /= len; |
| 115 |
< |
v[2] /= len; |
| 113 |
> |
v[0] *= d = 1.0/len; |
| 114 |
> |
v[1] *= d; |
| 115 |
> |
v[2] *= d; |
| 116 |
|
|
| 117 |
|
return(len); |
| 118 |
|
} |