36 #include "DGtal/base/Common.h"
37 #include "DGtal/base/CUnaryFunctor.h"
38 #include "DGtal/kernel/PointVector.h"
39 #include "DGtal/kernel/SpaceND.h"
40 #include "DGtal/kernel/BasicPointFunctors.h"
41 #include "DGtal/kernel/domains/HyperRectDomain.h"
43 using namespace DGtal;
46 template <
typename TFunctor,
typename TArg,
typename TRes >
54 unsigned int nbok = 0;
64 std::vector<Dimension> v1, v2;
65 v1.push_back(0); v1.push_back(2);
66 v2.push_back(2); v2.push_back(1);
67 Projector2D proj1, proj2, proj3;
68 proj1.
init(v1.begin(), v1.end());
69 proj2.init(v2.begin(), v2.end());
73 trace.
info() <<
"p " << p <<
" => " << proj1(p) <<
" == " << res1 << std::endl;
74 nbok += ( proj1(p) == res1 ) ? 1 : 0;
78 trace.
info() <<
"p " << p <<
" => " << proj2(p) <<
" == " << res2 << std::endl;
79 nbok += ( proj2(p) == res2 ) ? 1 : 0;
83 trace.
info() <<
"p " << p <<
" => " << proj3(p) <<
" == " << res3 << std::endl;
84 nbok += ( proj3(p) == res3 ) ? 1 : 0;
96 std::vector<Dimension> v1, v2, v4;
97 v1.push_back(0); v1.push_back(2); v1.push_back(1);
98 v2.push_back(1); v2.push_back(0);
100 Projector3D proj1, proj2, proj3;
101 proj1.
init(v1.begin(), v1.end());
102 proj2.init(v2.begin(), v2.end());
103 Projector3D proj4(-1);
104 proj4.init(v4.begin(), v4.end());
118 trace.
info() <<
"pt " << pt <<
" => " << sliceRot(pt) <<
" == " << ptR << std::endl;
119 nbok += ( sliceRot(pt) == ptR ) ? 1 : 0;
122 trace.
info() <<
"pt " << pt_2 <<
" => " << sliceRot2(pt_2) <<
" == " << ptR2 << std::endl;
123 nbok += ( sliceRot2(pt_2) == ptR2 ) ? 1 : 0;
162 trace.
info() <<
"p " << p <<
" => " << proj1(p) <<
" == " << res1 << std::endl;
163 nbok += ( proj1(p) == res1 ) ? 1 : 0;
167 trace.
info() <<
"p " << p <<
" => " << proj2(p) <<
" == " << res2 << std::endl;
168 nbok += ( proj2(p) == res2 ) ? 1 : 0;
172 trace.
info() <<
"p " << p <<
" => " << proj3(p) <<
" == " << res3 << std::endl;
173 nbok += ( proj3(p) == res3 ) ? 1 : 0;
177 trace.
info() <<
"p " << p <<
" => " << proj4(p) <<
" == " << res4
178 <<
"(-1 as default value)" << std::endl;
179 nbok += ( proj4(p) == res4 ) ? 1 : 0;
190 aGridSize.push_back(5);
191 aGridSize.push_back(5);
194 aGridSize, shiftVector);
195 trace.
info()<<
"Subsampling functor on 2D domain " << domainSource <<
" with grid size "
196 << aGridSize[0] <<
" " << aGridSize[1] <<
" and shift vector "<< shiftVector <<std::endl ;
199 trace.
info() <<
"Sampling point of coordinate "<< pointTest <<
", => coordinates in source domain:"
207 aGridSize3D.push_back(5);
208 aGridSize3D.push_back(3);
209 aGridSize3D.push_back(1);
212 aGridSize3D, shiftVector3D);
213 trace.
info()<<
"Subsampling functor on 3D domain " << domainSource3D <<
" with grid size "
214 << aGridSize3D[0] <<
" " << aGridSize3D[1]<<
" " << aGridSize3D[2] <<
" and shift vector "<< shiftVector3D <<std::endl ;
219 trace.
info() <<
"Sampling point of coordinate "<< pointTest3D <<
", => coordinates in source domain:"
221 trace.
info() <<
"Sampling point of coordinate "<< pointTest3D2 <<
", => coordinates in source domain:"
228 std::vector<unsigned int> vectFlip;
229 vectFlip.push_back(1);
230 vectFlip.push_back(2);
232 trace.
info() <<
"Flip point of coordinate "<< pointTest3D <<
", => fliped coordinates with axis 1 and 2:"
233 << flipFunctorAxis12(pointTest3D) <<
" == " <<
PointVector<3,int>(0, 9, 8) << std::endl;
240 std::vector< double > aGridSizeReSample;
241 aGridSizeReSample.push_back(0.25);
242 aGridSizeReSample.push_back(0.5);
245 aGridSizeReSample, shiftVector);
247 trace.
info()<<
"Resampling functor on 2D domain " << domainSource <<
" with grid size "
248 << aGridSizeReSample[0] <<
" " << aGridSizeReSample[1] <<
" and shift vector "<< shiftVector <<std::endl ;
251 trace.
info() <<
"Sampling point of coordinate "<< pointTestRS <<
", => coordinates in source domain:"
265 int main(
int argc,
char** argv )
269 for (
int i = 0; i < argc; ++i )
281 trace.
emphase() << ( res ?
"Passed." :
"Error." ) << endl;
Aim: Parallelepidec region of a digital space, model of a 'CDomain'.
Aim: Implements basic operations that will be used in Point and Vector classes.
void beginBlock(const std::string &keyword="")
Aim: Functor that subsamples an initial domain by given a grid size and a shift vector....
Aim: Functor that flips the domain coordinate system from some selected axis. For instance,...
Aim: Functor that embeds a 2D point into a 3D space from two axis vectors and an origin point given i...
Special Point Functor that adds one dimension to a 2D point and apply on it a rotation of angle alpha...
DGtal is the top-level namespace which contains all DGtal functions and types.
boost::int32_t int32_t
signed 32-bit integer.
Aim: Defines a unary functor, which associates arguments to results.
Aim: Functor that maps a point P of dimension i to a point Q of dimension j. The member myDims is an ...
void init(const TIterator &itb, const TIterator &ite)
int main(int argc, char **argv)
HalfEdgeDataStructure::Size Size