10 const double TOL = 1e-6;
11 #define ASSERT_VECTORS_EQUAL( A, B ) assert_vectors_equal( ( A ), ( B ), #A, #B, __LINE__ )
12 #define ASSERT_DOUBLES_EQUAL( A, B ) CHECK_REAL_EQUAL( A, B, TOL )
13 #define ASSERT( B ) CHECK( B )
17 if( fabs( a[0] - b[0] ) >
TOL || fabs( a[1] - b[1] ) >
TOL || fabs( a[2] - b[2] ) >
TOL )
19 std::cerr <<
"Assertion failed at line " << lineno << std::endl
20 <<
"\t" << sa <<
" == " << sb << std::endl
21 <<
"\t[" << a[0] <<
", " << a[1] <<
", " << a[2] <<
"] == [" << b[0] <<
", " << b[1] <<
", " << b[2]
31 for(
int i = 0; i < 3; ++i )
32 if( norm[i] < 0.0 )
std::swap( c_lower[i], c_upper[i] );
39 double below = -( p_below % norm );
40 double lower = -( p_lower % norm );
41 double upper = -( p_upper % norm );
42 double above = -( p_above % norm );
60 norm[axis1] = max[axis1] - min[axis1];
62 norm[axis2] = min[axis2] - max[axis2];
64 norm[axis2] = max[axis2] - min[axis2];
128 return ( *func )( coords, box_center, box_dims );
181 coords[0] =
CartVect( 0.5, 0.0, 2.5 );
182 coords[1] =
CartVect( 0.5, 2.5, 0.0 );
183 coords[2] =
CartVect( -0.5, 0.0, 0.0 );
189 coords[0] =
CartVect( 0.5, 0.0, -1.5 );
190 coords[1] =
CartVect( 0.5, -1.5, 0.0 );
191 coords[2] =
CartVect( 1.5, 0.0, 0.0 );
197 coords[0] =
CartVect( 1.0, 1.0, 2.5 );
198 coords[1] =
CartVect( 2.5, 1.0, 1.0 );
199 coords[2] =
CartVect( 1.0, -0.5, 1.0 );
205 coords[0] =
CartVect( 1.0, 1.0, -0.5 );
206 coords[1] =
CartVect( -0.5, 1.0, 1.0 );
207 coords[2] =
CartVect( 1.0, 2.5, 1.0 );
213 coords[0] =
CartVect( -0.1, 1.0, 1.0 );
214 coords[1] =
CartVect( 1.0, -0.1, 1.0 );
215 coords[2] =
CartVect( 1.0, 1.0, -0.1 );
221 coords[0] =
CartVect( 2.1, 1.0, 1.0 );
222 coords[1] =
CartVect( 1.0, 2.1, 1.0 );
223 coords[2] =
CartVect( 1.0, 1.0, 2.1 );
229 coords[0] =
CartVect( 1.0, 1.0, 3.0 );
230 coords[1] =
CartVect( 1.0, 3.0, 3.0 );
231 coords[2] =
CartVect( 1.0, 3.0, 1.0 );
237 coords[0] =
CartVect( 1.0, 3.0, 1.0 );
238 coords[1] =
CartVect( 1.0, 3.0, -1.0 );
239 coords[2] =
CartVect( 1.0, 1.0, -1.0 );
245 coords[0] =
CartVect( 1.0, -1.0, 1.0 );
246 coords[1] =
CartVect( 1.0, -1.0, -1.0 );
247 coords[2] =
CartVect( 1.0, 1.0, -1.0 );
253 coords[0] =
CartVect( 1.0, -1.0, 1.0 );
254 coords[1] =
CartVect( 1.0, -1.0, 3.0 );
255 coords[2] =
CartVect( 1.0, 1.0, 3.0 );
261 coords[0] =
CartVect( 1.0, 1.0, 3.0 );
262 coords[1] =
CartVect( 3.0, 1.0, 3.0 );
263 coords[2] =
CartVect( 3.0, 1.0, 1.0 );
269 coords[0] =
CartVect( 1.0, 1.0, 3.0 );
270 coords[1] =
CartVect( -1.0, 1.0, 3.0 );
271 coords[2] =
CartVect( -1.0, 1.0, 1.0 );
277 coords[0] =
CartVect( 1.0, 1.0, -1.0 );
278 coords[1] =
CartVect( 3.0, 1.0, -1.0 );
279 coords[2] =
CartVect( 3.0, 1.0, 1.0 );
285 coords[0] =
CartVect( 1.0, 1.0, -1.0 );
286 coords[1] =
CartVect( -1.0, 1.0, -1.0 );
287 coords[2] =
CartVect( -1.0, 1.0, 1.0 );
293 coords[0] =
CartVect( 1.0, 3.0, 1.0 );
294 coords[1] =
CartVect( 3.0, 3.0, 1.0 );
295 coords[2] =
CartVect( 3.0, 1.0, 1.0 );
301 coords[0] =
CartVect( 1.0, -1.0, 1.0 );
302 coords[1] =
CartVect( 3.0, -1.0, 1.0 );
303 coords[2] =
CartVect( 3.0, 1.0, 1.0 );
309 coords[0] =
CartVect( 1.0, 3.0, 1.0 );
310 coords[1] =
CartVect( -1.0, 3.0, 1.0 );
311 coords[2] =
CartVect( -1.0, 1.0, 1.0 );
317 coords[0] =
CartVect( 1.0, -1.0, 1.0 );
318 coords[1] =
CartVect( -1.0, -1.0, 1.0 );
319 coords[2] =
CartVect( -1.0, 1.0, 1.0 );
325 coords[0] =
CartVect( 2.0, 2.0, 2.0 );
326 coords[1] =
CartVect( 5.0, 3.0, 2.0 );
327 coords[2] =
CartVect( 5.0, 1.0, 2.0 );
333 coords[0] =
CartVect( 2.0, 2.0, 2.0 );
334 coords[1] =
CartVect( -1.0, 3.0, 2.0 );
335 coords[2] =
CartVect( -1.0, 1.0, 2.0 );
341 coords[0] =
CartVect( 2.0, 2.0, 2.0 );
342 coords[1] =
CartVect( 3.0, 5.0, 2.0 );
343 coords[2] =
CartVect( 1.0, 5.0, 2.0 );
349 coords[0] =
CartVect( 2.0, 2.0, 2.0 );
350 coords[1] =
CartVect( 3.0, -1.0, 2.0 );
351 coords[2] =
CartVect( 1.0, -1.0, 2.0 );
357 coords[0] =
CartVect( 2.0, 2.0, 2.0 );
358 coords[1] =
CartVect( 2.0, 3.0, 5.0 );
359 coords[2] =
CartVect( 2.0, 1.0, 5.0 );
365 coords[0] =
CartVect( 2.0, 2.0, 2.0 );
366 coords[1] =
CartVect( 2.0, 3.0, -1.0 );
367 coords[2] =
CartVect( 2.0, 1.0, -1.0 );
378 coords[0] =
CartVect( -0.5, -0.5, -0.5 );
379 coords[1] =
CartVect( 0.5, -0.5, -0.5 );
380 coords[2] =
CartVect( 0.5, 0.5, -0.5 );
381 coords[3] =
CartVect( -0.5, 0.5, -0.5 );
382 coords[4] =
CartVect( -0.5, -0.5, 0.5 );
383 coords[5] =
CartVect( 0.5, -0.5, 0.5 );
384 coords[6] =
CartVect( 0.5, 0.5, 0.5 );
385 coords[7] =
CartVect( -0.5, 0.5, 0.5 );
448 const double r = sqrt( 2.0 ) / 2.0;
451 coords[2] =
CartVect( -r, 0, -0.5 );
452 coords[3] =
CartVect( 0, -r, -0.5 );
721 coords[0] =
CartVect( -0.13369421660900116, -2.9871494770050049, 0.0526076555252075 );
722 coords[1] =
CartVect( -0.00350524857640266, -3.3236153125762939, 0.2924639880657196 );
723 coords[2] =
CartVect( 0.16473215818405151, -2.9966945648193359, -0.1936169415712357 );
724 coords[3] =
CartVect( 0.26740345358848572, -2.8492588996887207, 0.1519143134355545 );
818 const int orientation = -1.0;
819 xsect =
plucker_ray_tri_intersect( tri,
CartVect( 0.0, 0.0, 0.0 ),
CartVect( 1.0, 1.0, 1.0 ),
t, NULL, NULL,
824 const double nonneg_ray_len = 0.25;
829 const double neg_ray_len = -2.0;
836 xsect =
plucker_ray_tri_intersect( tri,
CartVect( 0.0, 0.0, 0.0 ),
CartVect( 1.0, 0.0, 0.0 ),
t, NULL, NULL, NULL,
842 xsect =
plucker_ray_tri_intersect( tri,
CartVect( 0.0, 0.0, 0.0 ),
CartVect( 1.0, 1.0, 0.0 ),
t, NULL, NULL, NULL,
856 input =
CartVect( 1.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0 );
869 input = 0.5 * ( tri[0] + tri[1] );
872 input = 0.5 * ( tri[0] + tri[2] );
875 input = 0.5 * ( tri[2] + tri[1] );
901 input = tri[0] + tri[1];
904 input = tri[2] + tri[1];
907 input = tri[0] + tri[2];
977 input = 0.5 * quad[0] + 0.5 * quad[1];
980 input = 0.2 * quad[1] + 0.8 * quad[2];
983 input = 0.7 * quad[2] + 0.3 * quad[3];
986 input = 0.6 * quad[3] + 0.4 * quad[0];
1001 CartVect x( 1.0, 0.0, 0.0 ), y( 0.0, 1.0, 0.0 );
1002 input = 0.5 * quad[0] + 0.5 * quad[1];
1005 input = 0.2 * quad[1] + 0.8 * quad[2];
1008 input = 0.7 * quad[2] + 0.3 * quad[3];
1011 input = 0.6 * quad[3] + 0.4 * quad[0];
1024 const CartVect X( 1, 0, 0 ), Y( 0, 1, 0 ),
Z( 0, 0, 1 );
1047 end = box_mid + offset;
1054 start = box_mid + offset;
1062 start = offset + offset +
box_max;
1084 start = -box_mid - offset;
1093 end = -box_mid - offset;
1101 end = -
box_max - offset - offset;
1173 CartVect dir( 1.0 / sqrt( 2.0 ), 1.0 / sqrt( 2.0 ), 0 );
1175 end = 1.5 / sqrt( 2.0 ) * box_wid;
1184 end = 3.0 / sqrt( 2.0 ) * box_wid;
1193 end = 3.0 / sqrt( 2.0 ) * box_wid;
1200 const CartVect min( 0, 0, 0 ), max( 1, 2, 3 );