35 #include <boost/math/common_factor_rt.hpp>
36 #include "DGtal/io/Color.h"
50 template <
typename TIterator,
typename TInteger,
int connectivity>
56 std::vector<DGtal::Dimension> v1,v2,v3;
64 myProjXY.init(v1.begin(),v1.end());
65 myProjXZ.init(v2.begin(),v2.end());
66 myProjYZ.init(v3.begin(),v3.end());
73 template <
typename TIterator,
typename TInteger,
int connectivity>
78 std::vector<DGtal::Dimension> v1,v2,v3;
86 myProjXY.init(v1.begin(),v1.end());
87 myProjXZ.init(v2.begin(),v2.end());
88 myProjYZ.init(v3.begin(),v3.end());
97 template <
typename TIterator,
typename TInteger,
int connectivity>
125 template <
typename TIterator,
typename TInteger,
int connectivity>
129 myProjXY(other.myProjXY), myProjXZ(other.myProjXZ), myProjYZ(other.myProjYZ),
130 myXYalgo(other.myXYalgo), myXZalgo(other.myXZalgo), myYZalgo(other.myYZalgo),
131 myBegin(other.myBegin), myEnd(other.myEnd) {}
140 template <
typename TIterator,
typename TInteger,
int connectivity>
159 template <
typename TIterator,
typename TInteger,
int connectivity>
167 template <
typename TIterator,
typename TInteger,
int connectivity>
186 template <
typename TIterator,
typename TInteger,
int connectivity>
192 return ( ( myXYalgo == other.
myXYalgo ) &&
195 (*myBegin == *other.
myBegin) &&
196 (*myEnd == *other.
myEnd) );
205 template <
typename TIterator,
typename TInteger,
int connectivity>
211 return (!(*
this == other));
227 template <
typename TIterator,
typename TInteger,
int connectivity>
232 if( isExtendableForward() ) {
235 bool XZflag = myXZalgo.extendForward();
236 bool YZflag = myYZalgo.extendForward();
237 ASSERT( (XYflag)&&(XZflag)&&(YZflag) );
250 template <
typename TIterator,
typename TInteger,
int connectivity>
259 bool XZflag = myXZalgo.isExtendableForward();
262 bool YZflag = myYZalgo.isExtendableForward();
264 if ( (XYflag)&&(XZflag)&&(YZflag) )
272 template <
typename TIterator,
typename TInteger,
int connectivity>
279 template <
typename TIterator,
typename TInteger,
int connectivity>
295 template <
typename TIterator,
typename TInteger,
int connectivity>
300 return ( (myXYalgo.isValid())&&
301 (myXZalgo.isValid())&&
302 (myYZalgo.isValid()) );
314 template <
typename TIterator,
typename TInteger,
int connectivity>
326 if (myXYalgo.getB() != 0) {
333 direction =
Point3d(a1*a2,a2*b1,a1*c1);
335 Integer mu1 = myXYalgo.getMu();
336 Integer mu2 = myXZalgo.getMu();
341 Integer omega1 = myXYalgo.getOmega()-1;
342 Integer omega2 = myXZalgo.getOmega()-1;
349 if (myXYalgo.getA() != 0) {
356 direction =
Point3d(b1*a1,b1*b2,b2*c2);
358 Integer mu1 = myXYalgo.getMu();
359 Integer mu2 = myYZalgo.getMu();
364 Integer omega1 = myXYalgo.getOmega()-1;
365 Integer omega2 = myYZalgo.getOmega()-1;
372 if (myYZalgo.getA() != 0) {
379 direction =
Point3d(c2*a2,c1*b2,c1*c2);
381 Integer mu1 = myYZalgo.getMu();
382 Integer mu2 = myXZalgo.getMu();
387 Integer omega1 = myYZalgo.getOmega()-1;
388 Integer omega2 = myXZalgo.getOmega()-1;
405 template <
typename TIterator,
typename TInteger,
int connectivity>
410 return "ArithmeticalDSS3d";
420 template <
typename TIterator,
typename TInteger,
int connectivity>
426 out <<
"[ArithmeticalDSS3d]" << endl;
427 out <<
"[XYprojection]" << endl;
428 out << myXYalgo << endl;
429 out <<
"[XZprojection]" << endl;
430 out << myXZalgo << endl;
431 out <<
"[YZprojection]" << endl;
432 out << myYZalgo << endl;
433 out <<
"[End ArithmeticalDSS3d]" << endl;