DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
testEmbedder.cpp
1 
30 
31 #include <iostream>
32 #include "DGtal/base/Common.h"
33 #include "DGtal/helpers/StdDefs.h"
34 #include "DGtal/kernel/CPointEmbedder.h"
35 #include "DGtal/kernel/CWithGradientMap.h"
36 #include "DGtal/kernel/CanonicEmbedder.h"
37 #include "DGtal/kernel/CanonicCellEmbedder.h"
38 #include "DGtal/kernel/CanonicSCellEmbedder.h"
39 #include "DGtal/kernel/CanonicDigitalSurfaceEmbedder.h"
40 #include "DGtal/kernel/RegularPointEmbedder.h"
41 #include "DGtal/topology/CCellEmbedder.h"
42 #include "DGtal/topology/CSCellEmbedder.h"
43 #include "DGtal/topology/CDigitalSurfaceEmbedder.h"
44 #include "DGtal/topology/DigitalSetBoundary.h"
45 #include "DGtal/topology/DigitalSurface.h"
46 #include "DGtal/shapes/implicit/ImplicitPolynomial3Shape.h"
47 #include "DGtal/shapes/implicit/ImplicitFunctionLinearCellEmbedder.h"
48 #include "DGtal/shapes/implicit/ImplicitFunctionDiff1LinearCellEmbedder.h"
49 #include "DGtal/geometry/surfaces/estimation/BasicConvolutionWeights.h"
50 #include "DGtal/geometry/surfaces/estimation/LocalConvolutionNormalVectorEstimator.h"
51 #include "DGtal/geometry/surfaces/estimation/DigitalSurfaceEmbedderWithNormalVectorEstimator.h"
53 
54 using namespace std;
55 using namespace DGtal;
56 
58 // Functions for testing class Embedder.
60 
64 bool testEmbedder()
65 {
66  unsigned int nbok = 0;
67  unsigned int nb = 0;
68 
69  using Z3i::Point;
70  using Z3i::Vector;
71  using Z3i::Domain;
72  using Z3i::Space;
73  using Z3i::KSpace;
74  using Z3i::DigitalSet;
75 
76  typedef CanonicEmbedder<Space> MyEmbedder1;
77  BOOST_CONCEPT_ASSERT(( CPointEmbedder< MyEmbedder1 > ));
78  typedef RegularPointEmbedder<Space> MyEmbedder2;
79  BOOST_CONCEPT_ASSERT(( CPointEmbedder< MyEmbedder2 > ));
82  < KSpace, ImplicitShape, MyEmbedder1 > MyCellEmbedder1;
83  BOOST_CONCEPT_ASSERT(( CCellEmbedder< MyCellEmbedder1 > ));
85  < KSpace, ImplicitShape, MyEmbedder2 > MyCellEmbedder2;
86  BOOST_CONCEPT_ASSERT(( CCellEmbedder< MyCellEmbedder2 > ));
87  BOOST_CONCEPT_ASSERT(( CWithGradientMap< MyCellEmbedder2 > ));
88  typedef CanonicCellEmbedder<KSpace> MyCellEmbedder3;
89  BOOST_CONCEPT_ASSERT(( CCellEmbedder< MyCellEmbedder3 > ));
90  typedef CanonicSCellEmbedder<KSpace> MySCellEmbedder1;
91  BOOST_CONCEPT_ASSERT(( CSCellEmbedder< MySCellEmbedder1 > ));
92  typedef DigitalSetBoundary<KSpace, DigitalSet> DigitalSurfaceContainer;
95  BOOST_CONCEPT_ASSERT(( CDigitalSurfaceEmbedder< MyDSEmbedder1 > ));
98  < MyDigitalSurface, Kernel > MyEstimator;
100  < MyDSEmbedder1, MyEstimator > MyDSEmbedder2;
101  BOOST_CONCEPT_ASSERT(( CDigitalSurfaceEmbedder< MyDSEmbedder2 > ));
102  BOOST_CONCEPT_ASSERT(( CWithGradientMap< MyDSEmbedder2 > ));
103 
104  trace.beginBlock ( "Testing block ..." );
105  KSpace K;
106  MyCellEmbedder3 cemb3( K );
107  MySCellEmbedder1 scemb1( K );
108  Domain domain( Point( 0, 0, 0 ), Point( 10, 10, 10 ) );
109  K.init( Point( 0, 0, 0 ), Point( 10, 10, 10 ), true );
110  DigitalSet dset( domain );
111  //dset.insert( Point( 3,3,2) );
112  DigitalSurfaceContainer dsc( K, dset );
113  MyDigitalSurface ds( dsc );
114  MyDSEmbedder1 dsemb1( ds );
115  nbok += true ? 1 : 0;
116  nb++;
117  trace.info() << "(" << nbok << "/" << nb << ") "
118  << "true == true" << std::endl;
119  trace.endBlock();
120 
121  return nbok == nb;
122 }
123 
125 // Standard services - public :
126 
127 int main( int argc, char** argv )
128 {
129  trace.beginBlock ( "Testing class Embedder" );
130  trace.info() << "Args:";
131  for ( int i = 0; i < argc; ++i )
132  trace.info() << " " << argv[ i ];
133  trace.info() << endl;
134 
135  bool res = testEmbedder(); // && ... other tests
136  trace.emphase() << ( res ? "Passed." : "Error." ) << endl;
137  trace.endBlock();
138  return res ? 0 : 1;
139 }
140 // //