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 */ |