44 template <
typename DigitalSurf,
typename KernelFunctor>
48 const KernelFunctor & aKernelFunctor )
49 : mySurface ( digitalSurface ), myKernelFunctor ( aKernelFunctor )
56 template <
typename DigitalSurf,
typename KernelFunctor>
60 const unsigned int radius )
71 template <
typename DigitalSurf,
typename KernelFunctor>
72 template <
typename OutputIterator>
78 OutputIterator result )
const
90 template <
typename DigitalSurf,
typename KernelFunctor>
100 template <
typename DigitalSurf,
typename KernelFunctor>
101 template <
typename OutputIterator>
107 for (
ConstIterator it = surface().begin(), it_end = surface().end();
110 *result++ = eval ( *it );
120 template <
typename DigitalSurf,
typename KernelFunctor>
128 template <
typename DigitalSurf,
typename KernelFunctor>
135 typedef typename MyBreadthFirstVisitor::Node MyNode;
136 typedef typename MyBreadthFirstVisitor::Size MySize;
137 MyBreadthFirstVisitor visitor ( mySurface, scell );
142 typename DigitalSurf::Surfel s;
143 const typename DigitalSurf::KSpace & K = mySurface.container().space();
145 ASSERT ( myFlagIsInit );
147 while ( ! visitor.finished() )
149 node = visitor.current();
150 if ( node.second < myRadius )
153 i = K.sOrthDir ( s );
154 elementary[ i ] = K.sDirect ( s, i ) ? 1 : -1;
156 elementary *= myKernelFunctor ( node.second );
159 elementary [ i ] = 0;
166 return n.getNormalized();
174 template <
typename DigitalSurf,
typename KernelFunctor>