32 #include <boost/lexical_cast.hpp>
45 template <
typename S,
typename P,DGtal::u
int32_t p>
49 myDomain(aDomain), myPointPredicate(aPredicate)
57 template <
typename S,
typename P,DGtal::u
int32_t p>
63 template <
typename S,
typename P, DGtal::u
int32_t p>
70 myLowerBoundCopy = myDomain.lowerBound();
71 myUpperBoundCopy = myDomain.upperBound();
73 Domain workingDomain(myLowerBoundCopy, myUpperBoundCopy);
78 myInfinity = myDomain.upperBound() + Point::diagonal(1);
84 if ( myPointPredicate( *it))
90 for (
Dimension dim = 0; dim < S::dimension ; dim++ )
91 computeOtherSteps ( output, dim );
96 template <
typename S,
typename P,DGtal::u
int32_t p>
102 std::string title =
"Voro dimension " + boost::lexical_cast<
string>( dim ) ;
111 std::vector<Size> subdomain;
112 subdomain.reserve(S::dimension - 1);
113 for (
unsigned int k = 0; k < S::dimension ; k++)
114 if ( (S::dimension - 1 - k) != dim)
115 subdomain.push_back( S::dimension - 1 - k );
117 Domain localDomain(myLowerBoundCopy, myUpperBoundCopy);
120 std::vector<Point> Sites(myUpperBoundCopy[dim] - myLowerBoundCopy[dim], myInfinity);
123 for (ConstDomIt it = localDomain.
subRange( subdomain ).
begin(),
127 computeOtherStep1D ( output, (*it), dim, Sites);
136 template <
typename S,
typename P, DGtal::u
int32_t p>
139 const Point &startingPoint,
141 std::vector<Point> &Sites)
const
143 Point point = startingPoint;
144 Point endpoint = startingPoint;
149 endpoint[dim] = myUpperBoundCopy[dim];
154 for(
Abscissa i = myLowerBoundCopy[dim] ; i <= myUpperBoundCopy[dim] ; i++)
156 psite = output(point);
157 if ( psite != myInfinity )
160 Sites[nbSites] = psite;
168 for(
Abscissa i = myLowerBoundCopy[dim] ; i <= myUpperBoundCopy[dim] ; i++)
170 psite = output(point);
171 if ( psite != myInfinity )
173 while ((nbSites >= 1) &&
174 ( myMetric.hiddenBy(Sites[nbSites-1], Sites[nbSites] ,
175 psite, startingPoint, endpoint, dim) ))
180 Sites[nbSites] = psite;
193 point[dim] = myLowerBoundCopy[dim];
194 for(
Abscissa i = myLowerBoundCopy[dim] ; i <= myUpperBoundCopy[dim] ; i++)
196 while ( (k < nbSites) &&
197 ( myMetric.closest(point, Sites[k], Sites[k+1])
198 != SeparableMetric::FIRST ))