Fixed boundary tags

This commit is contained in:
Efi Fogel 2017-12-31 18:50:41 +02:00
parent c0279e9ed3
commit 47c817d741
1 changed files with 28 additions and 12 deletions

View File

@ -23,14 +23,18 @@
#ifndef CGAL_NO_INTERSECTION_SURFACE_SWEEP_2_H #ifndef CGAL_NO_INTERSECTION_SURFACE_SWEEP_2_H
#define CGAL_NO_INTERSECTION_SURFACE_SWEEP_2_H #define CGAL_NO_INTERSECTION_SURFACE_SWEEP_2_H
#include <CGAL/license/Surface_sweep_2.h>
/*! \file /*! \file
* *
* Definition of the No_intersection_surface_sweep_2 class. * Definition of the No_intersection_surface_sweep_2 class.
*/ */
#include <vector>
#include <algorithm>
#include <iterator>
#include <boost/mpl/assert.hpp> #include <boost/mpl/assert.hpp>
#include <CGAL/license/Surface_sweep_2.h>
#include <CGAL/assertions.h> #include <CGAL/assertions.h>
#include <CGAL/memory.h> #include <CGAL/memory.h>
#include <CGAL/Surface_sweep_2/Event_comparer.h> #include <CGAL/Surface_sweep_2/Event_comparer.h>
@ -38,9 +42,6 @@
#include <CGAL/Multiset.h> #include <CGAL/Multiset.h>
#include <CGAL/Arrangement_2/Arr_traits_adaptor_2.h> #include <CGAL/Arrangement_2/Arr_traits_adaptor_2.h>
#include <CGAL/Arr_tags.h> #include <CGAL/Arr_tags.h>
#include <vector>
#include <algorithm>
#include <iterator>
#ifndef CGAL_SS_VERBOSE #ifndef CGAL_SS_VERBOSE
@ -144,10 +145,21 @@ public:
); );
protected: protected:
typedef typename Arr_are_all_sides_oblivious_tag< /*!
Left_side_category, Bottom_side_category, */
Top_side_category, Right_side_category >::result typedef typename Arr_all_sides_oblivious_category<Left_side_category,
Are_all_sides_oblivious_category; Bottom_side_category,
Top_side_category,
Right_side_category>::result
All_sides_oblivious_category;
/*!
*/
typedef typename Arr_sides_category<Left_side_category,
Bottom_side_category,
Top_side_category,
Right_side_category>::result
Sides_category;
public: public:
typedef CGAL::Surface_sweep_2::Event_comparer<Traits_adaptor_2, Event> typedef CGAL::Surface_sweep_2::Event_comparer<Traits_adaptor_2, Event>
@ -424,7 +436,9 @@ protected:
* \param sc The subcurve corresponding to cv. * \param sc The subcurve corresponding to cv.
*/ */
void _init_curve_end(const X_monotone_curve_2& cv, Arr_curve_end ind, void _init_curve_end(const X_monotone_curve_2& cv, Arr_curve_end ind,
Subcurve* sc); Subcurve* sc, Arr_all_sides_oblivious_tag);
void _init_curve_end(const X_monotone_curve_2& cv, Arr_curve_end ind,
Subcurve* sc, Arr_not_all_sides_oblivious_tag);
/*! Handle the subcurves that are to the left of the event point (i.e., /*! Handle the subcurves that are to the left of the event point (i.e.,
* subcurves that we are done with). * subcurves that we are done with).
@ -435,7 +449,9 @@ protected:
* Such an event is usually the left endpoint of its incident right * Such an event is usually the left endpoint of its incident right
* subcurves, and we locate their position in the status line. * subcurves, and we locate their position in the status line.
*/ */
void _handle_event_without_left_curves(); void _handle_event_without_left_curves(Arr_all_sides_oblivious_tag);
void _handle_event_without_left_curves(Arr_all_sides_not_finite_tag);
void _handle_event_without_left_curves(Arr_not_all_sides_not_finite_tag);
/*! Sort the left subcurves of an event point according to their order in /*! Sort the left subcurves of an event point according to their order in
* their status line (no geometric comparisons are needed). * their status line (no geometric comparisons are needed).
@ -522,7 +538,7 @@ protected:
bool is_new) bool is_new)
{ {
_update_event_at_open_boundary(e, cv, ind, is_new, _update_event_at_open_boundary(e, cv, ind, is_new,
Are_all_sides_oblivious_category()); All_sides_oblivious_category());
} }
void _update_event_at_open_boundary(Event* e, void _update_event_at_open_boundary(Event* e,