Fix a bug also in 4.9, with 3 collinear points

This commit is contained in:
Andreas Fabri 2016-11-24 14:24:11 +01:00
parent b6ff5e6932
commit ed838bf943
1 changed files with 5 additions and 2 deletions

View File

@ -708,6 +708,8 @@ convex_hull_3(InputIterator first, InputIterator beyond,
--size; --size;
} }
typename Traits::Collinear_3 collinear = traits.collinear_3_object();
if ( size == 1 ) // 1 point if ( size == 1 ) // 1 point
{ {
ch_object = make_object(*points.begin()); ch_object = make_object(*points.begin());
@ -722,7 +724,9 @@ convex_hull_3(InputIterator first, InputIterator beyond,
ch_object = make_object(seg); ch_object = make_object(seg);
return; return;
} }
else if ( size == 3 ) // 3 points else if ( ( size == 3 ) && (! collinear(*(points.begin()),
*(++points.begin()),
*(--points.end()) ) ) ) // 3 points
{ {
typedef typename Traits::Triangle_3 Triangle_3; typedef typename Traits::Triangle_3 Triangle_3;
typename Traits::Construct_triangle_3 construct_triangle = typename Traits::Construct_triangle_3 construct_triangle =
@ -735,7 +739,6 @@ convex_hull_3(InputIterator first, InputIterator beyond,
} }
// at least 4 points // at least 4 points
typename Traits::Collinear_3 collinear = traits.collinear_3_object();
P3_iterator point1_it = points.begin(); P3_iterator point1_it = points.begin();
P3_iterator point2_it = points.begin(); P3_iterator point2_it = points.begin();