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;
184 trace.
info() <<
"p " << p <<
" => " << proj1(p) <<
" == " << res1 << std::endl;
185 nbok += ( proj1(p) == res1 ) ? 1 : 0;
189 trace.
info() <<
"p " << p <<
" => " << proj2(p) <<
" == " << res2 << std::endl;
190 nbok += ( proj2(p) == res2 ) ? 1 : 0;
194 trace.
info() <<
"p " << p <<
" => " << proj3(p) <<
" == " << res3 << std::endl;
195 nbok += ( proj3(p) == res3 ) ? 1 : 0;
199 trace.
info() <<
"p " << p <<
" => " << proj4(p) <<
" == " << res4
200 <<
"(-1 as default value)" << std::endl;
201 nbok += ( proj4(p) == res4 ) ? 1 : 0;
212 aGridSize.push_back(5);
213 aGridSize.push_back(5);
218 trace.
info()<<
"Subsampling functor on 2D domain " << domainSource <<
" with grid size "
219 << aGridSize[0] <<
" " << aGridSize[1] <<
" and shift vector "<< shiftVector <<std::endl ;
222 trace.
info() <<
"Sampling point of coordinate "<< pointTest <<
", => coordinates in source domain:"
230 aGridSize3D.push_back(5);
231 aGridSize3D.push_back(3);
232 aGridSize3D.push_back(1);
235 aGridSize3D, shiftVector3D);
236 trace.
info()<<
"Subsampling functor on 3D domain " << domainSource3D <<
" with grid size "
237 << aGridSize3D[0] <<
" " << aGridSize3D[1]<<
" " << aGridSize3D[2] <<
" and shift vector "<< shiftVector3D <<std::endl ;
242 trace.
info() <<
"Sampling point of coordinate "<< pointTest3D <<
", => coordinates in source domain:"
244 trace.
info() <<
"Sampling point of coordinate "<< pointTest3D2 <<
", => coordinates in source domain:"
251 std::vector<HyperRectDomain<SpaceND<3, int> >
::Dimension> vectFlip;
252 vectFlip.push_back(1);
253 vectFlip.push_back(2);
255 trace.
info() <<
"Flip point of coordinate "<< pointTest3D <<
", => fliped coordinates with axis 1 and 2:"
256 << flipFunctorAxis12(pointTest3D) <<
" == " <<
PointVector<3,int>(0, 9, 8) << std::endl;
263 std::vector< double > aGridSizeReSample;
264 aGridSizeReSample.push_back(0.25);
265 aGridSizeReSample.push_back(0.5);
268 aGridSizeReSample, shiftVector);
270 trace.
info()<<
"Resampling functor on 2D domain " << domainSource <<
" with grid size "
271 << aGridSizeReSample[0] <<
" " << aGridSizeReSample[1] <<
" and shift vector "<< shiftVector <<std::endl ;
274 trace.
info() <<
"Sampling point of coordinate "<< pointTestRS <<
", => coordinates in source domain:"
288 int main(
int argc,
char** argv )
292 for (
int i = 0; i < argc; ++i )
304 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...
void shiftOriginPoint(const typename Space::RealPoint &shift)
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.
DGtal::uint32_t Dimension
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