#include <iostream>
#include "DGtal/base/Common.h"
#include "DGtal/helpers/StdDefs.h"
#include "DGtal/kernel/BasicPointPredicates.h"
#include "DGtal/images/SimpleThresholdForegroundPredicate.h"
#include "DGtal/geometry/volumes/distance/ExactPredicateLpSeparableMetric.h"
#include "DGtal/geometry/volumes/distance/VoronoiMap.h"
#include "DGtal/geometry/volumes/distance/DistanceTransformation.h"
#include "DGtal/io/colormaps/HueShadeColorMap.h"
#include "DGtal/io/boards/Board2D.h"
int main( int , char** )
{
L2Metric l2;
board<< domain << set;
board.
saveSVG(
"voronoimap-inputset.svg");
NotPredicate notSetPred(set);
Voronoi2D voronoimap(domain,notSetPred,l2);
board << domain;
for(Voronoi2D::Domain::ConstIterator it = voronoimap.domain().begin(),
itend = voronoimap.domain().end(); it != itend; ++it)
{
Voronoi2D::Value site = voronoimap( *it );
if (site != (*it))
Display2DFactory::draw( board, site - (*it), (*it));
}
board.
saveSVG(
"voronoimap-voro.svg");
for(Voronoi2D::Domain::ConstIterator it = voronoimap.domain().begin(),
itend = voronoimap.domain().end(); it != itend; ++it)
{
Voronoi2D::Value site = voronoimap( *it );
unsigned char c = (site[1]*13 + site[0] * 7) % 256;
<< (*it);
}
board.
saveSVG(
"voronoimap-cells.svg");
L8Metric l8;
Voronoi2D_l8 voronoimap_l8(domain,notSetPred,l8);
board << domain;
for(Voronoi2D_l8::Domain::ConstIterator it = voronoimap_l8.domain().begin(),
itend = voronoimap_l8.domain().end(); it != itend; ++it)
{
Voronoi2D::Value site = voronoimap_l8( *it );
unsigned char c = (site[1]*13 + site[0] * 7) % 256;
<< (*it);
}
board.
saveSVG(
"voronoimap-vorol8.svg");
DT dt(domain,notSetPred,l2);
board << domain;
DT::Value maxDT=0.0;
for(DT::ConstRange::ConstIterator it = dt.constRange().begin(), itend = dt.constRange().end();
it != itend ; ++it)
if ((*it)>maxDT) maxDT = (*it);
for(DT::Domain::ConstIterator it = dt.domain().begin(),
itend = dt.domain().end(); it != itend; ++it)
{
DT::Value dist = dt( *it );
<< (*it);
}
board.
saveSVG(
"voronoimap-dt.svg");
return 0;
}