Skip to content
Snippets Groups Projects
Commit 8d04e393 authored by Jonathan Lambrechts's avatar Jonathan Lambrechts
Browse files

GSHHS Plugin : remove bug in rounding orientation

parent 93ab8937
No related branches found
No related tags found
No related merge requests found
...@@ -541,7 +541,7 @@ public: ...@@ -541,7 +541,7 @@ public:
} }
return i1; return i1;
} }
int orientation(iterator i0, iterator i1,bool reverse_stereo) int orientation(iterator i0, iterator i1,bool reverse_stereo=false)
{ {
if(next(i0)==i1) if(next(i0)==i1)
return 0; return 0;
...@@ -559,7 +559,7 @@ public: ...@@ -559,7 +559,7 @@ public:
}while(p!=i1); }while(p!=i1);
i0->to_stereo(x[2],y[2],reverse_stereo); i0->to_stereo(x[2],y[2],reverse_stereo);
alpha+=get_angle(x[0],y[0],x[1],y[1],x[2],y[2]); alpha+=get_angle(x[0],y[0],x[1],y[1],x[2],y[2]);
return (int)(alpha/(M_PI*2)); return (int)round(alpha/(M_PI*2));
} }
int length(iterator i0,iterator i1) int length(iterator i0,iterator i1)
{ {
...@@ -681,7 +681,7 @@ public: ...@@ -681,7 +681,7 @@ public:
bool loop_check_close_points_self(loop *l,box &b) bool loop_check_close_points_self(loop *l,box &b)
{ {
bool result=false; bool result=false;
bool reverse_stereo=(l->orientation(l->begin(),--l->end(),false)<0); int orientation = l->orientation(l->begin(), --l->end());
for(loop::iterator i=l->begin();i!=l->end();){ for(loop::iterator i=l->begin();i!=l->end();){
double d[2]={i->min_dist*1.001,i->min_dist*1.001}; double d[2]={i->min_dist*1.001,i->min_dist*1.001};
point *cp[2]; point *cp[2];
...@@ -694,11 +694,11 @@ public: ...@@ -694,11 +694,11 @@ public:
for(ii=i;ii!=l->end() && ii!=id1;ii++); for(ii=i;ii!=l->end() && ii!=id1;ii++);
not_a_loop= ii==l->end()?0:1; not_a_loop= ii==l->end()?0:1;
} }
if(not_a_loop!=0 && (l->orientation(i,id1,reverse_stereo)==-1 || l->length(i,id1)<3)){ if(not_a_loop!=0 && (l->orientation(i,id1)!=orientation || l->length(i,id1)<3)){
i=l->remove_range(i,id1); i=l->remove_range(i,id1);
result=true; result=true;
} }
if(not_a_loop!=1 && (l->orientation(id1,i,reverse_stereo)==-1 || l->length(id1,i)<3)){ if(not_a_loop!=1 && (l->orientation(id1,i)!=orientation || l->length(id1,i)<3)){
i=l->remove_range(id1,i); i=l->remove_range(id1,i);
result=true; result=true;
}else }else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment