Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] CGAL fails with insertion operation in 2D arrangements

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] CGAL fails with insertion operation in 2D arrangements


Chronological Thread 
  • From: Dinesh Shetty <>
  • To:
  • Subject: Re: [cgal-discuss] CGAL fails with insertion operation in 2D arrangements
  • Date: Wed, 25 Apr 2018 16:07:27 +0000
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:7eEgEhMsmYgdKReWZv4l6mtUPXoX/o7sNwtQ0KIMzox0Lfv6rarrMEGX3/hxlliBBdydt6ofzbKO+4nbGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1Ov71GonPhMiryuy+4ZLebxlGiTanfb9+MAi9oBnMuMURnYZsMLs6xAHTontPdeRWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjTbxFFzsmKHw65NfqtRbYUwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0yRD+s7bpkSAXwhSgIOT428mHZhMJzgqxGvhyuuwdyzJTIbIyPLvdyYr/RcNEcSGFcXshRTStBAoakYoUBDuoBO/hXr5L9p1ATsBW+BRejBP/zyj5Im3T72rA10+UnEQ7YxwwgH8gCsHXVrNXuKKgfSu+1zKzSwjXCa/Nawyvy6I/Nch04p/yHQLx+cc3UyUY1FgPFiE2dqZf5PzyPyusNsG+b7/R+WuK1hW4nrwZxoza1ysgwjYnJg4QYwU3H+yVh2Is5O8G0RUphbdOnEJZcrT+WO5Z3T884Xm1luiY3x7sbspChZicK0o4oxxvHZvyHbYeI5hXjWf6UIThihXJlfKuzhw+u8US80+H8WNS43VRKoyZfndnMsXcN1xPX6seZUPdy4kCh2TOX2wDS7OFLP1w0mLLFJ5I9xrM8jJkevETZEiPohUn7jbWaelgm9+Wo8+jnZ6/ppp6YN496kAH+NaEul9SiDuQ5NAgBQXOb+eSm2L3i/E35W6lFg+Y5kqncqp/aJMAbqrSlDA9S14Yv8wy/ACu+0NQEgXkHK0pIdw6Ij4fzP1HCOe33Dfakg1uwjTdr3OvGM6b6ApTNK3jDiK3ucax8605a0gozzMpQ64haCrEbc7rPXRr6u9XcSxM4KAep2P3PCdNn14pYV3jcLLWeNfb+sFmF/eJnGOmBeJME8GLxKv4o/P6ojH4ikncSeKCo2d0cb3XuTacuGFmQfXe52oRJKmwNpAdrFLW72m3HaiZaYjOJZ4x54zg6DIy8CoKaH9KihbWA2GGwGZgEPzkaWGDJKm/hcsC/Y9lJcDibe5YznTkNVLznQIgkh0n36V3KjoF/J++RwRU28JLu0N8vub/WnBA2sCVoV4GTij7QCW5zmWwMSnk926Ut+UE=

It worked for many years for all the problems I have tried, but I switch to 4.12 now it breaks

