| 106 |
|
const FVECT v2 |
| 107 |
|
) |
| 108 |
|
{ |
| 109 |
+ |
if ((vres == v1) | (vres == v2)) { |
| 110 |
+ |
FVECT vtmp; |
| 111 |
+ |
VCROSS(vtmp, v1, v2); |
| 112 |
+ |
VCOPY(vres, vtmp); |
| 113 |
+ |
return; |
| 114 |
+ |
} |
| 115 |
|
VCROSS(vres, v1, v2); |
| 116 |
|
} |
| 117 |
|
|
| 157 |
|
|
| 158 |
|
int |
| 159 |
|
getperpendicular( /* choose random perpedicular direction */ |
| 160 |
< |
FVECT vp, /* returns normalized */ |
| 161 |
< |
const FVECT v /* input vector must be normalized */ |
| 160 |
> |
FVECT vp, /* returns normalized */ |
| 161 |
> |
const FVECT v /* input vector must be normalized */ |
| 162 |
|
) |
| 163 |
|
{ |
| 164 |
|
FVECT v1; |
| 173 |
|
if (i < 0) |
| 174 |
|
return(0); |
| 175 |
|
v1[i] = 1.0; |
| 176 |
< |
VCROSS(vp, v1, v); |
| 176 |
> |
fcross(vp, v1, v); |
| 177 |
|
return(normalize(vp) > 0.0); |
| 178 |
|
} |
| 179 |
+ |
|
| 180 |
|
|
| 181 |
|
int |
| 182 |
|
closestapproach( /* closest approach of two rays */ |