39 template <
typename TV >
51 itend= aAccumulator.
end(); it != itend; ++it)
56 if (aAccumulator.
count(i,j) > M) M=aAccumulator.
count(i,j);
57 if (aAccumulator.
count(i,j) < m) m=aAccumulator.
count(i,j);
60 trace.
error()<<
" min= "<<m <<
" Max="<<M<<std::endl;
64 itend= aAccumulator.
end(); it != itend; ++it)
79 display.
addQuad(a[0], a[1], a[2],
83 cmap(aAccumulator.
count(i,j)));
92 template <
typename TPo
int>
98 if ( mode ==
"Faces" || mode==
"")
99 drawAsFaces( display, aMesh );
102 template <
typename TPo
int>
107 for(
unsigned int i=0; i< aMesh.
nbFaces(); i++){
109 unsigned int aNum = aFace.size();
111 TPoint p1 = aMesh.
getVertex(aFace.at(0));
112 TPoint p2 = aMesh.
getVertex(aFace.at(1));
113 TPoint p3 = aMesh.
getVertex(aFace.at(2));
114 TPoint p4 = aMesh.
getVertex(aFace.at(3));
116 display.
addQuad(p1[0], p1[1], p1[2],
121 TPoint p1 = aMesh.
getVertex(aFace.at(0));
122 TPoint p2 = aMesh.
getVertex(aFace.at(1));
123 TPoint p3 = aMesh.
getVertex(aFace.at(2));
128 vector<Display3D::pointD3D> vectPoly;
129 for(
unsigned int j=0; j< aFace.size(); j++){
134 vectPoly.push_back(pt);
138 trace.
warning()<<
"Face not valid, only "<< aNum <<
"vertex... "<< endl;
153 template <
typename TIterator,
typename TInteger,
int connectivity>
158 typedef TIterator ConstIterator;
163 for (ConstIterator i = a.
begin(); i != a.
end(); ++i)
169 if(display.
getMode(
"PointVector")==
"Grid")
171 ConstIterator k = a.
begin();
177 for ( ; k != a.
end(); ++k) {
182 display.
addLine(xprevp,yprevp,zprevp,
192 template <
typename TIterator,
typename TInteger,
int connectivity>
198 typedef TIterator ConstIterator;
206 typedef TInteger Integer;
219 double n = u[0]*u[0] + u[1]*u[1] + u[2]*u[2];
222 Point3d first = *a.
begin();
223 Point3d last = *(--a.
end());
235 double df = -u[0]*f[0] -u[1]*f[1] -u[2]*f[2];
236 double dl = -u[0]*l[0] -u[1]*l[1] -u[2]*l[2];
239 PointD3d omega1, omega2;
241 omega1 = PointD3d(0,omega[1],0);
242 omega2 = PointD3d(0,0,omega[2]);
245 omega1 = PointD3d(omega[0],0,0);
246 omega2 = PointD3d(0,0,omega[2]);
248 omega1 = PointD3d(omega[0],0,0);
249 omega2 = PointD3d(0,omega[1],0);
253 double m1 = u[0]*mu[0] + u[1]*mu[1] + u[2]*mu[2];
254 double m2 = u[0]*(mu[0]+omega1[0]) + u[1]*(mu[1]+omega1[1]) + u[2]*(mu[2]+omega1[2]);
255 double m3 = u[0]*(mu[0]+omega2[0]) + u[1]*(mu[1]+omega2[1]) + u[2]*(mu[2]+omega2[2]);
256 double m4 = u[0]*(mu[0]+omega[0]) + u[1]*(mu[1]+omega[1]) + u[2]*(mu[2]+omega[2]);
259 PointD3d pf = PointD3d( mu[0] - ( (m1+df)*u[0] )/n,
260 mu[1] - ( (m1+df)*u[1] )/n,
261 mu[2] - ( (m1+df)*u[2] )/n );
263 PointD3d pl = PointD3d( mu[0] - ( (m1+dl)*u[0] )/n,
264 mu[1] - ( (m1+dl)*u[1] )/n,
265 mu[2] - ( (m1+dl)*u[2] )/n );
267 display.
addLine(pf[0], pf[1], pf[2], pl[0], pl[1], pl[2],
270 PointD3d pf2 = PointD3d((mu[0]+omega1[0]) - ( (m2+df)*u[0] )/n,
271 (mu[1]+omega1[1]) - ( (m2+df)*u[1] )/n,
272 (mu[2]+omega1[2]) - ( (m2+df)*u[2] )/n );
275 PointD3d pl2 = PointD3d((mu[0]+omega1[0]) - ( (m2+dl)*u[0] )/n,
276 (mu[1]+omega1[1]) - ( (m2+dl)*u[1] )/n,
277 (mu[2]+omega1[2]) - ( (m2+dl)*u[2] )/n );
279 display.
addLine(pf2[0], pf2[1], pf2[2], pl2[0], pl2[1], pl2[2],
282 PointD3d pf3 = PointD3d((mu[0]+omega2[0]) - ( (m3+df)*u[0] )/n,
283 (mu[1]+omega2[1]) - ( (m3+df)*u[1] )/n,
284 (mu[2]+omega2[2]) - ( (m3+df)*u[2] )/n );
286 PointD3d pl3 = PointD3d((mu[0]+omega2[0]) - ( (m3+dl)*u[0] )/n,
287 (mu[1]+omega2[1]) - ( (m3+dl)*u[1] )/n,
288 (mu[2]+omega2[2]) - ( (m3+dl)*u[2] )/n );
290 display.
addLine(pf3[0], pf3[1], pf3[2], pl3[0], pl3[1], pl3[2],
293 PointD3d pf4 = PointD3d((mu[0]+omega[0]) - ( (m4+df)*u[0] )/n,
294 (mu[1]+omega[1]) - ( (m4+df)*u[1] )/n,
295 (mu[2]+omega[2]) - ( (m4+df)*u[2] )/n );
297 PointD3d pl4 = PointD3d((mu[0]+omega[0]) - ( (m4+dl)*u[0] )/n,
298 (mu[1]+omega[1]) - ( (m4+dl)*u[1] )/n,
299 (mu[2]+omega[2]) - ( (m4+dl)*u[2] )/n );
301 display.
addLine(pf4[0], pf4[1], pf4[2], pl4[0], pl4[1], pl4[2],
305 display.
addQuad(pf[0],pf[1],pf[2],
306 pf2[0],pf2[1],pf2[2],
307 pf4[0],pf4[1],pf4[2],
308 pf3[0],pf3[1],pf3[2],
310 display.
addQuad(pl[0],pl[1],pl[2],
311 pl2[0],pl2[1],pl2[2],
312 pl4[0],pl4[1],pl4[2],
313 pl3[0],pl3[1],pl3[2],
319 template <
typename TIterator,
typename TInteger,
int connectivity>
325 if ( mode ==
"BoundingBox" )
326 drawAsBoundingBox( display, a );
327 else if ( mode ==
"Points" )
328 drawAsPoints( display, a );
329 else if ( ( mode ==
"" ) )
331 drawAsPoints( display, a );
338 template<
typename Domain>
343 typedef typename Domain::Point
Point;
344 typedef typename Domain::Point::Component Component;
345 typedef typename std::set<Point>::const_iterator ConstIterator;
347 ASSERT(Domain::Space::dimension == 3);
350 for ( ConstIterator it = s.
begin();
361 template<
typename Domain>
366 typedef typename Domain::Point
Point;
367 typedef typename Domain::Point::Component Component;
368 typedef typename std::set<Point>::const_iterator ConstIterator;
370 ASSERT(Domain::Space::dimension == 3);
373 for ( ConstIterator it = s.
begin();
383 template<
typename Domain>
388 typedef typename Domain::Point
Point;
389 typedef typename Domain::Point::Component Component;
390 typedef typename std::set<Point>::const_iterator ConstIterator;
392 ASSERT(Domain::Space::dimension == 3);
394 for ( ConstIterator it = s.
begin();
405 template<
typename Domain>
410 ASSERT(Domain::Space::dimension == 3);
413 ASSERT( (mode==
"Paving" || mode==
"PavingTransp" || mode==
"Grid" || mode==
"Both" || mode==
"") );
415 if ( mode ==
"Paving" || ( mode ==
"" ) )
416 drawAsPaving( display, s );
417 else if ( mode ==
"PavingTransp" )
418 drawAsPavingTransparent( display, s );
419 else if ( mode ==
"Grid" )
420 drawAsGrid( display, s );
421 else if ( ( mode ==
"Both" ) )
423 drawAsPaving( display, s );
424 drawAsGrid( display, s );
431 template<
typename Domain>
436 typedef typename Domain::Point
Point;
437 typedef typename Domain::Point::Component Component;
438 typedef typename std::vector<Point>::const_iterator ConstIterator;
440 ASSERT(Domain::Space::dimension == 3);
443 for ( ConstIterator it = v.
begin();
453 template<
typename Domain>
458 typedef typename Domain::Point
Point;
459 typedef typename Domain::Point::Component Component;
460 typedef typename std::vector<Point>::const_iterator ConstIterator;
462 ASSERT(Domain::Space::dimension == 3);
465 for ( ConstIterator it = v.
begin();
475 template<
typename Domain>
480 typedef typename Domain::Point
Point;
481 typedef typename std::vector<Point>::const_iterator ConstIterator;
482 typedef typename Domain::Point::Component Component;
484 ASSERT(Domain::Space::dimension == 3);
486 for ( ConstIterator it = v.
begin();
496 template<
typename Domain>
501 ASSERT(Domain::Space::dimension == 3);
504 ASSERT( (mode==
"Paving" || mode==
"PavingTransp" || mode==
"Grid" || mode==
"Both" || mode==
"") );
506 if ( mode ==
"Paving" || ( mode ==
"" ) )
507 drawAsPaving( display, v );
508 else if ( mode ==
"PavingTransp" )
509 drawAsPavingTransparent( display, v );
510 else if ( mode ==
"Grid" )
511 drawAsGrid( display, v );
512 else if ( ( mode ==
"Both" ) )
514 drawAsPaving( display, v);
515 drawAsGrid( display, v );
522 template<
typename TSpace>
527 ASSERT(TSpace::dimension == 3 ||
"drawAsBoundingBox-NOT-YET-IMPLEMENTED-in-ND");
529 typename TSpace::RealPoint upperBound ( h.
myUpperBound);
530 typename TSpace::RealPoint lowerBound ( h.
myLowerBound);
533 double shiftSize=0.01;
534 if (TSpace::dimension == 3)
537 display.
addQuad(upperBound[0]+(0.5+shiftSize),
538 upperBound[1]+(0.5+shiftSize),
539 upperBound[2]+(0.5+shiftSize),
540 lowerBound[0]-(0.5+shiftSize),
541 upperBound[1]+(0.5+shiftSize),
542 upperBound[2]+(0.5+shiftSize),
543 lowerBound[0]-(0.5+shiftSize),
544 lowerBound[1]-(0.5+shiftSize),
545 upperBound[2]+(0.5+shiftSize),
546 upperBound[0]+(0.5+shiftSize),
547 lowerBound[1]-(0.5+shiftSize),
548 upperBound[2]+(0.5+shiftSize),
551 display.
addQuad(upperBound[0]+(0.5+shiftSize),
552 upperBound[1]+(0.5+shiftSize),
553 lowerBound[2]-(0.5+shiftSize),
554 upperBound[0]+(0.5+shiftSize),
555 lowerBound[1]-(0.5+shiftSize),
556 lowerBound[2]-(0.5+shiftSize),
557 lowerBound[0]-(0.5+shiftSize),
558 lowerBound[1]-(0.5+shiftSize),
559 lowerBound[2]-(0.5+shiftSize),
560 lowerBound[0]-(0.5+shiftSize),
561 upperBound[1]+(0.5+shiftSize),
562 lowerBound[2]-(0.5+shiftSize),
566 display.
addQuad(upperBound[0]+(0.5+shiftSize),
567 upperBound[1]+(0.5+shiftSize),
568 upperBound[2]+(0.5+shiftSize),
569 upperBound[0]+(0.5+shiftSize),
570 upperBound[1]+(0.5+shiftSize),
571 lowerBound[2]-(0.5+shiftSize),
572 lowerBound[0]-(0.5+shiftSize),
573 upperBound[1]+(0.5+shiftSize),
574 lowerBound[2]-(0.5+shiftSize),
575 lowerBound[0]-(0.5+shiftSize),
576 upperBound[1]+(0.5+shiftSize),
577 upperBound[2]+(0.5+shiftSize),
580 display.
addQuad(upperBound[0]+(0.5+shiftSize),
581 lowerBound[1]-(0.5+shiftSize),
582 upperBound[2]+(0.5+shiftSize),
583 lowerBound[0]-(0.5+shiftSize),
584 lowerBound[1]-(0.5+shiftSize),
585 upperBound[2]+(0.5+shiftSize),
586 lowerBound[0]-(0.5+shiftSize),
587 lowerBound[1]-(0.5+shiftSize),
588 lowerBound[2]-(0.5+shiftSize),
589 upperBound[0]+(0.5+shiftSize),
590 lowerBound[1]-(0.5+shiftSize),
591 lowerBound[2]-(0.5+shiftSize),
595 display.
addQuad(upperBound[0]+(0.5+shiftSize),
596 upperBound[1]+(0.5+shiftSize),
597 upperBound[2]+(0.5+shiftSize),
598 upperBound[0]+(0.5+shiftSize),
599 lowerBound[1]-(0.5+shiftSize),
600 upperBound[2]+(0.5+shiftSize),
601 upperBound[0]+(0.5+shiftSize),
602 lowerBound[1]-(0.5+shiftSize),
603 lowerBound[2]-(0.5+shiftSize),
604 upperBound[0]+(0.5+shiftSize),
605 upperBound[1]+(0.5+shiftSize),
606 lowerBound[2]-(0.5+shiftSize),
610 display.
addQuad(lowerBound[0]-(0.5+shiftSize),
611 upperBound[1]+(0.5+shiftSize),
612 upperBound[2]+(0.5+shiftSize),
613 lowerBound[0]-(0.5+shiftSize),
614 upperBound[1]+(0.5+shiftSize),
615 lowerBound[2]-(0.5+shiftSize),
616 lowerBound[0]-(0.5+shiftSize),
617 lowerBound[1]-(0.5+shiftSize),
618 lowerBound[2]-(0.5+shiftSize),
619 lowerBound[0]-(0.5+shiftSize),
620 lowerBound[1]-(0.5+shiftSize),
621 upperBound[2]+(0.5+shiftSize),
626 template<
typename TSpace>
631 typedef typename TSpace::Integer Integer;
636 ASSERT(TSpace::dimension == 3 ||
"drawAsGrid-NOT-YET-IMPLEMENTED-in-ND");
638 if (TSpace::dimension == 3)
650 y <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[1]); y++){
658 y <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[1]); y++){
660 x <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[0]); x++){
665 z <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[2]); z++){
673 x <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[0]); x++){
676 y <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[1]); y++){
681 z <= NumberTraits<Integer>::castToInt64_t(h.
myUpperBound[2]); z++){
689 template<
typename TSpace>
694 typedef typename TSpace::Integer Integer;
696 ASSERT(TSpace::dimension == 3 ||
"drawAsPavingPoints-NOT-YET-IMPLEMENTED-in-ND");
698 if (TSpace::dimension == 3)
716 template<
typename TSpace>
721 typedef typename TSpace::Integer Integer;
723 ASSERT(TSpace::dimension == 3 ||
"drawAsPaving-NOT-YET-IMPLEMENTED-in-ND");
725 if (TSpace::dimension == 3)
743 template<
typename TSpace>
749 ASSERT((mode==
"" || mode==
"Grid" || mode==
"Paving"|| mode==
"PavingPoints"|| mode==
"PavingGrids" ||
750 mode==
"BoundingBox")||
751 (
"DGtal::Display3DFactory::draw( Display3D & display, const DGtal::HyperRectDomain<TSpace> & h ): Unknown mode "+mode)==
"");
753 if ( mode ==
"BoundingBox" ){
755 drawAsBoundingBox( display, h );
756 }
else if( ( mode ==
"" ) || (mode ==
"Grid")){
758 drawAsGrid( display, h );
760 else if ( mode ==
"Paving" ){
762 drawAsPaving( display, h );
764 }
else if ( mode ==
"PavingPoints" ){
766 drawAsPavingPoints( display, h );
768 }
else if ( mode ==
"PavingGrids" ){
771 drawAsGrid( display, h );
772 drawAsPaving( display, h );
779 template < Dimension dim,
typename TInteger >
787 ASSERT((mode==
"" || mode==
"Highlighted" || mode==
"Transparent"|| mode==
"Basic"|| mode==
"Illustration"||mode==
"IllustrationCustomColor")||
788 (
"DGtal::Display3DFactory::draw( Display3D & display, const DGtal::KhalimskyCell<dim, TInteger> & k ): Unknown mode "+mode)==
"");
790 double factorVolSurfel=1.0;
791 bool basicMode=
false;
792 if(mode==
"Highlighted"){
793 factorVolSurfel = 1.1;
795 }
else if(mode==
"Transparent"){
797 }
else if(mode==
"Basic"){
809 unsigned int spaceDim= (xodd ? 1:0) + (yodd ? 1:0) + (zodd ? 1:0);
814 if(mode!=
""&& mode!=
"IllustrationCustomColor"){
817 display.
addKSPointel(x-0.5, y-0.5, z-0.5, 0.05,
false,
false);
820 if(mode!=
""&& mode!=
"IllustrationCustomColor"){
823 display.
addKSLinel(x-0.5, y-0.5, z-0.5, x+ (xodd? 0.5:-0.5 ),y+ (yodd? 0.5:-0.5 ), z+ (zodd? 0.5:-0.5 ));
826 if(mode!=
"" && mode!=
"IllustrationCustomColor"){
829 display.
addKSSurfel(x, y, z,! xodd, !yodd, !zodd, factorVolSurfel, 0.0,1.0,
false,
false, basicMode);
832 if(mode!=
"" && mode!=
"IllustrationCustomColor"){
835 if(mode==
"Illustration"|| mode==
"IllustrationCustomColor"){
836 display.
addKSVoxel((
int)x, (
int) y, (
int) z, 0.7);
848 template< Dimension dim,
typename TInteger >
857 ASSERT((mode==
"" || mode==
"Highlighted" || mode==
"Transparent" || mode==
"Basic" || mode==
"Illustration" || mode==
"IllustrationCustomColor")||
858 (
"DGtal::Display3DFactory::draw( Display3D & display, const DGtal::SignedKhalimskyCell<dim, TInteger> & sk ): Unknown mode "+mode)==
"");
860 double factorVolSurfel=1.0;
861 bool basicMode=
false;
862 if(mode==
"Highlighted"){
863 factorVolSurfel = 1.2;
865 }
else if(mode==
"Transparent"){
867 }
else if(mode==
"Basic"){
882 unsigned int spaceDim= (xodd ? 1:0) + (yodd ? 1:0) + (zodd ? 1:0);
887 if(mode!=
"" && mode!=
"IllustrationCustomColor"){
896 if(mode!=
"" && mode!=
"IllustrationCustomColor"){
899 display.
addKSLinel(x-0.5, y-0.5, z-0.5, x+ (xodd? 0.5:-0.5 ),y+ (yodd? 0.5:-0.5 ), z+ (zodd? 0.5:-0.5 ),
903 display.
addKSSurfel(x, y, z,! xodd, !yodd, !zodd, factorVolSurfel, 0.0,1.0,
true, sk.
myPositive,basicMode );
906 if(mode!=
"" && mode!=
"IllustrationCustomColor"){
913 if(mode==
"Illustration"|| mode==
"IllustrationCustomColor"){
914 display.
addKSVoxel((
int)x, (
int) y, (
int) z, 0.7);
927 template <
typename TDigitalTopology,
typename TDigitalSet>
932 typedef typename TDigitalSet::Point
Point;
934 typedef typename TDigitalSet::Domain Domain;
941 for (
typename TDigitalSet::ConstIterator it = o.
pointSet().begin();
947 for (
typename SmallObject::DigitalSet::ConstIterator it2 = neig.pointSet().begin();
948 it2 != neig.pointSet().end();
952 draw(display, p, (*it));
957 template <
typename TDigitalTopology,
typename TDigitalSet>
963 if ( mode ==
"Basic" || mode ==
"" )
965 else if ( mode ==
"PavingTransp" ){
966 drawAsPavingTransparent( display, o.
pointSet() );
969 else if ( mode ==
"DrawAdjacencies" )
972 drawWithAdjacencies( display, o );
975 ASSERT(
false && ((
"DGtal::Display3DFactory::draw( Display3D & display, const DGtal::Object<TDigitalTopology, TDigitalSet> & o ): Unknown mode " + mode) ==
""));
981 template<Dimension dim,
typename TComponent>
993 template<Dimension dim,
typename TComponent>
1005 template<Dimension dim,
typename TComponent>
1017 template<Dimension dim,
typename TComponent>
1025 ASSERT( (mode==
"Paving" || mode==
"Grid" || mode==
"Both" || mode==
"PavingWired"|| mode==
"") );
1027 if ( mode ==
"Paving" || ( mode ==
"" ) )
1028 drawAsPaving( display, p );
1029 else if ( mode ==
"Grid" )
1030 drawAsGrid( display, p );
1031 else if ( ( mode ==
"Both" ) )
1033 drawAsPaving( display, p );
1034 drawAsGrid( display, p );
1036 else if( mode==
"PavingWired"){
1037 drawAsPavingWired( display, p );
1041 template<Dimension dim,
typename TComponent>
1061 template<
typename TKSpace >
1068 for (
typename Range::ConstIterator it = r.
begin(), itEnd = r.
end();
1071 draw( display, *it );
1077 template <
typename TIterator,
typename TSCell>
1083 typedef typename Range::ConstIterator ConstIterator;
1085 ConstIterator it (
object.begin() );
1086 ConstIterator itEnd (
object.end() );
1087 for( ; it != itEnd; ++it)
1089 draw( display, *it);
1095 template <
typename TIterator,
typename TKSpace>
1101 typedef typename Range::ConstIterator ConstIterator;
1103 ConstIterator it (
object.begin() );
1104 ConstIterator itEnd (
object.end() );
1105 for( ; it != itEnd; ++it)
1107 display <<
SetMode3D(it->className(),
"Paving");
1114 template <
typename TIterator,
typename TKSpace>
1118 typename TKSpace::Space::RealPoint> &
object )
1120 typedef typename TKSpace::Space::RealPoint RPoint;
1122 typedef typename Range::ConstIterator ConstIterator;
1124 ConstIterator it (
object.begin() );
1125 ConstIterator itEnd (
object.end() );
1126 for( ; it != itEnd; ++it)
1128 display <<
SetMode3D(it->className(),
"Grid");
1135 template <
typename TIterator,
typename TKSpace>
1139 std::pair<typename TKSpace::Point, typename TKSpace::Vector> > &
object )
1141 typedef typename TKSpace::Point
Point;
1142 typedef typename TKSpace::Vector Vector;
1143 typedef std::pair<Point, Vector> Arrow;
1145 typedef typename Range::ConstIterator ConstIterator;
1147 ConstIterator it (
object.begin() );
1148 ConstIterator itEnd (
object.end() );
1149 for( ; it != itEnd; ++it)
1151 draw( display, *(it.base()) );
1157 template <
typename TIterator,
typename TKSpace>
1163 typedef typename Range::ConstIterator ConstIterator;
1165 ConstIterator it (
object.begin() );
1166 ConstIterator itEnd (
object.end() );
1167 for( ; it != itEnd; ++it)
1169 display <<
SetMode3D(it->className(),
"Paving");
1177 template <
typename TIterator,
typename TKSpace>
1183 typedef typename Range::ConstIterator ConstIterator;
1185 ConstIterator it (
object.begin() );
1186 ConstIterator itEnd (
object.end() );
1187 for( ; it != itEnd; ++it)
1189 display <<
SetMode3D(it->className(),
"Paving");
1197 template <
typename TIterator,
typename TKSpace>
1201 std::pair<typename TKSpace::Point, typename TKSpace::Point > > &
object )
1203 typedef std::pair<typename TKSpace::Point, typename TKSpace::Point > Pair;
1205 typedef typename Range::ConstIterator ConstIterator;
1207 ConstIterator it (
object.begin() );
1208 ConstIterator itEnd (
object.end() );
1209 for( ; it != itEnd; ++it)
1212 display <<
SetMode3D(pair.first.className(),
"Paving");
1214 display << pair.first;
1215 display << CustomColors3D(
Color(0, 255, 0 ,0),
Color(0, 200, 0, 100));
1216 display << pair.second;
1285 ASSERT((mode==
"" || mode==
"Highlighted" || mode==
"Transparent" || mode==
"Basic" || mode==
"Illustration")||
1286 (
"DGtal::Display3DFactory::draw( Display3D & display, const DGtal::ShiftedKSSurfel & aTransformedKSSurfel ): Unknown mode "+mode)==
"");
1288 double factorVolSurfel=1.0;
1289 bool basicMode=
false;
1290 if(mode==
"Highlighted"){
1291 factorVolSurfel = 1.2;
1293 }
else if(mode==
"Transparent"){
1295 }
else if(mode==
"Basic"){
1306 unsigned int spaceDim= (xodd ? 1:0) + (yodd ? 1:0) + (zodd ? 1:0);
1307 ASSERT(spaceDim==2);