33 #include "DGtal/base/Common.h"
34 #include "DGtal/helpers/StdDefs.h"
35 #include "ConfigExamples.h"
36 #include "DGtal/io/viewers/Viewer3D.h"
38 #include "DGtal/geometry/curves/parametric/Knot_3_1.h"
39 #include "DGtal/geometry/curves/parametric/NaiveParametricCurveDigitizer3D.h"
41 #ifdef WITH_VISU3D_QGLVIEWER
42 #include "DGtal/io/DrawWithDisplay3DModifier.h"
48 using namespace DGtal;
50 using namespace functors;
54 unsigned char findMainAxis (
const T & curve,
const long double & t )
57 value[0] = std::abs ( curve.xp ( t )[0] );
58 value[1] = std::abs ( curve.xp ( t )[1] );
59 value[2] = std::abs ( curve.xp ( t )[2] );
61 if ( value[0] >= value[1] && value[0] >= value[2] )
63 else if ( value[1] >= value[0] && value[1] >= value[2] )
70 int main(
int argc,
char** argv )
72 QApplication application(argc,argv);
78 trace.
info() <<
"exampleParamCurve3dDigitization" << endl;
82 MyDigitalCurve digitalCurve;
84 MyKnot knot ( 10, 10, 10 );
88 digitize.digitize( back_insert_iterator < MyDigitalCurve> ( digitalCurve ), back_insert_iterator < MyMetaData > ( metaData ) );
90 trace.
info() <<
"Number of points: " << digitalCurve.size () <<
" number of metadata: " << metaData.size () << endl;
93 for (
unsigned int i = 0; i < digitalCurve.size ( ); i++ )
95 if (
findMainAxis ( knot, metaData.at ( i ).first ) == 0 )
97 if (
findMainAxis ( knot, metaData.at ( i ).first ) == 1 )
99 if (
findMainAxis ( knot, metaData.at ( i ).first ) == 2 )
101 viewer <<
SetMode3D ( digitalCurve.at ( i ).className ( ),
"PavingWired" ) << digitalCurve.at ( i );
103 viewer << Viewer3D<>::updateDisplay;
105 return application.exec();