25 #ifndef WTHREADEDTRACKINGFUNCTION_TEST_H
26 #define WTHREADEDTRACKINGFUNCTION_TEST_H
30 #include <cxxtest/TestSuite.h>
32 #include "../../common/WLogger.h"
33 #include "../WThreadedTrackingFunction.h"
69 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
74 v[ 0 ] += 0.5 * TRACKING_EPS;
76 v[ 2 ] -= 2.0 * TRACKING_EPS;
77 v[ 1 ] += 1.6 * TRACKING_EPS;
82 v[ 0 ] -= 0.6 * TRACKING_EPS;
84 v[ 2 ] += 1.5 * TRACKING_EPS;
85 v[ 1 ] += 2.6 * TRACKING_EPS;
88 v =
WVector3d( 1.0, 0.0, 0.0 ) + y * 1.77 + z * 0.65;
91 v =
WVector3d( 1.0, 0.0, 0.0 ) + y * 1.0 + z * 0.65;
94 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 3.5 + y * 1.77 + z * 0.65;
97 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 1.5 + y * 1.77 + z * 0.65;
100 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 3.9 + y * 5.0 + z * 0.65;
103 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 2.3 + y * 7.73 + z * 3.75;
106 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 3.4 + y * 1.77 + z * 6.75;
109 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 3.5 + y * 5.0 + z * 0.65;
111 v[ 1 ] -= 0.7 * TRACKING_EPS;
113 v[ 0 ] += 3.5 * TRACKING_EPS;
114 v[ 1 ] += 0.7 * TRACKING_EPS;
117 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 1.2 + y * 7.9 + z * 5.3;
135 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
141 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 0.5;
144 v -= x * 2.0 * TRACKING_EPS;
149 dir = normalize( dir );
154 v =
WVector3d( 1.0, 0.0, 0.0 ) + x * 3.75 + y * 6.65 + z * 5.59;
172 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
178 TS_ASSERT( g->encloses( j.first ) );
184 TS_ASSERT( g->encloses( j.first ) );
186 TS_ASSERT_DELTA( length( j.first - v ), 0.0, 2.0 * TRACKING_EPS );
225 mat( 0, 0 ) = x[ 0 ];
226 mat( 1, 0 ) = x[ 1 ];
227 mat( 2, 0 ) = x[ 2 ];
228 mat( 0, 1 ) = y[ 0 ];
229 mat( 1, 1 ) = y[ 1 ];
230 mat( 2, 1 ) = y[ 2 ];
231 mat( 0, 2 ) = z[ 0 ];
232 mat( 1, 2 ) = z[ 1 ];
233 mat( 2, 2 ) = z[ 2 ];
239 data = normalize( data );
241 boost::shared_ptr< std::vector< double > > v = boost::shared_ptr< std::vector< double > >(
new std::vector< double > ( 5 * 5 * 5 * 3 ) );
242 for( std::size_t k = 0; k < 5 * 5 * 5; ++k )
244 v->at( 3 * k + 0 ) = data[ 0 ];
245 v->
at( 3 * k + 1 ) = data[ 1 ];
246 v->
at( 3 * k + 2 ) = data[ 2 ];
250 return boost::shared_ptr< WDataSetSingle >(
new WDataSetSingle( vs, g ) );
270 std::vector< int > v0;
271 std::vector< int > v1;
272 std::size_t numSeeds = 1;
273 std::size_t seedsPerPosition = 1;
276 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
284 TS_ASSERT_EQUALS( i.
m_done,
false );
285 TS_ASSERT_EQUALS( i.
m_offset, 1.0 );
286 TS_ASSERT_EQUALS( i.
m_pos[ 0 ], 1 );
287 TS_ASSERT_EQUALS( i.
m_pos[ 1 ], 1 );
288 TS_ASSERT_EQUALS( i.
m_pos[ 2 ], 1 );
289 TS_ASSERT_EQUALS( i.
m_pos[ 3 ], 0 );
290 TS_ASSERT_EQUALS( i.
m_min[ 0 ], 1 );
291 TS_ASSERT_EQUALS( i.
m_min[ 1 ], 1 );
292 TS_ASSERT_EQUALS( i.
m_min[ 2 ], 1 );
293 TS_ASSERT_EQUALS( i.
m_min[ 3 ], 0 );
294 TS_ASSERT_EQUALS( i.
m_max[ 0 ], 4 );
295 TS_ASSERT_EQUALS( i.
m_max[ 1 ], 4 );
296 TS_ASSERT_EQUALS( i.
m_max[ 2 ], 4 );
297 TS_ASSERT_EQUALS( i.
m_max[ 3 ], 1 );
309 seedsPerPosition = 3;
315 TS_ASSERT_EQUALS( i.
m_done,
false );
316 TS_ASSERT_EQUALS( i.
m_offset, 0.25 );
317 TS_ASSERT_EQUALS( i.
m_pos[ 0 ], 4 );
318 TS_ASSERT_EQUALS( i.
m_pos[ 1 ], 8 );
319 TS_ASSERT_EQUALS( i.
m_pos[ 2 ], 4 );
320 TS_ASSERT_EQUALS( i.
m_pos[ 3 ], 0 );
321 TS_ASSERT_EQUALS( i.
m_min[ 0 ], 4 );
322 TS_ASSERT_EQUALS( i.
m_min[ 1 ], 8 );
323 TS_ASSERT_EQUALS( i.
m_min[ 2 ], 4 );
324 TS_ASSERT_EQUALS( i.
m_min[ 3 ], 0 );
325 TS_ASSERT_EQUALS( i.
m_max[ 0 ], 12 );
326 TS_ASSERT_EQUALS( i.
m_max[ 1 ], 12 );
327 TS_ASSERT_EQUALS( i.
m_max[ 2 ], 16 );
328 TS_ASSERT_EQUALS( i.
m_max[ 3 ], 3 );
346 std::vector< int > v0;
347 std::vector< int > v1;
348 std::size_t numSeeds = 1;
349 std::size_t seedsPerPosition = 1;
352 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
359 for(
int j = 0; j < 27; ++j )
361 TS_ASSERT( !i.
done() );
364 TS_ASSERT( i.
done() );
371 for(
int j = 0; j < 27 * 64; ++j )
373 TS_ASSERT( !i.
done() );
376 TS_ASSERT( i.
done() );
379 seedsPerPosition = 3;
383 for(
int j = 0; j < 27 * 64 * 3; ++j )
385 TS_ASSERT( !i.
done() );
388 TS_ASSERT( i.
done() );
399 for(
int j = 0; j < 18 * 64 * 3; ++j )
401 TS_ASSERT( !i.
done() );
404 TS_ASSERT( i.
done() );
421 std::vector< int > v0;
422 std::vector< int > v1;
423 std::size_t numSeeds = 2;
424 std::size_t seedsPerPosition = 1;
427 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
435 WVector3d v = g->getOrigin() + 0.75 * x + 0.75 * y + 0.75 * z;
437 std::cout << g->getOrigin() << std::endl;
439 TS_ASSERT_DELTA( v[ 0 ], job.first[ 0 ], TRACKING_EPS );
440 TS_ASSERT_DELTA( v[ 1 ], job.first[ 1 ], TRACKING_EPS );
441 TS_ASSERT_DELTA( v[ 2 ], job.first[ 2 ], TRACKING_EPS );
446 TS_ASSERT_DELTA( v[ 0 ], job.first[ 0 ], TRACKING_EPS );
447 TS_ASSERT_DELTA( v[ 1 ], job.first[ 1 ], TRACKING_EPS );
448 TS_ASSERT_DELTA( v[ 2 ], job.first[ 2 ], TRACKING_EPS );
450 for(
int k = 0; k < 6; ++k )
456 TS_ASSERT_DELTA( v[ 0 ], job.first[ 0 ], TRACKING_EPS );
457 TS_ASSERT_DELTA( v[ 1 ], job.first[ 1 ], TRACKING_EPS );
458 TS_ASSERT_DELTA( v[ 2 ], job.first[ 2 ], TRACKING_EPS );
460 for(
int k = 0; k < 36; ++k )
466 TS_ASSERT_DELTA( v[ 0 ], job.first[ 0 ], TRACKING_EPS );
467 TS_ASSERT_DELTA( v[ 1 ], job.first[ 1 ], TRACKING_EPS );
468 TS_ASSERT_DELTA( v[ 2 ], job.first[ 2 ], TRACKING_EPS );
470 TS_ASSERT_EQUALS( job.second[ 0 ], 0.0 );
471 TS_ASSERT_EQUALS( job.second[ 1 ], 0.0 );
472 TS_ASSERT_EQUALS( job.second[ 2 ], 0.0 );
476 seedsPerPosition = 11;
481 WVector3d v = g->getOrigin() + 0.625 * x + 0.625 * y + 0.625 * z;
482 for(
int k = 0; k < 11; ++k )
485 TS_ASSERT_DELTA( v[ 0 ], job.first[ 0 ], TRACKING_EPS );
486 TS_ASSERT_DELTA( v[ 1 ], job.first[ 1 ], TRACKING_EPS );
487 TS_ASSERT_DELTA( v[ 2 ], job.first[ 2 ], TRACKING_EPS );
499 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
502 TS_ASSERT_THROWS_NOTHING(
516 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
524 for(
int i = 0; i < 125; ++i )
526 TS_ASSERT( w.
getJob( job ) );
528 TS_ASSERT( !w.
getJob( job ) );
543 boost::shared_ptr< WGridRegular3D > g = boost::shared_dynamic_cast<
WGridRegular3D >( ds->getGrid() );
590 mat( 0, 0 ) = x[ 0 ];
591 mat( 1, 0 ) = x[ 1 ];
592 mat( 2, 0 ) = x[ 2 ];
593 mat( 0, 1 ) = y[ 0 ];
594 mat( 1, 1 ) = y[ 1 ];
595 mat( 2, 1 ) = y[ 2 ];
596 mat( 0, 2 ) = z[ 0 ];
597 mat( 1, 2 ) = z[ 1 ];
598 mat( 2, 2 ) = z[ 2 ];
604 data = normalize( data );
606 boost::shared_ptr< std::vector< double > > v = boost::shared_ptr< std::vector< double > >(
new std::vector< double >( n * n * n * 3 ) );
607 for( std::size_t k = 0; k < static_cast< std::size_t >( n * n * n ); ++k )
609 v->at( 3 * k + 0 ) = data[ 0 ];
610 v->
at( 3 * k + 1 ) = data[ 1 ];
611 v->
at( 3 * k + 2 ) = data[ 2 ];
615 return boost::shared_ptr< WDataSetSingle >(
new WDataSetSingle( vs, g ) );
630 if( dot( j.second, d ) > 0.0 )
643 void fibVis( std::vector< WVector3d >
const& )
659 #endif // WTHREADEDTRACKINGFUNCTION_TEST_H