Merge pull request #1378 from sloriot/Polyline_simplification_2-handle_undefined_cost

Handle edges with undefined cost
This commit is contained in:
Laurent Rineau 2016-09-13 18:11:52 +02:00 committed by GitHub
commit 3466dee055
3 changed files with 24 additions and 9 deletions

View File

@ -267,11 +267,17 @@ operator()()
if((*u)->is_removable()){
boost::optional<FT> dist = cost(pct, u);
if(! dist){
std::cerr << "undefined cost not handled yet" << std::endl;
// cost is undefined
if( mpq->contains(u) ){
mpq->erase(u);
}
} else {
(*u)->set_cost(*dist);
if((*mpq).contains(u)){
(*mpq).update(u, true);
if(mpq->contains(u)){
mpq->update(u, true);
}
else{
mpq->push(u);
}
}
}
@ -279,11 +285,17 @@ operator()()
if((*w)->is_removable()){
boost::optional<FT> dist = cost(pct, w);
if(! dist){
std::cerr << "undefined cost not handled yet" << std::endl;
// cost is undefined
if( mpq->contains(w) ){
mpq->erase(w);
}
} else {
(*w)->set_cost(*dist);
if((*mpq).contains(w)){
(*mpq).update(w, true);
if(mpq->contains(w)){
mpq->update(w, true);
}
else{
mpq->push(w);
}
}

View File

@ -18,10 +18,11 @@ typedef CGAL::Constrained_Delaunay_triangulation_2<K,TDS, Itag> CDT;
typedef CGAL::Constrained_triangulation_plus_2<CDT> CT;
typedef CGAL::Polygon_2<K> Polygon_2;
typedef PS::Stop_above_cost_threshold Stop;
typedef PS::Squared_distance_cost Cost;
typedef PS::Squared_distance_cost Cost1;
typedef PS::Scaled_squared_distance_cost Cost2;
template <class Cost>
void test(char* fname)
{
CGAL::Timer timer;
@ -45,7 +46,8 @@ int main(int argc, char* argv[])
{
for(int i= 1;i < argc; i++){
test(argv[i]);
test<Cost1>(argv[i]);
test<Cost2>(argv[i]);
}
return 0;

View File

@ -98,6 +98,7 @@ public:
handle update ( value_type const& v, handle h ) { mHeap.update(v); return h ; }
handle erase ( value_type const& v, handle ) { mHeap.remove(v); return null_handle() ; }
handle erase ( value_type const& v ) { mHeap.remove(v); return null_handle() ; }
value_type top() const { return mHeap.top() ; }