44 template <
typename TObject>
57 template <
typename TObject>
61 : myEmbeddingDomain( object.pointSet().domain() ),
63 myObjectDomain( object.pointSet() ),
64 myObjectAdjacency( myObjectDomain, object.adjacency() ),
65 myCore( myEmbeddingDomain ),
66 myLayer( myEmbeddingDomain ),
67 myDistance( 0 ), myFinished(
false ),
68 myInCorePred( myCore ),
69 myNotInCorePred( myInCorePred )
87 template <
typename TObject>
88 template <
typename Po
intInputIterator>
92 PointInputIterator b, PointInputIterator e )
93 : myEmbeddingDomain( object.pointSet().domain() ),
95 myObjectDomain( object.pointSet() ),
96 myObjectAdjacency( myObjectDomain, object.adjacency() ),
97 myCore( myEmbeddingDomain ),
98 myLayer( myEmbeddingDomain ),
99 myDistance( 0 ), myFinished(
false ),
100 myInCorePred( myCore ),
101 myNotInCorePred( myInCorePred )
111 template <
typename TObject>
123 template <
typename TObject>
139 template <
typename TObject>
146 computeNextLayer( myLayer );
154 template <
typename TObject>
160 myCore.insertNew( myLayer.begin(), myLayer.end() );
171 template <
typename TObject>
177 if ( finished() )
return;
181 typedef std::set<Point> SetContainer;
182 typedef std::insert_iterator< SetContainer > Inserter;
183 typedef std::vector<Point> VectorContainer;
184 typedef std::back_insert_iterator< VectorContainer > VectorInserter;
185 SetContainer newLayer;
186 Inserter inserter( newLayer, newLayer.begin() );
193 Predicate cPred( myObjectDomain.predicate(),
197 for ( ; p != pEnd; ++p )
199 myObjectAdjacency.writeNeighbors
200 ( inserter, *p, cPred );
215 if ( newLayer.empty() )
221 myLayer.insertNew( newLayer.begin(), newLayer.end() );
229 template <
typename TObject>
241 template <
typename TObject>
253 template <
typename TObject>
259 return myLayer.
begin();
265 template <
typename TObject>
271 return myLayer.
end();
282 template <
typename TObject>
287 out <<
"[Expander layer=" << myDistance
288 <<
" layer.size=" << myLayer.size()
289 <<
" finished=" << myFinished
297 template <
typename TObject>
310 template <
typename TObject>
316 object.selfDisplay( out );