On Wed, Apr 25, 2018 at 10:55 AM Efi Fogel <> wrote:
When you use inexact construction, your program may work on some instances and may fail on other.
We do not guarantee anything.


   ____  _        ____             _
  /_____/_) o    /__________  __  //
 (____ (   (    (    (_/ (_/-(-'_(/
                         _/



On 25 April 2018 at 18:49, Dinesh Shetty <> wrote:
Well my version with 4.4 works

On Wed, Apr 25, 2018 at 3:31 AM Efi Fogel <> wrote:
This could have never worked.
You are using inexact construction.
Change the first line to:

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;

   ____  _        ____             _
  /_____/_) o    /__________  __  //
 (____ (   (    (    (_/ (_/-(-'_(/
                         _/



On 24 April 2018 at 22:07, Dinesh Shetty <> wrote:
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::FT                                        Number_type;

typedef CGAL::Arr_segment_traits_2<Kernel>              Traits;
typedef Traits::Point_2                                 Point;
typedef Traits::X_monotone_curve_2                      Segment;

typedef CGAL::Arrangement_2<Traits>                     Arrangement;
typedef Arrangement::Vertex_handle                      Vertex_handle;
typedef Arrangement::Halfedge_handle                    Halfedge_handle;
typedef Arrangement::Face_handle                        Face_handle;
typedef Arrangement::Vertex_const_handle                Vertex_const_handle;
typedef Arrangement::Halfedge_const_handle              Halfedge_const_handle;


typedef CGAL::Arr_consolidated_curve_data_traits_2<Traits, int>
Data_traits;
typedef Data_traits::Curve_2                               Numbered_segment;
typedef CGAL::Arrangement_2<Data_traits>                   Numbered_arr;

Numbered_arr   arr;


insert(arr, Numbered_segment(Segment(Point(1.6831200000000E+02,-1.3992000000000E+01), Point( 1.2253100000000E+02, -2.0889000000000E+01)), 6));
insert(arr, Numbered_segment(Segment(Point(1.6490200000000E+02, 1.0314000000000E+01), Point( 1.0342400000000E+02, 4.2850000000000E+00)), 11));
insert(arr, Numbered_segment(Segment(Point(1.7217000000000E+02,-3.2611000000000E+01), Point( 9.9756000000000E+01, -4.3728000000000E+01)), 16));
insert(arr, Numbered_segment(Segment(Point(1.4197300000000E+02, 5.4490000000000E+00), Point( 1.4887000000000E+02, -4.0331000000000E+01)), 51));
std::stringstream ss;
Numbered_arr::Vertex_const_iterator   vit;
for (vit = arr.vertices_begin(); vit != arr.vertices_end(); ++vit) 
{
std::map<int, int> Frequency;
Numbered_arr::Halfedge_around_vertex_const_circulator eit, first;
eit = first = vit->incident_halfedges();
do 
{

++Frequency[eit->curve().data().front()];

} while (++eit != first);

ss << "@ ( " << vit->point() << ")" <<std::endl;
for(auto & itr : Frequency)
{
ss<<itr.first<<" apprears "<<itr.second<<"\n";
}

}


Numbered_arr::Edge_const_iterator eit;
std::vector<int> Pid;
for (eit = arr.edges_begin(); eit != arr.edges_end(); ++eit) 
{
Data_traits::Data_container::const_iterator  it;

if(eit->curve().data().size()> 1)
{
Pid.clear();
Pid.reserve(eit->curve().data().size());
for (it = eit->curve().data().begin(); it != eit->curve().data().end(); ++it)
{
Pid.push_back(*it);
}
ss<<"Overlap detected : ";
for(auto & itr : Pid)
ss<<itr<<" ";
ss<<"\n";
}
}



ss << arr.number_of_edges() << " edges:" << std::endl;
for (eit = arr.edges_begin(); eit != arr.edges_end(); ++eit)
ss << "[" << eit->curve() << "]" << std::endl;

On Tue, Apr 24, 2018 at 12:33 PM, Efi Fogel <> wrote:
Please provide a test case that reproduces the problem.

   ____  _        ____             _
  /_____/_) o    /__________  __  //
 (____ (   (    (    (_/ (_/-(-'_(/
                         _/



On 24 April 2018 at 17:32, Dinesh Shetty <> wrote:
When I switched to CGAL 4.12-beta2 from CGAL-4.4, I get following exception thrown
Exception: CGAL ERROR: precondition violation!
Expr: (m_traits.compare_y_at_x_2_object()(p, cv) == EQUAL) && compare_xy(cv.left(), p) == SMALLER && compare_xy(cv.right(), p) == LARGER
File: D:\PE\PE_Software\3rdParty\CGAL\CGAL-4.12-beta2\include\CGAL/Arr_segment_traits_2.h
Line: 714

Any help appreciated..

On stackExchange







Archive powered by MHonArc 2.6.18.

Top of Page