Giter Site home page Giter Site logo

cgal / cgal Goto Github PK

View Code? Open in Web Editor NEW
4.6K 166.0 1.3K 661.64 MB

The public CGAL repository, see the README below

Home Page: https://github.com/CGAL/cgal#readme

License: Other

C++ 97.13% CMake 1.27% Shell 0.46% HTML 0.05% C 0.16% Makefile 0.09% TeX 0.20% Gnuplot 0.01% Lua 0.03% Arc 0.01% Python 0.14% CSS 0.01% Perl 0.19% Ruby 0.03% Batchfile 0.05% Lex 0.02% Yacc 0.02% GLSL 0.08% JavaScript 0.04% Roff 0.02%
cgal c-plus-plus geometry algorithms library cpp template-library geometry-processing computational-geometry triangulation

cgal's Introduction

CGAL

The Computational Geometry Algorithms Library (CGAL) is a C++ library that aims to provide easy access to efficient and reliable algorithms in computational geometry.

CGAL Releases

The primary vector of distribution of CGAL are source tarballs, released twice a year, announced on the web site of CGAL.

Getting Started with CGAL

Since version 5.0, CGAL is a header-only library, meaning that it is no longer needed to build CGAL libraries before it can be used.

Head over to the CGAL manual for usage guides and tutorials that will get you started smoothly.

License

See the file LICENSE.md.

CGAL Git Repository Layout

The Git repository of CGAL has a different layout from release tarballs. It contains a CMakeLists.txt file that serves as anchor for configuring and building programs, and a set of subfolders, so called packages. Most packages implement a data structure or an algorithm for CGAL (e.g., Convex_hull_2, or Triangulation_3); however some packages serve special needs:

  • Installation - meta-files and CMake-support
  • Maintenance - infrastructural support
  • Core, CGALimageIO, Qt_widget, GraphicsView - component libraries
  • Scripts - scripts to simplify developer's and user's work
  • Testsuite - infrastructure for testsuite
  • Documentation - infrastructure for CGAL's manual
  • STL_Extension - extensions to the standard template library

More Information

cgal's People

Contributors

aboudev avatar afabri avatar albert-github avatar aympelle avatar bo0ts avatar cjamin avatar danston avatar drussel avatar efifogel avatar ericberberich avatar gaertn avatar gdamiand avatar gilesbathgate avatar glimmercn avatar hoffmannmichael avatar ilkeryaz avatar imiordanov avatar jacksoncampolattaro avatar janetournois avatar kkatrio avatar lrineau avatar maelrl avatar maxgimeno avatar mglisse avatar moniqueteillaud avatar odevil avatar philaris avatar sgiraudot avatar sloriot avatar soesau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cgal's Issues

Progress handle for functions which can be slow

It would be nice to have a way to get progress feedback from functions like make_mesh_3,

In some cases these callbacks could simply set a info string (or status int), which says what is currently being done. For make_mesh_3 the current number of cells/points could regularly be updated. Some functions might also be able to estimate completion in percent.

On the other hand, the progress info object could have an interruption flag, which the "function", e.g. make_mesh_3, could periodically check and stop accordingly.

Approximate Haussdorf distance between two surface meshes

We need a tool that computes an approximate (symmetric) Haussdorf distance between two surface meshes.

It would be useful for tests validation:

  • in Mesh_3, we could use it to verify that the surfacic part of the output c3t3 is a good approximation of the surface of the input domain (when the domain is composed from polyhedra).
  • same with the ongoing work on Constrained_Delaunay_triangulation_3.

That tool could use the AABB_tree twice, to compute the one-way distance. Maybe we would need to compute a uniform sampling of the surfaces.

Concurrency in 2D Triangulation

Using the Concurrency_tag on the Triangulation_data_structure_3 one can enable parallel execution of vertex operations etc. thus boosting performance.

I'm waiting for this feature to come for 2D Triangulations!
Is it planned there or do I have to unnecessarily switch to 3D versions?

Build a release using cmake

We really need that script...

Update:
Sรฉbastien said, in #23 (comment):

From what I remember the branch contains two things:

  • building a release using CMake (see PR #2606)
  • ignoring the library configuration tests when only building the documentation

Update:
Issue renamed to Build a release using cmake

Move enable CGAL types

When working with CGAL in C++11 and upwards one of the biggest issues is that most types cannot be efficiently moved even if they should. Users end up writing code that works around that instead of using the straight forward approach. This primarily affects types which carry large geometric structures.

A non-exhaustive list:

  • Compact_container and Concurrent_compact_container (PR #4496)
  • Surface_mesh
  • HDS and Polyhedron_3: movability depends on underlying storage
  • Triangulation_data_structure_2 and Triangulation_2: depends on Compact_container (PR #4496)
  • Triangulation_data_structure and Triangulation: depends on Compact_container (PR #4496)

Provide an easy way to get relevant system information

When filing bug reports we require our users to submit a lot of information about their system. We should be able to collect that information using cmake to get exactly what we need without hassling users too much.

Bรฉzier Arrangements bug report - segmentation fault upon insertion of a Bรฉzier curve

I provide a simple program which yields a segmentation fault when inserting Bรฉzier curves to a Bรฉzier Arrangement. I believe this error is related to the kernel used within the Bรฉzier arrangement. I've shared the details at the following link which includes the detailed information, a very simple program, an image to display the error condition and the stack trace.

Please check the link for the shared files. For anything related to this issue, you can contact to me via e-mail: [email protected]

https://drive.google.com/file/d/0ByXhUOvsZStITS1iaDFFT2NxVjg/view?usp=sharing

Document when CGAL_ImageIO must be linked

I'm trying to compile my own code and linking it with CGAL 4.6
During the linking, i had the following error:

CMakeFiles/test.dir/main.cpp.o:main.cpp:function main: error: undefined reference to '_readImage(char const*)'
CMakeFiles/test.dir/main.cpp.o:main.cpp:function main: error: undefined reference to 'CGAL::Image_3::private_read(point_image*)'

I followed step-by-step the instructions reported in: http://doc.cgal.org/latest/Manual/installation.html (compiling a own non-shipped program).
Googling the error, I found this report:

http://cgal-discuss.949826.n4.nabble.com/CGAL-3-6-first-post-installation-steps-td2065667.html

The error referred to version 3.6 (i.e. one major version older than the one I use) and the solution proposed (the only one) was to manually edit CMakeLists.txt, and CGALConfig.cmake.
Is there another simpler solution to solve this problem (i.e. avoiding a manual edit)? Will be fixed the problem in the future?

Thanks

http://doc.cgal.org/ does not follow Responsive Web Design

I have received a mail from "Google Webmaster Tools Team" that says that the documentation pages generated by Doxygen, on http://doc.cgal.org/, do not follow the Responsive Web Design, and have mobility issues. The mail also says that in future the Google ranking of those pages maybe decreased because of the issue.

https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/

I wonder what we can do. I will forward the question to the Doxygen project.

halfspace_intersection_3 fails on large sample data (after #82 fix)

After applying fix #82 to my program with massive sample data, there were unfortunately large amounts of fails of the kind "origin not in polyhedron" when using boost::none.

I can give more samples on request.

(@sloriot)

The following illustrates the first 6 of the failures:

#include <iostream>
#include <list>
#include <cstdint>
#include <cstdlib>
#include <exception>

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Convex_hull_3/dual/halfspace_intersection_3.h>

using namespace std;

typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Plane_3                                     Plane;
typedef Kernel::Point_3                                     Point;
typedef CGAL::Polyhedron_3<Kernel>                          Polyhedron;

int planeCount[6] = {7, 7, 8, 8, 8, 7};
uint64_t planeBits[6][8][4] = {
{
    {0xbff0000000000000ull, 0x0ull, 0x0ull, 0x4092000000000000ull},
    {0x3ff0000000000000ull, 0x0ull, 0x0ull, 0xc096800000000000ull},
    {0x0ull, 0xbff0000000000000ull, 0x0ull, 0x40a3200000000000ull},
    {0x0ull, 0x3ff0000000000000ull, 0x0ull, 0xc0a3400000000000ull},
    {0x0ull, 0x0ull, 0xbff0000000000000ull, 0x4070000000000000ull},
    {0x0ull, 0x0ull, 0x3ff0000000000000ull, 0xc080000000000000ull},
    {0x3fe6a09e60000000ull, 0xbfe6a09e60000000ull, 0x0ull, 0x4086a09e60000000ull}
},{
    {0xbff0000000000000ull, 0x0ull, 0x0ull, 0xc08a800000000000ull},
    {0x3ff0000000000000ull, 0x0ull, 0x0ull, 0x4088800000000000ull},
    {0x0ull, 0xbff0000000000000ull, 0x0ull, 0x4092800000000000ull},
    {0x0ull, 0x3ff0000000000000ull, 0x0ull, 0xc094200000000000ull},
    {0x0ull, 0x0ull, 0xbff0000000000000ull, 0xc07a000000000000ull},
    {0x0ull, 0x0ull, 0x3ff0000000000000ull, 0xc090800000000000ull},
    {0x3feb40c900000000ull, 0x3fe0c56800000000ull, 0x0ull, 0x4047959a40000000ull}
},{
    {0xbff0000000000000ull, 0x0ull, 0x0ull, 0xc068000000000000ull},
    {0x3ff0000000000000ull, 0x0ull, 0x0ull, 0xc068000000000000ull},
    {0x0ull, 0xbff0000000000000ull, 0x0ull, 0xc094000000000000ull},
    {0x0ull, 0x3ff0000000000000ull, 0x0ull, 0x4090000000000000ull},
    {0x0ull, 0x0ull, 0xbff0000000000000ull, 0xc058000000000000ull},
    {0x0ull, 0x0ull, 0x3ff0000000000000ull, 0xc05a000000000000ull},
    {0xbfefc0bd80000000ull, 0x3fbfc0bd80000000ull, 0x0ull, 0xc03fc0bd80000000ull},
    {0x3fefc0bd80000000ull, 0x3fbfc0bd80000000ull, 0x0ull, 0xc03fc0bd80000000ull}
},{
    {0xbff0000000000000ull, 0x0ull, 0x0ull, 0x4071c00000000000ull},
    {0x3ff0000000000000ull, 0x0ull, 0x0ull, 0xc089a00000000000ull},
    {0x0ull, 0xbff0000000000000ull, 0x0ull, 0x4075c00000000000ull},
    {0x0ull, 0x3ff0000000000000ull, 0x0ull, 0xc076400000000000ull},
    {0x0ull, 0x0ull, 0xbff0000000000000ull, 0x4071800000000000ull},
    {0x0ull, 0x0ull, 0x3ff0000000000000ull, 0xc072800000000000ull},
    {0xbfe6a09e60000000ull, 0x3fe6a09e60000000ull, 0x0ull, 0xc046a09e60000000ull},
    {0x3fe6a09e60000000ull, 0x3fe6a09e60000000ull, 0x0ull, 0xc089cf34a0000000ull}
},{
    {0xbff0000000000000ull, 0x0ull, 0x0ull, 0xc0b5200000000000ull},
    {0x3ff0000000000000ull, 0x0ull, 0x0ull, 0x40b3600000000000ull},
    {0x0ull, 0xbff0000000000000ull, 0x0ull, 0x40aa380000000000ull},
    {0x0ull, 0x3ff0000000000000ull, 0x0ull, 0xc0aa400000000000ull},
    {0x0ull, 0x0ull, 0xbff0000000000000ull, 0x4071000000000000ull},
    {0x0ull, 0x0ull, 0x3ff0000000000000ull, 0xc072000000000000ull},
    {0x3fe6a09e60000000ull, 0xbfe6a09e60000000ull, 0x0ull, 0x40b6fb20e0000000ull},
    {0xbfe6a09e60000000ull, 0xbfe6a09e60000000ull, 0x0ull, 0xc096a09e60000000ull}
},{
    {0xbff0000000000000ull, 0x0ull, 0x0ull, 0x4092000000000000ull},
    {0x3ff0000000000000ull, 0x0ull, 0x0ull, 0xc096800000000000ull},
    {0x0ull, 0xbff0000000000000ull, 0x0ull, 0x40a3200000000000ull},
    {0x0ull, 0x3ff0000000000000ull, 0x0ull, 0xc0a3400000000000ull},
    {0x0ull, 0x0ull, 0xbff0000000000000ull, 0x4070000000000000ull},
    {0x0ull, 0x0ull, 0x3ff0000000000000ull, 0xc080000000000000ull},
    {0x3fe6a09e40000000ull, 0xbfe6a09e40000000ull, 0x0ull, 0x4086a09e40000000ull}
}

};

int main(int argc, char *argv[]) {
    int choice = 3; // choose between [0, 6)

    list<Plane> planes;
    for (int i = 0; i < planeCount[choice]; i++) {
        double a, b, c, d;
        memcpy(&a, &planeBits[choice][i][0], 8);
        memcpy(&b, &planeBits[choice][i][1], 8);
        memcpy(&c, &planeBits[choice][i][2], 8);
        memcpy(&d, &planeBits[choice][i][3], 8);

        planes.push_back(Plane(a, b, c, d));
    }

    try {
        Polyhedron poly;
        CGAL::halfspace_intersection_3(planes.begin(),
                                       planes.end(),
                                       poly,
                                       static_cast<boost::optional<Point> >(boost::none));
    } catch (exception &e) {
        cerr << e.what() << endl;
        cerr << "for planes" << endl;
        for (auto it = planes.begin(); it != planes.end(); it++)
            cerr << *it << endl;
        cin.get();
    }

    return 0;
}

CGAL::Polyhedron_incremental_builder_3 throws from it's destructor

In general, it is considered bad practice to throw from destructors, particularly, since destructors that throw during stack unwinding may lead to the runtime terminating the program. In this particular case,
the destructor has a simple CGAL_assert( check_protocoll == 0 ); that is probably mainly intended to help debugging: It should notify the user that the usage protocol was not properly followed. However, in my case, that lead to program termination which is much worse for debugging, since the failure causing data is essentially lost.

I propose to move the protocol check into end_surface, (with the risk of not getting notified if someone forgets end_surface), and possibly stick with a notification to stderr (personally, I don't like those) in the destructor.

2D Arrangements Observer Notification Related to Aggregated Insertion Function

Hello,

When incremental global insertion function is used to insert curves into an arrangement, the observer attached to that Arrangement gives notifications as expected. However, when aggregated global insertion function is used to insert curves into an arrangement, the notifications for edge splitting does not work. I've tested this with both segments Bรฉzier arrangements. Below is a very simple program which displays the issue for segments arrangement.

#include <vector>
#include <CGAL/Cartesian.h>
#include <CGAL/Quotient.h>
#include <CGAL/MP_Float.h>
#include <CGAL/Arr_segment_traits_2.h>
#include <CGAL/Arrangement_2.h>
#include <CGAL/Arr_observer.h>

typedef CGAL::Quotient<CGAL::MP_Float>       Number_type;
typedef CGAL::Cartesian<Number_type>         Kernel;
typedef CGAL::Arr_segment_traits_2<Kernel>   Traits_2;
typedef Traits_2::Point_2                    Point_2;
typedef Traits_2::X_monotone_curve_2         Segment_2;
typedef CGAL::Arrangement_2<Traits_2>        Arrangement_2; 

class observer : public CGAL::Arr_observer<Arrangement_2> {
public:
    observer (Arrangement_2& arr) : CGAL::Arr_observer<Arrangement_2> (arr) { }

    virtual void before_split_edge(Halfedge_handle heh, Vertex_handle vh, const X_monotone_curve_2& c1, const X_monotone_curve_2& c2) {
        std::cout << "before_split_edge: " << std::endl;
    }
    virtual void after_split_edge(Halfedge_handle he1, Halfedge_handle he2) {
        std::cout << "after_split_edge" << std::endl;
    }
    virtual void before_split_face (Face_handle fh, Halfedge_handle e) {
        std::cout << "before_split_face" << std::endl;
    }
    virtual void after_split_face(Face_handle fh1, Face_handle fh2, bool is_hole) {
        std::cout << "after_split_face" << std::endl;
    }
};

int main () {
    Arrangement_2 arrangement1;
    Arrangement_2 arrangement2;
    observer ob1(arrangement1);
    observer ob2(arrangement2);

    Point_2 pt1(1,1), pt2(4,1), pt3(4,4), pt4(1,4);
    Segment_2 s1(pt1, pt2), s2(pt2, pt3), s3(pt3, pt4), s4(pt4, pt1), s5(pt1, pt3), s6(pt4, pt2);

    // INCREMENTAL INSERTION
    std::cout << "************************************************" << std::endl;
    CGAL::insert(arrangement1, s1);
    CGAL::insert(arrangement1, s2);
    CGAL::insert(arrangement1, s3);
    CGAL::insert(arrangement1, s4);
    CGAL::insert(arrangement1, s5);
    CGAL::insert(arrangement1, s6);
    std::cout << "************************************************" << std::endl;
    // AGGREGATE INSERTION
    std::vector segments { s1, s2, s3, s4, s5, s6 };
    CGAL::insert(arrangement2, segments.begin(), segments.end());
    std::cout << "************************************************" << std::endl;
    return 0;
}

And the output of this program is:

************************************************
before_split_face
after_split_face
before_split_face
after_split_face
before_split_edge: 
after_split_edge
before_split_face
after_split_face
before_split_face
after_split_face
************************************************
before_split_face
after_split_face
before_split_face
after_split_face
before_split_face
after_split_face
before_split_face
after_split_face
************************************************

Observe that before_split_edge and after_split_edge is not called when aggregated insert function is used.

Regards,
Murat Yirci

CGAL does not add -frounding-math on gcc >= 5.0

In Installation/CMakeLists.txt we set-up the flag -frounding-math when "${GCC_VERSION}" MATCHES "^4.". This regex does not match gcc >= 5.0.

AFAIK nothing changed in the new gcc releases with respect to that flag, but I might be wrong.

Is this the intended behavior or a bug? If it is the intended behavior, the message Using gcc version 4 or later should be changed.

cmake unable to identify compiler for CGAL version 4.5.2 release

Hi,

I am trying to compile CGAL 4.5.2 release code on Ubuntu 14.04 64-bit system. I faced following error(only excerpt shown) while running cmake on original CMakeLists.txt:

-- The CXX compiler identification is unknown
-- The C compiler identification is unknown
-- Check for working CXX compiler: /usr/local/bin/c++
-- Check for working CXX compiler: /usr/local/bin/c++ -- broken
.....

But if I change the arguments to project command from:
project(CGAL CXX C) to project(CGAL C CXX) or even to project(CGAL)
cmake works.

CMP0026: Do not use LOCATION

With recent versions of CMake (3.0 and later), the configuration of CGAL libraries using CMake display warnings like:

CMake Warning (dev) at Installation/src/CMakeLists.txt:51 (get_target_property):
  Policy CMP0026 is not set: Disallow use of the LOCATION target property.
  Run "cmake --help-policy CMP0026" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The LOCATION property should not be read from target "CGAL_Qt4".  Use the
  target name directly with add_custom_command, or use the generator
  expression $<TARGET_FILE>, as appropriate.

Call Stack (most recent call first):
  GraphicsView/src/CGAL_Qt4/CMakeLists.txt:66 (collect_cgal_library)
This warning is for project developers.  Use -Wno-dev to suppress it.

We should do something about that:

  • either set the policy CMP0026 to OLD,
  • or use the generator expression $<TARGET_FILE> in our scripts.

Boundary layer mesh generation, prisms/wedges

It would be nice if CGAL would include a robust function to generate boundary layer meshes from triangle surface meshes. The preferred cell type to be generated are prisms/wedges. The user could specify the thickness, or a scalar field describing the thickness of the layer. The function should be able to deal with non-manifold surface meshes, and avoid self-intersections.

C3T3::Subdomain_index model EqualityComparable but uses operator !=

(Bug detected by Simon Lopez)

The documentation of MeshDomain_3::Subdomain_index says:

Must be a model of CopyConstructible, Assignable, DefaultConstructible and EqualityComparable.

But some parts of Mesh_3 code use operator!=:

  /// Returns \c true if cell \c cell belongs to the 3D complex
  bool is_in_complex(const Cell_handle& cell) const
  {
    return ( subdomain_index(cell) != Subdomain_index() );
  }

That should be replaced by !(subdomain_index(cell) == Subdomain_index()).

Segmentation fault when adding constraint into CDTPlus

Hello,

I've based my triangulation on the polygon_2 example in the documentation.
I've run into a segfault that happens very rarely, but I've found a simple repro case.

Am I giving the algorithm incorrect data? I see a segfault when inserting the 4th constraint. Some of them are very near parallel. I've checked using Line_2 using the constraint endpoints, and they are just nearly parallel.

This data is from the 57,778th polygon. All previous were successful.

My test program, data file, and backtrace are in the following gist:
https://gist.github.com/petersadro/1a3b2ade8e7bc660aed9

Filtered construction?

In CGAL, there are efficient exact predicates, using the Filtered_predicate class template that can wrap a pair (interval predicate, exact predicate).

For constructions, that is a lot more complicated. Should not we try to provide a Filtered_construction, extending the ideas developed in the Robust_circumcenter_traits_3 of Mesh_3?

(I fill this issue as a reminder, link an entry in a TODO list.)

assertion firing due to degenerate triangles

Ran into the following while running all_intersections() on an AABB tree with an arbitrary Segment, repeatably:

CGAL error: assertion violation!
Expression :
File       : /opt/local/include/CGAL/internal/Intersections_3/Triangle_3_Segment_3_intersection.h
Line       : 389
Explanation:
Refer to the bug-reporting instructions at http://www.cgal.org/bug_report.html
libc++abi.dylib: terminating with uncaught exception of type CGAL::Assertion_exception: CGAL ERROR: assertion violation!
File: /opt/local/include/CGAL/internal/Intersections_3/Triangle_3_Segment_3_intersection.h
Line: 389
Abort trap: 6  

The tree was loaded with Triangles from the well known Stanford Dragon PLY, read in via lib assimp.

The following typedefs were in place:

typedef CGAL::Simple_cartesian<CGAL::Gmpq> K;

typedef K::Point_3 Point;
typedef K::Ray_3 Ray;
typedef K::Plane_3 Plane;
typedef K::Vector_3 Vector;
typedef K::Segment_3 Segment;
typedef K::Triangle_3 Triangle;

typedef std::list<Triangle>::iterator Iterator;
typedef CGAL::AABB_triangle_primitive<K, Iterator> Primitive;
typedef CGAL::AABB_traits<K, Primitive> AABB_triangle_traits;
typedef CGAL::AABB_tree<AABB_triangle_traits> Tree;

typedef boost::optional< Tree::Intersection_and_primitive_id<Segment>::Type > Segment_intersection;

After much head scratching I thought to add a check for is_degenerate on the Triangle's I was passing into the tree; there were some and removing these appears to have stopped this assert from firing.

If that's actually what was the issue, flagging because assert style handling should not be used as a replacement for guarding user input error / proper Error Handling (http://stackoverflow.com/questions/1854302/is-assert-evil).

Also reporting in to hit Google cache so somebody else in the future has something to find, even if you decide this was programmer error.

Linking boost to CGAL on Windows

I think the linking process of boost should be fixed, at least on Windows using Visual Studio when working from the master branch.

I've just upgraded to boost 1.57.0, prompting me to run CMake again for CGAL. This led to two issues:
Firstly, CMake cannot correctly find boost even though I have correctly set all relevant variables. I have set the following environment variables (partially redundantly):

  • BOOST_ROOT = [...]\boost-1_57_0
  • BOOST_DIR = %BOOST_ROOT%
  • BOOST_INCLUDEDIR = %BOOST_ROOT%\
  • BOOST_LIBRARYDIR = %BOOST_ROOT%\lib64
    I can get some of the required variables in CMake to be set automatically by manually setting BOOST_ROOT in CMake to the same value it already has.

Secondly, after CMake generates the solution files, when trying to run an application requiring boost, it cannot find the boost_threads[...] library, even though this lib is in BOOST_LIBRARYDIR, which is set in the PATH environment variable. I can probably fix this by manually setting the directories used by the project.

Both of these issues can be fixed by manual interaction, but this shouldn't be necessary with a build system like CMake and the correct CMakeLists.

mpn_sqr not defined on GMP < 4.3.2

The macro mpn_sqr is not defined by GMP prior to version 4.3.2. CentOS 6 currently ships with GMP 4.3.1, so this should work out of the box.

This has been discussed before here: http://cgal-discuss.949826.n4.nabble.com/Error-on-installing-CGAL-on-LINUX-CentOS-td4659148.html

and a suggested workaround by @mglisse in Number_types/include/CGAL/Mpzf.h was:

// GMP-4.3.0 is missing mpn_sqr.
#ifndef mpn_sqr
#define mpn_sqr(dest,a,n) mpn_mul_n(dest,a,a,n)
#endif

but apparently that fix got lost along the way.

Compilation issues with c++1y gcc 4.9.2

Hello,

I just wanted to report a problem when compiling some code using CGAL 4.6 with a -std=c++1y compiler switch with gcc 4.9.2.

The problem appeared in Line_3.h (in my case) at lines 78 and 83 saying that the get() call is ambiguous. It turned out to clash with std::get, so replacing get(base) with CGAL::get(base) fixed the issue.

Hope this is at least a bit helpful,
Rostislav.

Mesh_3 has a bug in CGAL-4.5-beta1

The class template defined in `<CGAL/Mesh_3/Protect_edges_sizing_field.h>' does not work correctly since the Mesh_3 code base use timestamps to compare vertex and cell handles.

Document how to run the test suite

I'm working on my first contribution and managed to get a simple test case built to demonstrate the problem. I'm going to create a branch that fixes the issue but I'd like to run the test suite to ensure there are no regressions. After reading the various INSTALL.md files it's not clear to me how to build and run the test.

halfspace_intersection_3.h::is_intersection_dim_3 not smart enough

If you pass the following planes to halfspace_intersection_3 (planes forming a box-thing):

-1 0 0 -11.92
0 -1 0 32.72
0 1 0 -33.28
0 0 -1 0.64
0 0 1 -1.6
1 0 0 11.3599

If I'm not mistaken the intersection is a valid polyhedron cuboid, but the assertion above aggressively (and I would think incorrectly) determines it is not in 3 dimensions.

I think this is because plane1_it = -1 0 0 -11.92 and plane2_it = 1 0 0 11.3599, which are parallel, so they are automatically coplanar with any other vector in the "coplanar" check.

autotest_cgal uses CGAL-I incorrectly

When a daily testsuite is not finished while another start, as localtest_script uses CGAL-I instead of CGAL_RELEASE_DIR, the code of a release can interfere with the results of the next release.

not connected points

I generate a inr file segmentation and after I did the same procedure as in the example of the liver for generating a mesh. When I inspect the obtained file .mesh, the number of point is bigger than the number of points belonging to thetraedra. I.E., the cardinality of the number of node is greater than the cardinality of the number of node belonging to tetrahedra. I also checked that these nodes do not belong to triangle. Also refining the problem persists (with 1873672 nodes and 8853179 Tetrahedra there are 85 nodes not connected to any other entities). It is a bug? what are these extra nodes?

problems with segmented cylinder

I create a .inr file representing the segmentation (uint8) of cylinder and gave as input to cgal. If I define a region on the centre of the cylinder characterized by pixels having a different value (say 2) it works;. if i create the same file either with extrema regions with different pixel value, or an homogeneous cylinder, cgal is not able to create a mesh (the output file .mesh has only 9 points inside, no triangle and no tetrahedra). I think there is something not working inside the code. I can provide the input file not working, if necessary.

import_from_triangulation_3: Incident segments > number of darts defining infinite vertex

Hi,

I am using import_from_triangulation_3 and trying to isolate infinite vertex from finite vertices. In this code however I find than number of darts representing segments incident on infinite vertex are more than number of darts defining the infinite vertex itself.
But, from what I understand from figure 24.2 in the documentation, darts representing incident segments should always be less than or equal to number of darts defining the vertex.

I would like to know if it really is an issue or a bug in my implementation itself?

Segmentation fault when inserting Polygon_with_holes_2 into Polygon_set_2

I've run across a segmentation fault when I insert a Polygon_with_holes_2 into a General_Polygon_set_2.

I've confirmed ( through use of an arrangement ) that there are no self intersecting contours. I've also confirmed the orientation of the contours is CCW for boundary, and CW for each hole.

I am running using the Fedora22 packaged CGAL4.6 release

With the data set, if I limit the number of holes I add to the polygon with holes, I am successful. Only the 7th hole causes the issue.

Here is the backtrace:

Core was generated by `../flightgear-terragear/release/src/BuildTiles/cgal_tests/cgal_test poly00000.t'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 successor (this=0x0) at /usr/include/CGAL/Multiset.h:211

211 if (rightP != NULL)
Missing separate debuginfos, use: dnf debuginfo-install armadillo-4.650.2-1.fc22.x86_64 arpack-3.1.5-1.fc22.x86_64 atlas-3.10.1-21.fc22.x86_64 blas-3.5.0-10.fc22.x86_64 boost-system-1.57.0-6.fc22.x86_64 boost-thread-1.57.0-6.fc22.x86_64 bzip2-libs-1.0.6-14.fc22.x86_64 cfitsio-3.370-3.fc22.x86_64 CGAL-4.6-1.fc22.x86_64 CharLS-1.0-8.fc22.x86_64 cyrus-sasl-lib-2.1.26-22.fc22.x86_64 expat-2.1.0-10.fc22.x86_64 fontconfig-2.11.93-2.fc22.x86_64 freetype-2.5.5-1.fc22.x86_64 freexl-1.0.1-1.fc22.x86_64 gdal-libs-1.11.2-3.fc22.x86_64 geos-3.4.2-3.fc22.x86_64 giflib-4.1.6-12.fc22.x86_64 glibc-2.21-5.fc22.x86_64 gmp-6.0.0-9.fc22.x86_64 hdf5-1.8.14-3.fc22.x86_64 jasper-libs-1.900.1-30.fc22.x86_64 jbigkit-libs-2.1-3.fc22.x86_64 keyutils-libs-1.5.9-4.fc22.x86_64 krb5-libs-1.13.1-3.fc22.x86_64 lapack-3.5.0-10.fc22.x86_64 lcms2-2.7-1.fc22.x86_64 libcom_err-1.42.12-4.fc22.x86_64 libcurl-7.40.0-3.fc22.x86_64 libdap-3.13.1-3.fc22.x86_64 libgcc-5.1.1-1.fc22.x86_64 libgeotiff-1.4.0-3.fc22.x86_64 libgta-1.0.7-1.fc22.x86_64 libICE-1.0.9-2.fc22.x86_64 libidn-1.29-3.fc22.x86_64 libjpeg-turbo-1.4.0-1.fc22.x86_64 libpng-1.6.16-3.fc22.x86_64 libselinux-2.3-9.fc22.x86_64 libSM-1.2.2-2.fc22.x86_64 libspatialite-4.2.0-3.fc22.x86_64 libssh2-1.5.0-1.fc22.x86_64 libstdc++-5.1.1-1.fc22.x86_64 libtiff-4.0.3-18.fc22.x86_64 libtool-ltdl-2.4.2-34.fc22.x86_64 libuuid-2.26.2-1.fc22.x86_64 libwebp-0.4.3-2.fc22.x86_64 libX11-1.6.3-1.fc22.x86_64 libXau-1.0.8-4.fc22.x86_64 libxcb-1.11-3.fc22.x86_64 libxml2-2.9.2-3.fc22.x86_64 mariadb-libs-10.0.19-1.fc22.x86_64 mpfr-3.1.2-8.fc22.x86_64 netcdf-4.3.3.1-1.fc22.x86_64 nspr-4.10.8-1.fc22.x86_64 nss-3.18.0-1.fc22.x86_64 nss-softokn-freebl-3.18.0-1.fc22.x86_64 nss-util-3.18.0-1.fc22.x86_64 ogdi-3.2.0-0.23.beta2.fc22.x86_64 openjpeg2-2.1.0-3.fc22.x86_64 openldap-2.4.40-12.fc22.x86_64 openssl-libs-1.0.1k-8.fc22.x86_64 pcre-8.37-1.fc22.x86_64 poppler-0.30.0-3.fc22.x86_64 postgresql-libs-9.4.1-1.fc22.x86_64 proj-4.8.0-7.fc22.x86_64 sqlite-3.8.10.1-1.fc22.x86_64 unixODBC-2.3.2-6.fc22.x86_64 xerces-c-3.1.2-1.fc22.x86_64 xz-libs-5.2.0-2.fc22.x86_64 zlib-1.2.8-7.fc22.x86_64
(gdb)
(gdb) bt
#0 successor (this=0x0) at /usr/include/CGAL/Multiset.h:211
#1 operator++ (this=) at /usr/include/CGAL/Multiset.h:299
#2 CGAL::Basic_sweep_line_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_construction_sl_visitor<CGAL::Arr_bounded_planar_construction_helper<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arrangement_on_surface_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > >, CGAL::Arr_construction_event<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > >, CGAL::Arrangement_on_surface_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > > >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > >, CGAL::Arr_construction_event<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > >, CGAL::Arrangement_on_surface_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > > >, std::allocator >::_sort_left_curves (

this=this@entry=0x7fff7954bf30) at /usr/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h:464

#3 0x00000000004a733f in CGAL::Basic_sweep_line_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_construction_sl_visitor<CGAL::Arr_bounded_planar_construction_helper<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arrangement_on_surface_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > >, CGAL::Arr_construction_event<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > >, CGAL::Arrangement_on_surface_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > > >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > >, CGAL::Arr_construction_event<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_construction_subcurve<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > >, CGAL::Arrangement_on_surface_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > > > >, std::allocator >::_handle_left_curves (this=this@entry=0x7fff7954bf30) at /usr/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h:366
#4 0x00000000004b9599 in _sweep (this=0x7fff7954bf30) at /usr/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h:181
#5 sweepstd::_List_iterator<CGAL::Arr_segment_2<CGAL::Epeck > > (curves_end=..., curves_begin=..., this=0x7fff7954bf30) at /usr/include/CGAL/Basic_sweep_line_2.h:229
#6 CGAL::non_intersecting_insert_empty<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > >, std::_List_iteratorCGAL::Arr_segment_2<CGAL::Epeck > > (arr=..., begin_xcurves=...,

begin_xcurves@entry=..., end_xcurves=..., end_xcurves@entry=...) at /usr/include/CGAL/Arrangement_2/Arrangement_on_surface_2_global.h:809

#7 0x00000000004ba40e in CGAL::insert_non_intersecting_curves<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > >, std::_List_iteratorCGAL::Arr_segment_2<CGAL::Epeck > > (arr=...,

begin=..., end=end@entry=...) at /usr/include/CGAL/Arrangement_2/Arrangement_on_surface_2_global.h:940

#8 0x00000000004bf5cf in CGAL::Gps_on_surface_base_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Arr_bounded_planar_topology_traits_2<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck >, CGAL::Gps_default_dcel<CGAL::Gps_segment_traits_2<CGAL::Epeck, std::vector<CGAL::Point_2CGAL::Epeck, std::allocatorCGAL::Point_2<CGAL::Epeck > >, CGAL::Arr_segment_traits_2CGAL::Epeck > > >, CGAL::Boolean_set_operation_2_internal::PreconditionValidationPolicy>::_insert (this=this@entry=0x7fff7954c6b0, pgn=..., arr=...) at /usr/include/CGAL/Boolean_set_operations_2/Gps_on_surface_base_2_impl.h:561
#9 0x00000000004745a7 in insert (pgn_with_holes=..., this=0x7fff7954c6b0) at /usr/include/CGAL/Boolean_set_operations_2/Gps_on_surface_base_2.h:258
#10 main (argc=, argv=) at /home/psadro/Development/flightgear-terragear/src/BuildTiles/cgal_tests/main.cxx:267

The datafile I use is here:

14
boundary 1305
14.500000, 35.840071
14.499647, 35.840355
14.499523, 35.840455
14.498930, 35.840933
14.498775, 35.841058
14.498213, 35.841511
14.498027, 35.841661
14.497998, 35.841690
14.497881, 35.841826
14.497768, 35.841987
14.497660, 35.842166
14.497559, 35.842351
14.497470, 35.842531
14.497395, 35.842694
14.497335, 35.842831
14.497295, 35.842929
14.497261, 35.843018
14.497220, 35.843134
14.497175, 35.843270
14.497126, 35.843420
14.497077, 35.843575
14.497029, 35.843728
14.496985, 35.843874
14.496945, 35.844006
14.496944, 35.844008
14.496900, 35.844138
14.496899, 35.844142
14.496846, 35.844278
14.496844, 35.844281
14.496785, 35.844418
14.496784, 35.844421
14.496722, 35.844553
14.496721, 35.844556
14.496658, 35.844680
14.496657, 35.844682
14.496598, 35.844792
14.496596, 35.844795
14.496543, 35.844887
14.496540, 35.844891
14.496496, 35.844960
14.496494, 35.844963
14.496455, 35.845017
14.496413, 35.845075
14.496412, 35.845077
14.496365, 35.845137
14.496364, 35.845139
14.496311, 35.845203
14.496309, 35.845206
14.496248, 35.845274
14.496246, 35.845277
14.496176, 35.845349
14.496173, 35.845352
14.496093, 35.845428
14.496090, 35.845430
14.496007, 35.845504
14.495951, 35.845564
14.495928, 35.845611
14.495918, 35.845660
14.495921, 35.845714
14.495936, 35.845773
14.495962, 35.845831
14.495996, 35.845884
14.496035, 35.845930
14.496065, 35.845959
14.496103, 35.845995
14.496147, 35.846033
14.496195, 35.846074
14.496247, 35.846117
14.496304, 35.846162
14.496365, 35.846209
14.496382, 35.846222
14.496432, 35.846221
14.496477, 35.846220
14.496515, 35.846219
14.496546, 35.846218
14.496570, 35.846217
14.496586, 35.846217
14.496601, 35.846216
14.496613, 35.846216
14.496640, 35.846218
14.496660, 35.846222
14.496687, 35.846231
14.496698, 35.846235
14.496698, 35.846210
14.496996, 35.845962
14.497129, 35.845963
14.497668, 35.846435
14.497667, 35.846601
14.497605, 35.846653
14.497636, 35.846683
14.497620, 35.846852
14.497379, 35.847016
14.497377, 35.847102
14.496629, 35.847705
14.495880, 35.848308
14.495132, 35.848911
14.494384, 35.849514
14.493635, 35.850117
14.492887, 35.850720
14.492772, 35.850709
14.492618, 35.850794
14.492542, 35.850800
14.492055, 35.850631
14.492001, 35.850582
14.491748, 35.850033
14.491820, 35.849880
14.492009, 35.849832
14.492009, 35.849797
14.491954, 35.849751
14.491896, 35.849704
14.491840, 35.849659
14.491785, 35.849617
14.491731, 35.849576
14.491679, 35.849537
14.491634, 35.849505
14.491569, 35.849467
14.491500, 35.849440
14.491424, 35.849421
14.491345, 35.849411
14.491270, 35.849411
14.491205, 35.849419
14.491155, 35.849433
14.491115, 35.849454
14.491075, 35.849481
14.491036, 35.849509
14.491000, 35.849534
14.490961, 35.849562
14.490914, 35.849595
14.490852, 35.849637
14.490771, 35.849691
14.490661, 35.849763
14.490656, 35.849766
14.490514, 35.849846
14.490506, 35.849850
14.490341, 35.849923
14.490335, 35.849926
14.490157, 35.849991
14.490153, 35.849992
14.489969, 35.850051
14.489967, 35.850051
14.489784, 35.850103
14.489782, 35.850103
14.489610, 35.850147
14.489608, 35.850148
14.489453, 35.850185
14.489322, 35.850216
14.489179, 35.850248
14.488993, 35.850289
14.488781, 35.850335
14.488556, 35.850384
14.488335, 35.850431
14.488133, 35.850474
14.487965, 35.850510
14.487850, 35.850534
14.487759, 35.850556
14.487653, 35.850585
14.487535, 35.850620
14.487412, 35.850660
14.487289, 35.850703
14.487170, 35.850746
14.487061, 35.850788
14.486967, 35.850826
14.486874, 35.850867
14.486769, 35.850915
14.486656, 35.850969
14.486543, 35.851024
14.486434, 35.851079
14.486336, 35.851130
14.486254, 35.851175
14.486194, 35.851211
14.486159, 35.851233
14.486128, 35.851253
14.486086, 35.851286
14.485374, 35.851860
14.485350, 35.851880
14.484621, 35.852467
14.484614, 35.852473
14.483878, 35.853067
14.483868, 35.853075
14.483141, 35.853660
14.483115, 35.853682
14.482405, 35.854254
14.482361, 35.854289
14.481669, 35.854847
14.481608, 35.854896
14.481563, 35.854946
14.481459, 35.855066
14.481353, 35.855193
14.481251, 35.855319
14.481159, 35.855439
14.481082, 35.855541
14.481020, 35.855637
14.480963, 35.855742
14.480910, 35.855854
14.480864, 35.855965
14.480827, 35.856068
14.480798, 35.856156
14.480781, 35.856219
14.480775, 35.856251
14.480799, 35.856228
14.480810, 35.856219
14.480866, 35.856179
14.480878, 35.856172
14.480940, 35.856141
14.480953, 35.856136
14.481019, 35.856114
14.481031, 35.856111
14.481102, 35.856099
14.481113, 35.856097
14.481185, 35.856094
14.481193, 35.856094
14.481286, 35.856098
14.481293, 35.856098
14.481368, 35.856107
14.481377, 35.856108
14.481438, 35.856122
14.481450, 35.856125
14.481500, 35.856144
14.481513, 35.856150
14.481553, 35.856173
14.481564, 35.856180
14.481594, 35.856203
14.481599, 35.856206
14.481620, 35.856225
14.481632, 35.856235
14.481634, 35.856236
14.481643, 35.856238
14.481661, 35.856239
14.481689, 35.856239
14.481727, 35.856238
14.481773, 35.856237
14.481813, 35.856235
14.481829, 35.856233
14.481838, 35.856229
14.481854, 35.856217
14.481873, 35.856198
14.481892, 35.856174
14.481906, 35.856150
14.481915, 35.856132
14.481919, 35.856120
14.481926, 35.856091
14.481939, 35.856035
14.481957, 35.855963
14.481976, 35.855876
14.481997, 35.855776
14.482017, 35.855665
14.482036, 35.855543
14.482053, 35.855409
14.482053, 35.855404
14.482078, 35.855264
14.482081, 35.855252
14.482123, 35.855122
14.482126, 35.855112
14.482177, 35.854997
14.482181, 35.854989
14.482236, 35.854890
14.482239, 35.854884
14.482293, 35.854801
14.482296, 35.854797
14.482343, 35.854733
14.482345, 35.854731
14.482378, 35.854688
14.482393, 35.854667
14.482404, 35.854652
14.482410, 35.854645
14.482429, 35.854623
14.482432, 35.854619
14.482455, 35.854596
14.482458, 35.854594
14.482486, 35.854567
14.482487, 35.854566
14.482520, 35.854535
14.482521, 35.854534
14.482560, 35.854500
14.482606, 35.854460
14.482706, 35.854375
14.482834, 35.854373
14.483103, 35.854584
14.483095, 35.854769
14.483013, 35.854823
14.483009, 35.854825
14.483003, 35.854831
14.482994, 35.854838
14.482983, 35.854848
14.482971, 35.854859
14.482957, 35.854873
14.482955, 35.854875
14.482956, 35.854876
14.482974, 35.854882
14.482995, 35.854885
14.483017, 35.854886
14.483038, 35.854884
14.483056, 35.854879
14.483072, 35.854872
14.483093, 35.854859
14.483148, 35.854814
14.483283, 35.854707
14.483489, 35.854543
14.483767, 35.854321
14.484117, 35.854043
14.484539, 35.853707
14.485033, 35.853314
14.485649, 35.852824
14.485777, 35.852825
14.486230, 35.853198
14.486682, 35.853570
14.486679, 35.853744
14.486060, 35.854216
14.485441, 35.854688
14.484822, 35.855160
14.484203, 35.855632
14.484328, 35.855737
14.484334, 35.855895
14.483765, 35.856462
14.483680, 35.856488
14.483629, 35.856478
14.483625, 35.856478
14.483618, 35.856477
14.483609, 35.856477
14.483596, 35.856477
14.483582, 35.856478
14.483565, 35.856479
14.483551, 35.856481
14.483524, 35.856486
14.483488, 35.856495
14.483444, 35.856510
14.483396, 35.856528
14.483346, 35.856549
14.483298, 35.856571
14.483255, 35.856594
14.483218, 35.856615
14.483193, 35.856631
14.483162, 35.856652
14.483127, 35.856676
14.483088, 35.856703
14.483069, 35.856717
14.483278, 35.856910
14.483263, 35.857085
14.482950, 35.857292
14.482741, 35.857432
14.482564, 35.857551
14.482418, 35.857652
14.482305, 35.857732
14.482225, 35.857791
14.482198, 35.857812
14.482183, 35.857873
14.482162, 35.857968
14.482139, 35.858074
14.482117, 35.858181
14.482099, 35.858276
14.482098, 35.858282
14.482119, 35.858285
14.482165, 35.858291
14.482217, 35.858298
14.482278, 35.858306
14.482418, 35.858326
14.482507, 35.858441
14.482498, 35.858527
14.482498, 35.858528
14.482496, 35.858540
14.482496, 35.858543
14.482494, 35.858554
14.482494, 35.858557
14.482491, 35.858569
14.482490, 35.858574
14.482483, 35.858600
14.482466, 35.858635
14.482443, 35.858663
14.482431, 35.858676
14.482412, 35.858691
14.482408, 35.858694
14.482391, 35.858707
14.482389, 35.858708
14.482371, 35.858721
14.482353, 35.858734
14.482342, 35.858742
14.482338, 35.858754
14.482325, 35.858786
14.482309, 35.858829
14.482291, 35.858882
14.482270, 35.858943
14.482226, 35.859077
14.482115, 35.859146
14.481923, 35.859119
14.481822, 35.859618
14.482034, 35.859741
14.481461, 35.860395
14.481460, 35.860394
14.481206, 35.860826
14.480953, 35.861259
14.480858, 35.861307
14.480679, 35.861288
14.480562, 35.861276
14.480456, 35.861265
14.480359, 35.861256
14.480272, 35.861248
14.480195, 35.861241
14.480128, 35.861235
14.480069, 35.861231
14.479994, 35.861225
14.479992, 35.861225
14.479929, 35.861218
14.479925, 35.861217
14.479872, 35.861209
14.479867, 35.861208
14.479821, 35.861198
14.479814, 35.861196
14.479773, 35.861184
14.479766, 35.861181
14.479729, 35.861166
14.479723, 35.861163
14.479690, 35.861147
14.479686, 35.861145
14.479653, 35.861127
14.479652, 35.861126
14.479599, 35.861097
14.479514, 35.861049
14.479409, 35.860989
14.479293, 35.860923
14.479178, 35.860857
14.479074, 35.860798
14.478993, 35.860752
14.478942, 35.860722
14.478937, 35.860719
14.478902, 35.860696
14.478893, 35.860690
14.478860, 35.860661
14.478851, 35.860652
14.478821, 35.860619
14.478814, 35.860608
14.478789, 35.860571
14.478782, 35.860558
14.478763, 35.860516
14.478758, 35.860502
14.478746, 35.860456
14.478744, 35.860440
14.478740, 35.860392
14.478741, 35.860375
14.478747, 35.860327
14.478749, 35.860314
14.478759, 35.860278
14.478760, 35.860273
14.478774, 35.860229
14.478775, 35.860227
14.478794, 35.860171
14.478795, 35.860170
14.478820, 35.860103
14.478850, 35.860022
14.478886, 35.859930
14.478902, 35.859891
14.478865, 35.859880
14.478774, 35.859852
14.478697, 35.859829
14.478633, 35.859810
14.478583, 35.859795
14.478548, 35.859785
14.478537, 35.859781
14.478527, 35.859780
14.478502, 35.859779
14.478464, 35.859780
14.478422, 35.859785
14.478384, 35.859792
14.478363, 35.859798
14.478349, 35.859822
14.478332, 35.859853
14.478313, 35.859888
14.478294, 35.859924
14.478274, 35.859960
14.478273, 35.859962
14.478253, 35.859997
14.478251, 35.860000
14.478239, 35.860019
14.478239, 35.860028
14.478242, 35.860049
14.478242, 35.860054
14.478244, 35.860087
14.478242, 35.860109
14.478232, 35.860163
14.478228, 35.860171
14.478234, 35.860183
14.478181, 35.860338
14.477326, 35.860684
14.477320, 35.860686
14.476619, 35.860914
14.476129, 35.861287
14.476099, 35.861309
14.475579, 35.861705
14.475558, 35.861717
14.475408, 35.861778
14.475369, 35.861785
14.475180, 35.861776
14.475027, 35.861768
14.474890, 35.861761
14.474769, 35.861755
14.474663, 35.861749
14.474574, 35.861743
14.474501, 35.861739
14.474443, 35.861734
14.474442, 35.861734
14.474359, 35.861727
14.474259, 35.861718
14.474151, 35.861708
14.474043, 35.861697
14.473940, 35.861687
14.473852, 35.861678
14.473785, 35.861671
14.473747, 35.861668
14.473711, 35.861665
14.473651, 35.861659
14.473575, 35.861653
14.473491, 35.861645
14.473407, 35.861638
14.473332, 35.861631
14.473272, 35.861626
14.473239, 35.861623
14.473223, 35.861622
14.473203, 35.861622
14.473179, 35.861621
14.473178, 35.861621
14.473151, 35.861621
14.473147, 35.861620
14.473118, 35.861619
14.473112, 35.861618
14.473081, 35.861614
14.473070, 35.861611
14.473036, 35.861602
14.473018, 35.861595
14.472988, 35.861579
14.472974, 35.861571
14.472945, 35.861549
14.472944, 35.861548
14.472906, 35.861518
14.472860, 35.861481
14.472809, 35.861440
14.472759, 35.861399
14.472716, 35.861363
14.472681, 35.861334
14.472679, 35.861333
14.472652, 35.861308
14.472635, 35.861288
14.472617, 35.861257
14.472607, 35.861235
14.472598, 35.861205
14.472596, 35.861193
14.472592, 35.861167
14.472591, 35.861160
14.472590, 35.861137
14.472589, 35.861133
14.472589, 35.861110
14.472589, 35.861107
14.472589, 35.861086
14.472589, 35.861066
14.472589, 35.861053
14.472589, 35.861049
14.472586, 35.861045
14.472583, 35.861042
14.472558, 35.861007
14.472557, 35.861006
14.472526, 35.860961
14.472490, 35.860910
14.472455, 35.860857
14.472422, 35.860808
14.472421, 35.860806
14.472395, 35.860765
14.472393, 35.860761
14.472376, 35.860731
14.472373, 35.860724
14.472362, 35.860701
14.472361, 35.860700
14.472351, 35.860676
14.472340, 35.860650
14.472329, 35.860625
14.472319, 35.860600
14.472310, 35.860578
14.472303, 35.860561
14.472297, 35.860546
14.472295, 35.860542
14.472290, 35.860527
14.472288, 35.860521
14.472283, 35.860504
14.472282, 35.860500
14.472278, 35.860483
14.472277, 35.860481
14.472274, 35.860465
14.472270, 35.860449
14.472268, 35.860435
14.472265, 35.860424
14.472261, 35.860405
14.472258, 35.860389
14.472256, 35.860355
14.472256, 35.860344
14.472259, 35.860300
14.472259, 35.860296
14.472265, 35.860246
14.472265, 35.860243
14.472272, 35.860189
14.472273, 35.860186
14.472282, 35.860131
14.472282, 35.860128
14.472292, 35.860077
14.472293, 35.860072
14.472305, 35.860026
14.472309, 35.860015
14.472325, 35.859975
14.472336, 35.859955
14.472375, 35.859903
14.472376, 35.859902
14.472444, 35.859814
14.472537, 35.859697
14.472641, 35.859565
14.472744, 35.859435
14.472795, 35.859371
14.472586, 35.859276
14.472540, 35.859114
14.472897, 35.858592
14.473048, 35.858566
14.473106, 35.858609
14.473115, 35.858613
14.473128, 35.858619
14.473145, 35.858625
14.473158, 35.858630
14.473159, 35.858541
14.473162, 35.858337
14.473165, 35.858104
14.473168, 35.857871
14.473171, 35.857662
14.473174, 35.857507
14.473176, 35.857440
14.473176, 35.857436
14.473172, 35.857422
14.473161, 35.857392
14.473144, 35.857357
14.473124, 35.857320
14.473103, 35.857286
14.473084, 35.857260
14.473077, 35.857252
14.473006, 35.857205
14.472772, 35.857058
14.472388, 35.856823
14.471858, 35.856500
14.471182, 35.856091
14.470359, 35.855594
14.469874, 35.855301
14.469390, 35.855009
14.469215, 35.854904
14.469312, 35.855398
14.469289, 35.855480
14.468937, 35.855869
14.468880, 35.855898
14.468300, 35.855973
14.468243, 35.855961
14.467399, 35.855482
14.466554, 35.855002
14.465710, 35.854523
14.464866, 35.854043
14.464821, 35.853983
14.464735, 35.853617
14.464739, 35.853589
14.464733, 35.853585
14.464707, 35.853429
14.465041, 35.853001
14.465166, 35.852972
14.465203, 35.852990
14.465431, 35.852742
14.465424, 35.852690
14.464896, 35.852384
14.464849, 35.852357
14.464275, 35.852025
14.463732, 35.851711
14.463189, 35.851397
14.462724, 35.851128
14.462259, 35.850859
14.461486, 35.850413
14.460870, 35.850057
14.460410, 35.849791
14.460107, 35.849616
14.459959, 35.849531
14.459956, 35.849529
14.459851, 35.849463
14.459844, 35.849459
14.459744, 35.849382
14.459738, 35.849377
14.459647, 35.849293
14.459641, 35.849287
14.459559, 35.849198
14.459554, 35.849191
14.459484, 35.849097
14.459478, 35.849088
14.459422, 35.848991
14.459416, 35.848980
14.459375, 35.848879
14.459371, 35.848865
14.459349, 35.848767
14.459347, 35.848756
14.459338, 35.848665
14.459338, 35.848660
14.459334, 35.848572
14.459334, 35.848566
14.459337, 35.848478
14.459337, 35.848470
14.459348, 35.848382
14.459350, 35.848372
14.459371, 35.848284
14.459374, 35.848273
14.459406, 35.848186
14.459411, 35.848175
14.459456, 35.848089
14.459462, 35.848079
14.459520, 35.847997
14.459524, 35.847992
14.459566, 35.847940
14.459609, 35.847888
14.459653, 35.847836
14.459698, 35.847783
14.459719, 35.847759
14.459698, 35.847747
14.460271, 35.847093
14.461120, 35.847587
14.461152, 35.847605
14.461968, 35.848080
14.462034, 35.848118
14.462817, 35.848573
14.462915, 35.848630
14.463666, 35.849066
14.463796, 35.849142
14.464515, 35.849559
14.464677, 35.849654
14.465363, 35.850053
14.465367, 35.850051
14.465400, 35.850034
14.465403, 35.850032
14.465443, 35.850015
14.465453, 35.850010
14.465528, 35.849987
14.465540, 35.849984
14.465634, 35.849968
14.465641, 35.849967
14.465747, 35.849958
14.465754, 35.849958
14.465867, 35.849956
14.465874, 35.849956
14.465990, 35.849962
14.465997, 35.849963
14.466111, 35.849978
14.466120, 35.849980
14.466227, 35.850006
14.466240, 35.850010
14.466330, 35.850048
14.466339, 35.850053
14.466442, 35.850112
14.466589, 35.850196
14.466767, 35.850299
14.466960, 35.850410
14.467149, 35.850519
14.467318, 35.850616
14.467449, 35.850691
14.467520, 35.850731
14.467555, 35.850749
14.467595, 35.850764
14.467641, 35.850777
14.467691, 35.850785
14.467746, 35.850788
14.467803, 35.850783
14.467863, 35.850770
14.467940, 35.850741
14.467942, 35.850740
14.468051, 35.850703
14.468062, 35.850700
14.468196, 35.850673
14.468203, 35.850672
14.468347, 35.850655
14.468352, 35.850654
14.468500, 35.850645
14.468504, 35.850644
14.468649, 35.850641
14.468652, 35.850641
14.468787, 35.850641
14.468789, 35.850641
14.468907, 35.850645
14.468909, 35.850645
14.469003, 35.850650
14.469009, 35.850651
14.469096, 35.850662
14.469103, 35.850663
14.469198, 35.850684
14.469203, 35.850685
14.469301, 35.850712
14.469305, 35.850713
14.469404, 35.850744
14.469407, 35.850745
14.469504, 35.850779
14.469507, 35.850780
14.469598, 35.850816
14.469600, 35.850817
14.469683, 35.850852
14.469685, 35.850853
14.469756, 35.850886
14.469761, 35.850888
14.469846, 35.850934
14.469848, 35.850935
14.469964, 35.851003
14.469965, 35.851004
14.470099, 35.851086
14.470240, 35.851175
14.470375, 35.851260
14.470491, 35.851335
14.470576, 35.851390
14.470578, 35.851391
14.470615, 35.851417
14.470664, 35.851449
14.470777, 35.851522
14.470934, 35.851622
14.471113, 35.851735
14.471292, 35.851848
14.471449, 35.851946
14.471561, 35.852015
14.471593, 35.852033
14.471631, 35.852026
14.471636, 35.852025
14.471706, 35.852015
14.471707, 35.852015
14.471794, 35.852004
14.471888, 35.851993
14.471981, 35.851983
14.472063, 35.851975
14.472124, 35.851969
14.472126, 35.851969
14.472160, 35.851966
14.472167, 35.851966
14.472185, 35.851966
14.472188, 35.851966
14.472210, 35.851967
14.472214, 35.851967
14.472241, 35.851970
14.472246, 35.851970
14.472278, 35.851975
14.472285, 35.851976
14.472320, 35.851984
14.472328, 35.851986
14.472366, 35.851998
14.472375, 35.852002
14.472414, 35.852019
14.472425, 35.852025
14.472458, 35.852046
14.472460, 35.852048
14.472550, 35.852108
14.472743, 35.852233
14.473006, 35.852402
14.473301, 35.852592
14.473594, 35.852780
14.473848, 35.852943
14.474028, 35.853059
14.474101, 35.853105
14.474105, 35.853108
14.474118, 35.853117
14.474128, 35.853125
14.474141, 35.853138
14.474147, 35.853144
14.474158, 35.853157
14.474162, 35.853162
14.474172, 35.853176
14.474175, 35.853181
14.474185, 35.853196
14.474189, 35.853202
14.474198, 35.853219
14.474201, 35.853226
14.474209, 35.853245
14.474213, 35.853254
14.474219, 35.853274
14.474222, 35.853283
14.474228, 35.853318
14.474229, 35.853319
14.474240, 35.853379
14.474254, 35.853458
14.474270, 35.853546
14.474286, 35.853633
14.474299, 35.853708
14.474308, 35.853752
14.474310, 35.853756
14.474311, 35.853758
14.474317, 35.853761
14.474319, 35.853762
14.474364, 35.853792
14.474424, 35.853832
14.474491, 35.853876
14.474557, 35.853920
14.474615, 35.853959
14.474631, 35.853970
14.474634, 35.853969
14.474677, 35.853957
14.474715, 35.853946
14.474745, 35.853938
14.474775, 35.853846
14.474822, 35.853709
14.474874, 35.853555
14.474925, 35.853402
14.474970, 35.853269
14.475002, 35.853175
14.475014, 35.853137
14.475016, 35.853131
14.475022, 35.853117
14.475029, 35.853101
14.475041, 35.853083
14.475046, 35.853076
14.475058, 35.853060
14.475063, 35.853054
14.475079, 35.853037
14.475085, 35.853031
14.475104, 35.853014
14.475111, 35.853008
14.475135, 35.852991
14.475145, 35.852984
14.475173, 35.852969
14.475187, 35.852963
14.475219, 35.852952
14.475233, 35.852949
14.475284, 35.852940
14.475287, 35.852940
14.475370, 35.852928
14.475480, 35.852913
14.475601, 35.852897
14.475721, 35.852882
14.475825, 35.852868
14.475899, 35.852858
14.475901, 35.852858
14.475910, 35.852849
14.475957, 35.852797
14.476023, 35.852726
14.476097, 35.852644
14.476172, 35.852563
14.476238, 35.852491
14.476286, 35.852438
14.476309, 35.852413
14.476316, 35.852406
14.476322, 35.852400
14.476324, 35.852398
14.476333, 35.852388
14.476339, 35.852383
14.476352, 35.852372
14.476361, 35.852365
14.476379, 35.852353
14.476392, 35.852346
14.476414, 35.852337
14.476428, 35.852332
14.476448, 35.852326
14.476456, 35.852325
14.476476, 35.852322
14.476503, 35.852318
14.476536, 35.852312
14.476573, 35.852307
14.476610, 35.852301
14.476643, 35.852296
14.476668, 35.852292
14.476684, 35.852290
14.476688, 35.852289
14.476705, 35.852287
14.476717, 35.852287
14.476740, 35.852287
14.476756, 35.852289
14.476780, 35.852294
14.476796, 35.852299
14.476818, 35.852308
14.476830, 35.852314
14.476849, 35.852325
14.476857, 35.852330
14.476868, 35.852339
14.476878, 35.852346
14.476905, 35.852364
14.476950, 35.852395
14.477012, 35.852436
14.477090, 35.852488
14.477185, 35.852550
14.477296, 35.852623
14.477455, 35.852728
14.477495, 35.852790
14.477566, 35.853199
14.477573, 35.853199
14.477622, 35.853202
14.477681, 35.853205
14.477751, 35.853209
14.477831, 35.853214
14.477921, 35.853219
14.478099, 35.853230
14.478199, 35.853347
14.478196, 35.853373
14.478198, 35.853373
14.478318, 35.853465
14.478328, 35.853550
14.478417, 35.853629
14.478541, 35.853738
14.478647, 35.853832
14.478736, 35.853910
14.478808, 35.853973
14.478863, 35.854021
14.478900, 35.854052
14.478917, 35.854066
14.478934, 35.854079
14.478959, 35.854096
14.478988, 35.854114
14.479018, 35.854131
14.479044, 35.854145
14.479055, 35.854149
14.479089, 35.854141
14.479130, 35.854128
14.479175, 35.854111
14.479220, 35.854089
14.479262, 35.854063
14.479297, 35.854031
14.479328, 35.853992
14.479372, 35.853915
14.479435, 35.853789
14.479505, 35.853636
14.479577, 35.853476
14.479643, 35.853323
14.479691, 35.853209
14.479643, 35.853148
14.479606, 35.852956
14.479622, 35.852883
14.479688, 35.852792
14.479736, 35.851973
14.479791, 35.851891
14.480191, 35.851703
14.480302, 35.851721
14.480360, 35.851778
14.480373, 35.851789
14.480385, 35.851798
14.480395, 35.851805
14.480402, 35.851809
14.480407, 35.851811
14.480408, 35.851812
14.480410, 35.851812
14.480424, 35.851814
14.480441, 35.851815
14.480458, 35.851815
14.480474, 35.851814
14.480489, 35.851812
14.480502, 35.851809
14.480513, 35.851805
14.480524, 35.851799
14.480538, 35.851791
14.480567, 35.851772
14.480608, 35.851746
14.480660, 35.851712
14.480722, 35.851670
14.480794, 35.851621
14.480877, 35.851565
14.481022, 35.851466
14.481146, 35.851475
14.481584, 35.851874
14.481572, 35.852048
14.481246, 35.852269
14.481247, 35.852459
14.481211, 35.852534
14.480733, 35.852910
14.480255, 35.853285
14.480167, 35.853462
14.480075, 35.853648
14.479996, 35.853807
14.479930, 35.853938
14.479896, 35.854006
14.479959, 35.854026
14.480139, 35.854208
14.480136, 35.854361
14.480050, 35.854440
14.480046, 35.854444
14.480014, 35.854470
14.480009, 35.854473
14.479976, 35.854497
14.479971, 35.854500
14.479937, 35.854521
14.479931, 35.854524
14.479897, 35.854541
14.479890, 35.854545
14.479854, 35.854559
14.479847, 35.854561
14.479811, 35.854572
14.479803, 35.854574
14.479767, 35.854582
14.479762, 35.854583
14.479717, 35.854589
14.479715, 35.854589
14.479672, 35.854595
14.479631, 35.854600
14.479593, 35.854605
14.479567, 35.854607
14.479560, 35.854619
14.479534, 35.854661
14.479500, 35.854717
14.479457, 35.854789
14.479406, 35.854875
14.479346, 35.854975
14.479255, 35.855128
14.479181, 35.855174
14.478857, 35.855203
14.478793, 35.855185
14.478716, 35.855129
14.478672, 35.855096
14.478632, 35.855067
14.478597, 35.855043
14.478568, 35.855023
14.478544, 35.855007
14.478527, 35.854997
14.478524, 35.854995
14.478523, 35.854995
14.478511, 35.854993
14.478489, 35.854991
14.478462, 35.854991
14.478447, 35.854992
14.478442, 35.855000
14.478424, 35.855034
14.478402, 35.855078
14.478377, 35.855131
14.478349, 35.855193
14.478298, 35.855305
14.478223, 35.855361
14.477871, 35.855408
14.477796, 35.855386
14.477717, 35.855317
14.477674, 35.855279
14.477638, 35.855248
14.477608, 35.855222
14.477585, 35.855203
14.477574, 35.855193
14.477572, 35.855192
14.477569, 35.855191
14.477565, 35.855190
14.477559, 35.855188
14.477551, 35.855187
14.477534, 35.855187
14.477507, 35.855189
14.477482, 35.855190
14.477467, 35.855191
14.477463, 35.855195
14.477441, 35.855220
14.477418, 35.855247
14.477396, 35.855274
14.477388, 35.855285
14.477387, 35.855298
14.477386, 35.855316
14.477385, 35.855337
14.477383, 35.855395
14.477355, 35.855459
14.477312, 35.855499
14.477296, 35.855515
14.477280, 35.855530
14.477279, 35.855531
14.477265, 35.855543
14.477263, 35.855544
14.477251, 35.855555
14.477248, 35.855557
14.477236, 35.855567
14.477232, 35.855570
14.477219, 35.855579
14.477212, 35.855583
14.477192, 35.855595
14.477168, 35.855604
14.477139, 35.855611
14.477126, 35.855613
14.477099, 35.855616
14.477094, 35.855616
14.477066, 35.855618
14.477064, 35.855618
14.477035, 35.855618
14.477034, 35.855618
14.477006, 35.855618
14.477005, 35.855618
14.476980, 35.855618
14.476978, 35.855618
14.476958, 35.855617
14.476953, 35.855617
14.476933, 35.855615
14.476916, 35.855612
14.476901, 35.855607
14.476894, 35.855605
14.476884, 35.855601
14.476881, 35.855600
14.476871, 35.855596
14.476869, 35.855595
14.476859, 35.855590
14.476858, 35.855590
14.476847, 35.855584
14.476834, 35.855578
14.476820, 35.855571
14.476771, 35.855546
14.476724, 35.855488
14.476714, 35.855453
14.476676, 35.855430
14.476591, 35.855377
14.476517, 35.855332
14.476455, 35.855294
14.476405, 35.855263
14.476367, 35.855240
14.476341, 35.855225
14.476337, 35.855222
14.476327, 35.855220
14.476313, 35.855219
14.476297, 35.855218
14.476282, 35.855218
14.476270, 35.855219
14.476256, 35.855221
14.476235, 35.855224
14.476231, 35.855225
14.476207, 35.855227
14.476204, 35.855228
14.476182, 35.855230
14.476160, 35.855231
14.476137, 35.855234
14.476111, 35.855237
14.476079, 35.855242
14.476034, 35.855251
14.476031, 35.855252
14.475971, 35.855260
14.475963, 35.855261
14.475896, 35.855265
14.475890, 35.855266
14.475819, 35.855265
14.475814, 35.855265
14.475744, 35.855260
14.475738, 35.855260
14.475671, 35.855251
14.475664, 35.855250
14.475601, 35.855237
14.475591, 35.855234
14.475533, 35.855216
14.475517, 35.855209
14.475478, 35.855187
14.475460, 35.855177
14.475443, 35.855171
14.475415, 35.855167
14.475394, 35.855167
14.475391, 35.855224
14.475387, 35.855329
14.475385, 35.855445
14.475385, 35.855565
14.475386, 35.855678
14.475389, 35.855774
14.475393, 35.855839
14.475404, 35.855851
14.475430, 35.855879
14.475465, 35.855914
14.475492, 35.855939
14.475920, 35.856188
14.476109, 35.856297
14.476631, 35.856601
14.476726, 35.856656
14.477343, 35.857015
14.478059, 35.856437
14.478110, 35.856396
14.478828, 35.855817
14.478878, 35.855777
14.479597, 35.855198
14.479645, 35.855159
14.480365, 35.854578
14.480412, 35.854540
14.481134, 35.853958
14.481180, 35.853922
14.481903, 35.853339
14.481947, 35.853303
14.482672, 35.852719
14.482715, 35.852685
14.483440, 35.852099
14.483482, 35.852066
14.484209, 35.851480
14.484249, 35.851447
14.484978, 35.850860
14.485017, 35.850829
14.485747, 35.850240
14.485784, 35.850210
14.486516, 35.849621
14.486551, 35.849592
14.487284, 35.849001
14.487319, 35.848973
14.488053, 35.848381
14.488086, 35.848354
14.488822, 35.847762
14.488854, 35.847736
14.489591, 35.847142
14.489621, 35.847117
14.490359, 35.846522
14.490388, 35.846499
14.491128, 35.845902
14.491156, 35.845880
14.491897, 35.845283
14.491923, 35.845262
14.492666, 35.844663
14.492691, 35.844643
14.493434, 35.844043
14.493458, 35.844024
14.494203, 35.843424
14.494225, 35.843406
14.494972, 35.842804
14.494993, 35.842787
14.495741, 35.842184
14.495760, 35.842169
14.496509, 35.841565
14.496527, 35.841550
14.497278, 35.840945
14.497295, 35.840932
14.498047, 35.840325
14.498062, 35.840313
14.498816, 35.839706
14.498830, 35.839694
14.499585, 35.839086
14.499597, 35.839076
14.500000, 35.838751
hole 122
14.474498, 35.858120
14.474491, 35.858265
14.474483, 35.858430
14.474474, 35.858597
14.474461, 35.858856
14.474458, 35.858911
14.474458, 35.858916
14.474455, 35.858941
14.474453, 35.858952
14.474447, 35.858978
14.474443, 35.858989
14.474434, 35.859012
14.474429, 35.859022
14.474418, 35.859041
14.474413, 35.859049
14.474402, 35.859065
14.474398, 35.859070
14.474388, 35.859083
14.474386, 35.859085
14.474378, 35.859094
14.474373, 35.859099
14.474336, 35.859144
14.474243, 35.859253
14.474114, 35.859406
14.473966, 35.859580
14.473817, 35.859756
14.473685, 35.859913
14.473586, 35.860029
14.473536, 35.860089
14.473528, 35.860097
14.473498, 35.860124
14.473485, 35.860134
14.473447, 35.860157
14.473437, 35.860162
14.473398, 35.860179
14.473390, 35.860183
14.473350, 35.860196
14.473342, 35.860198
14.473301, 35.860208
14.473293, 35.860210
14.473252, 35.860216
14.473243, 35.860217
14.473201, 35.860218
14.473188, 35.860218
14.473151, 35.860214
14.473141, 35.860212
14.473114, 35.860206
14.473112, 35.860206
14.473090, 35.860200
14.473069, 35.860195
14.473048, 35.860189
14.473029, 35.860184
14.473010, 35.860179
14.472992, 35.860175
14.472986, 35.860173
14.472977, 35.860174
14.472965, 35.860176
14.472956, 35.860178
14.472953, 35.860181
14.472933, 35.860199
14.472911, 35.860220
14.472890, 35.860241
14.472882, 35.860250
14.472882, 35.860257
14.472883, 35.860290
14.472886, 35.860327
14.472890, 35.860365
14.472894, 35.860403
14.472896, 35.860421
14.472898, 35.860427
14.472910, 35.860451
14.472937, 35.860490
14.472970, 35.860534
14.473004, 35.860577
14.473035, 35.860613
14.473056, 35.860636
14.473068, 35.860644
14.473091, 35.860659
14.473117, 35.860677
14.473134, 35.860688
14.473195, 35.860639
14.473399, 35.860474
14.473682, 35.860245
14.474004, 35.859983
14.474325, 35.859721
14.474606, 35.859493
14.474826, 35.859314
14.474815, 35.859293
14.474798, 35.859258
14.474782, 35.859228
14.474770, 35.859205
14.474763, 35.859192
14.474757, 35.859180
14.474754, 35.859174
14.474747, 35.859159
14.474745, 35.859154
14.474740, 35.859141
14.474738, 35.859136
14.474734, 35.859123
14.474733, 35.859119
14.474730, 35.859107
14.474729, 35.859104
14.474727, 35.859093
14.474726, 35.859090
14.474724, 35.859080
14.474724, 35.859078
14.474721, 35.859063
14.474720, 35.859048
14.474720, 35.858999
14.474720, 35.858998
14.474722, 35.858901
14.474725, 35.858769
14.474729, 35.858617
14.474733, 35.858466
14.474736, 35.858332
14.474738, 35.858256
14.474736, 35.858255
14.474689, 35.858224
14.474635, 35.858188
14.474579, 35.858151
14.474529, 35.858118
14.474499, 35.858099
hole 15
14.477178, 35.858430
14.477045, 35.858538
14.477014, 35.858563
14.477023, 35.858566
14.477428, 35.858692
14.477991, 35.858868
14.478637, 35.859071
14.479290, 35.859276
14.479823, 35.859443
14.479736, 35.859392
14.479067, 35.859003
14.478954, 35.858937
14.478311, 35.858564
14.478171, 35.858483
14.477555, 35.858125
hole 53
14.478725, 35.857220
14.478715, 35.857228
14.478294, 35.857567
14.479019, 35.857989
14.479066, 35.858016
14.479744, 35.858410
14.479837, 35.858464
14.480469, 35.858832
14.480609, 35.858912
14.481195, 35.859253
14.481202, 35.859250
14.481241, 35.859232
14.481277, 35.859213
14.481291, 35.859204
14.481314, 35.859091
14.481353, 35.858895
14.481407, 35.858625
14.481474, 35.858281
14.481555, 35.857863
14.481649, 35.857371
14.481720, 35.857006
14.481707, 35.857005
14.481681, 35.857032
14.481670, 35.857042
14.481617, 35.857080
14.481605, 35.857088
14.481545, 35.857119
14.481534, 35.857123
14.481468, 35.857147
14.481458, 35.857150
14.481387, 35.857166
14.481379, 35.857168
14.481302, 35.857178
14.481295, 35.857178
14.481212, 35.857182
14.481204, 35.857182
14.481119, 35.857179
14.481109, 35.857178
14.481029, 35.857166
14.481017, 35.857163
14.480942, 35.857141
14.480929, 35.857136
14.480861, 35.857103
14.480848, 35.857095
14.480787, 35.857052
14.480775, 35.857042
14.480722, 35.856989
14.480712, 35.856977
14.480690, 35.856946
14.480383, 35.856964
14.479966, 35.857298
14.479851, 35.857305
14.479155, 35.856873
hole 30
14.475608, 35.857249
14.475602, 35.857498
14.475598, 35.857709
14.475594, 35.857883
14.475592, 35.858018
14.475590, 35.858115
14.475590, 35.858118
14.475599, 35.858124
14.475628, 35.858140
14.475654, 35.858154
14.475671, 35.858163
14.475678, 35.858166
14.475695, 35.858172
14.475732, 35.858185
14.475777, 35.858201
14.475829, 35.858218
14.475883, 35.858235
14.475933, 35.858250
14.475976, 35.858261
14.476007, 35.858266
14.476023, 35.858268
14.476044, 35.858269
14.476063, 35.858270
14.476083, 35.858270
14.476102, 35.858270
14.476108, 35.858270
14.476808, 35.857691
14.476211, 35.857343
14.476128, 35.857295
14.475613, 35.856996
hole 31
14.474296, 35.857018
14.474315, 35.857035
14.474376, 35.857103
14.474387, 35.857118
14.474427, 35.857189
14.474433, 35.857201
14.474459, 35.857270
14.474462, 35.857277
14.474479, 35.857340
14.474493, 35.857391
14.474504, 35.857423
14.474510, 35.857433
14.474518, 35.857441
14.474557, 35.857468
14.474621, 35.857510
14.474693, 35.857558
14.474756, 35.857598
14.474756, 35.857573
14.474756, 35.857413
14.474755, 35.857252
14.474755, 35.857107
14.474754, 35.856997
14.474754, 35.856986
14.474740, 35.856981
14.474728, 35.856979
14.474710, 35.856978
14.474655, 35.856978
14.474551, 35.856977
14.474420, 35.856976
14.474274, 35.856975
14.474226, 35.856975
hole 99
14.460308, 35.848184
14.460270, 35.848189
14.460236, 35.848197
14.460208, 35.848208
14.460183, 35.848224
14.460157, 35.848247
14.460132, 35.848273
14.460110, 35.848301
14.460092, 35.848331
14.460076, 35.848363
14.460062, 35.848398
14.460049, 35.848435
14.460039, 35.848471
14.460032, 35.848511
14.460028, 35.848567
14.460032, 35.848637
14.460047, 35.848713
14.460075, 35.848791
14.460119, 35.848867
14.460183, 35.848940
14.460278, 35.849012
14.460418, 35.849095
14.460720, 35.849272
14.461175, 35.849538
14.461784, 35.849893
14.462547, 35.850337
14.463004, 35.850603
14.463462, 35.850870
14.463997, 35.851181
14.464532, 35.851492
14.465143, 35.851847
14.465755, 35.852203
14.466443, 35.852602
14.467131, 35.853002
14.467896, 35.853447
14.468661, 35.853891
14.468663, 35.853892
14.469467, 35.854381
14.470272, 35.854870
14.471076, 35.855359
14.471881, 35.855848
14.472685, 35.856337
14.472741, 35.856371
14.472784, 35.856396
14.472816, 35.856413
14.472838, 35.856423
14.472854, 35.856428
14.472872, 35.856432
14.472898, 35.856434
14.472938, 35.856436
14.472985, 35.856436
14.473029, 35.856436
14.473068, 35.856437
14.473092, 35.856437
14.473093, 35.856433
14.473097, 35.856332
14.473202, 35.856232
14.473576, 35.856233
14.473840, 35.856233
14.474066, 35.856234
14.474254, 35.856234
14.474301, 35.856233
14.473760, 35.855919
14.473435, 35.855730
14.472911, 35.855426
14.472570, 35.855227
14.472062, 35.854932
14.471704, 35.854724
14.471213, 35.854439
14.470838, 35.854221
14.470364, 35.853946
14.469973, 35.853718
14.469516, 35.853452
14.469107, 35.853215
14.468667, 35.852959
14.468241, 35.852712
14.467818, 35.852466
14.467376, 35.852209
14.466969, 35.851973
14.466510, 35.851706
14.466120, 35.851479
14.465645, 35.851203
14.465271, 35.850986
14.464779, 35.850700
14.464423, 35.850493
14.463913, 35.850197
14.463574, 35.849999
14.463048, 35.849694
14.462725, 35.849506
14.462182, 35.849191
14.461876, 35.849013
14.461316, 35.848688
14.461027, 35.848519
14.460451, 35.848184
14.460440, 35.848184
14.460436, 35.848184
14.460413, 35.848184
14.460382, 35.848182
14.460347, 35.848182
hole 16
14.479801, 35.856353
14.479836, 35.856352
14.479875, 35.856348
14.479908, 35.856342
14.479933, 35.856335
14.479949, 35.856329
14.479959, 35.856323
14.479968, 35.856316
14.479977, 35.856307
14.479987, 35.856294
14.479998, 35.856277
14.480011, 35.856255
14.480024, 35.856233
14.480038, 35.856206
14.480056, 35.856164
14.480066, 35.856139
hole 70
14.468658, 35.851183
14.468554, 35.851186
14.468463, 35.851191
14.468383, 35.851199
14.468313, 35.851208
14.468250, 35.851221
14.468191, 35.851236
14.468136, 35.851254
14.468084, 35.851276
14.468035, 35.851302
14.467989, 35.851331
14.467948, 35.851363
14.467913, 35.851393
14.467888, 35.851420
14.467874, 35.851438
14.467869, 35.851447
14.467864, 35.851459
14.467858, 35.851481
14.467853, 35.851500
14.468497, 35.851874
14.468714, 35.852000
14.469302, 35.852342
14.469574, 35.852500
14.470107, 35.852809
14.470435, 35.853000
14.470912, 35.853277
14.471295, 35.853500
14.471717, 35.853745
14.472156, 35.854000
14.472522, 35.854213
14.473016, 35.854500
14.473327, 35.854680
14.473877, 35.855000
14.474131, 35.855148
14.474737, 35.855500
14.474748, 35.855500
14.474774, 35.855498
14.474792, 35.855495
14.474795, 35.855465
14.474800, 35.855368
14.474803, 35.855250
14.474805, 35.855125
14.474807, 35.855004
14.474807, 35.854898
14.474808, 35.854819
14.474808, 35.854795
14.474807, 35.854794
14.474800, 35.854778
14.474789, 35.854757
14.474776, 35.854736
14.474762, 35.854718
14.474752, 35.854706
14.474745, 35.854700
14.474521, 35.854558
14.473945, 35.854193
14.473138, 35.853684
14.472676, 35.853393
14.472214, 35.853101
14.471340, 35.852549
14.470465, 35.851997
14.469864, 35.851618
14.469598, 35.851450
14.469531, 35.851410
14.469446, 35.851366
14.469347, 35.851321
14.469237, 35.851277
14.469121, 35.851239
14.469003, 35.851209
14.468886, 35.851189
14.468771, 35.851182
hole 163
14.476535, 35.853670
14.476520, 35.853915
14.476409, 35.854015
14.476379, 35.854013
14.476394, 35.854026
14.476419, 35.854047
14.476437, 35.854062
14.476438, 35.854064
14.476452, 35.854077
14.476463, 35.854088
14.476476, 35.854106
14.476483, 35.854115
14.476493, 35.854134
14.476497, 35.854141
14.476506, 35.854159
14.476508, 35.854165
14.476516, 35.854185
14.476518, 35.854191
14.476524, 35.854212
14.476526, 35.854220
14.476530, 35.854243
14.476532, 35.854253
14.476534, 35.854278
14.476534, 35.854293
14.476532, 35.854316
14.476531, 35.854324
14.476527, 35.854351
14.476520, 35.854393
14.476511, 35.854449
14.476501, 35.854515
14.476491, 35.854583
14.476485, 35.854623
14.476538, 35.854613
14.476590, 35.854603
14.476635, 35.854594
14.476646, 35.854592
14.476669, 35.854562
14.476722, 35.854492
14.476783, 35.854411
14.476844, 35.854330
14.476898, 35.854257
14.476938, 35.854203
14.476958, 35.854175
14.476960, 35.854173
14.476970, 35.854160
14.476974, 35.854155
14.476986, 35.854142
14.476991, 35.854137
14.477003, 35.854125
14.477009, 35.854121
14.477021, 35.854110
14.477027, 35.854106
14.477040, 35.854097
14.477046, 35.854093
14.477060, 35.854085
14.477068, 35.854081
14.477083, 35.854074
14.477093, 35.854071
14.477108, 35.854066
14.477118, 35.854063
14.477135, 35.854060
14.477137, 35.854059
14.477160, 35.854055
14.477189, 35.854050
14.477223, 35.854044
14.477258, 35.854039
14.477289, 35.854033
14.477316, 35.854029
14.477340, 35.854026
14.477352, 35.854025
14.477381, 35.854024
14.477403, 35.854027
14.477433, 35.854034
14.477450, 35.854040
14.477473, 35.854050
14.477484, 35.854056
14.477500, 35.854066
14.477505, 35.854070
14.477512, 35.854075
14.477527, 35.854084
14.477528, 35.854084
14.477579, 35.854113
14.477649, 35.854154
14.477730, 35.854200
14.477812, 35.854248
14.477886, 35.854291
14.477944, 35.854325
14.477974, 35.854342
14.477979, 35.854345
14.477985, 35.854344
14.478016, 35.854338
14.478087, 35.854325
14.478183, 35.854307
14.478294, 35.854286
14.478410, 35.854265
14.478474, 35.854253
14.478458, 35.854239
14.478386, 35.854179
14.478313, 35.854119
14.478261, 35.854076
14.478253, 35.854082
14.478237, 35.854093
14.478225, 35.854102
14.478216, 35.854109
14.478206, 35.854117
14.478199, 35.854122
14.478177, 35.854136
14.478163, 35.854143
14.478136, 35.854154
14.478123, 35.854158
14.478095, 35.854165
14.478083, 35.854167
14.478055, 35.854169
14.478043, 35.854170
14.478014, 35.854169
14.478001, 35.854167
14.477972, 35.854162
14.477958, 35.854158
14.477928, 35.854147
14.477912, 35.854140
14.477887, 35.854125
14.477879, 35.854120
14.477866, 35.854110
14.477857, 35.854103
14.477847, 35.854096
14.477838, 35.854088
14.477829, 35.854081
14.477821, 35.854074
14.477812, 35.854067
14.477741, 35.854004
14.477747, 35.853834
14.477786, 35.853803
14.477726, 35.853786
14.477618, 35.853702
14.477586, 35.853692
14.477434, 35.853689
14.477349, 35.853613
14.477107, 35.853617
14.477022, 35.853702
14.476908, 35.853701
14.476875, 35.853700
14.476845, 35.853700
14.476820, 35.853700
14.476799, 35.853700
14.476783, 35.853699
14.476771, 35.853699
14.476760, 35.853699
14.476753, 35.853699
14.476732, 35.853697
14.476719, 35.853695
14.476698, 35.853690
14.476690, 35.853688
14.476673, 35.853682
14.476668, 35.853680
14.476657, 35.853676
14.476653, 35.853674
14.476647, 35.853672
14.476637, 35.853668
14.476614, 35.853656
14.476611, 35.853655
14.476571, 35.853633
14.476516, 35.853604
14.476509, 35.853600
hole 53
14.475394, 35.853722
14.475355, 35.853828
14.475314, 35.853947
14.475275, 35.854065
14.475242, 35.854169
14.475220, 35.854243
14.475215, 35.854269
14.475214, 35.854283
14.475214, 35.854285
14.475211, 35.854312
14.475210, 35.854335
14.475210, 35.854337
14.475216, 35.854342
14.475217, 35.854342
14.475276, 35.854384
14.475348, 35.854436
14.475388, 35.854465
14.475392, 35.854412
14.475490, 35.854233
14.475600, 35.854210
14.475592, 35.854123
14.475793, 35.853921
14.475794, 35.853912
14.475795, 35.853880
14.475796, 35.853853
14.475798, 35.853830
14.475799, 35.853812
14.475799, 35.853801
14.475790, 35.853801
14.475777, 35.853802
14.475772, 35.853802
14.475760, 35.853801
14.475755, 35.853801
14.475742, 35.853800
14.475739, 35.853800
14.475725, 35.853798
14.475722, 35.853798
14.475707, 35.853796
14.475704, 35.853795
14.475689, 35.853793
14.475684, 35.853792
14.475667, 35.853787
14.475655, 35.853784
14.475636, 35.853776
14.475620, 35.853769
14.475604, 35.853758
14.475584, 35.853746
14.475557, 35.853729
14.475524, 35.853709
14.475490, 35.853688
14.475456, 35.853668
14.475426, 35.853651
14.475422, 35.853649
hole 44
14.488962, 35.848968
14.488927, 35.848996
14.488330, 35.849478
14.488193, 35.849588
14.487733, 35.849959
14.487962, 35.849911
14.488242, 35.849853
14.488523, 35.849794
14.488782, 35.849740
14.488992, 35.849695
14.489130, 35.849665
14.489230, 35.849643
14.489342, 35.849616
14.489463, 35.849586
14.489586, 35.849553
14.489706, 35.849518
14.489811, 35.849486
14.489780, 35.849464
14.489773, 35.849459
14.489705, 35.849403
14.489699, 35.849398
14.489636, 35.849335
14.489630, 35.849327
14.489574, 35.849259
14.489567, 35.849248
14.489522, 35.849173
14.489515, 35.849158
14.489487, 35.849081
14.489484, 35.849068
14.489469, 35.848996
14.489468, 35.848990
14.489460, 35.848922
14.489459, 35.848914
14.489457, 35.848847
14.489457, 35.848838
14.489461, 35.848769
14.489462, 35.848760
14.489473, 35.848690
14.489475, 35.848682
14.489493, 35.848608
14.489495, 35.848602
14.489521, 35.848525
14.489522, 35.848520
14.489524, 35.848515
hole 74
14.495042, 35.844802
14.494869, 35.844840
14.494723, 35.844877
14.494605, 35.844910
14.494507, 35.844942
14.494417, 35.844975
14.494325, 35.845011
14.494222, 35.845053
14.494103, 35.845099
14.493966, 35.845155
14.493816, 35.845224
14.493657, 35.845302
14.493498, 35.845385
14.493348, 35.845467
14.493215, 35.845544
14.493197, 35.845554
14.492526, 35.846095
14.492482, 35.846131
14.491838, 35.846650
14.491766, 35.846708
14.491150, 35.847204
14.491051, 35.847284
14.491031, 35.847309
14.490961, 35.847398
14.490887, 35.847496
14.490807, 35.847603
14.490718, 35.847718
14.490627, 35.847838
14.490538, 35.847963
14.490453, 35.848092
14.490371, 35.848228
14.490295, 35.848369
14.490227, 35.848516
14.490167, 35.848670
14.490120, 35.848816
14.490114, 35.848910
14.490134, 35.848958
14.490186, 35.849005
14.490274, 35.849046
14.490385, 35.849071
14.490493, 35.849075
14.490572, 35.849062
14.490615, 35.849040
14.490644, 35.849016
14.490695, 35.848973
14.490751, 35.848927
14.490813, 35.848877
14.490879, 35.848824
14.490950, 35.848767
14.490996, 35.848730
14.490998, 35.848658
14.491667, 35.848110
14.492335, 35.847562
14.493004, 35.847014
14.493672, 35.846467
14.494341, 35.845919
14.495009, 35.845371
14.495027, 35.845360
14.495231, 35.845261
14.495238, 35.845256
14.495258, 35.845242
14.495281, 35.845224
14.495307, 35.845204
14.495336, 35.845182
14.495368, 35.845156
14.495402, 35.845128
14.495419, 35.845115
14.495428, 35.845101
14.495433, 35.845066
14.495425, 35.844999
14.495396, 35.844926
14.495348, 35.844863
14.495281, 35.844817
14.495188, 35.844792
hole 44
14.496135, 35.843186
14.496061, 35.843246
14.495500, 35.843698
14.495401, 35.843778
14.494939, 35.844150
14.495011, 35.844137
14.495020, 35.844136
14.495111, 35.844129
14.495119, 35.844128
14.495206, 35.844129
14.495214, 35.844130
14.495297, 35.844138
14.495303, 35.844139
14.495385, 35.844152
14.495389, 35.844152
14.495469, 35.844169
14.495471, 35.844170
14.495554, 35.844189
14.495562, 35.844191
14.495648, 35.844220
14.495661, 35.844225
14.495742, 35.844266
14.495752, 35.844273
14.495823, 35.844322
14.495831, 35.844328
14.495892, 35.844383
14.495899, 35.844389
14.495952, 35.844446
14.495956, 35.844452
14.496001, 35.844508
14.496017, 35.844482
14.496046, 35.844429
14.496081, 35.844359
14.496120, 35.844278
14.496159, 35.844191
14.496195, 35.844105
14.496226, 35.844024
14.496251, 35.843951
14.496286, 35.843841
14.496344, 35.843663
14.496415, 35.843443
14.496492, 35.843204
14.496568, 35.842968
14.496622, 35.842793

The sample code that segfaults is here:

include <CGAL/Exact_predicates_exact_constructions_kernel.h>

include <CGAL/Polygon_2.h>

include <CGAL/Polygon_with_holes_2.h>

include <CGAL/Polygon_set_2.h>

include <CGAL/Arr_segment_traits_2.h>

include <CGAL/Arr_polyline_traits_2.h>

include <CGAL/Arrangement_2.h>

include <terragear/tg_misc.hxx>

include <terragear/tg_shapefile.hxx>

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef CGAL::Polygon_2 Polygon_2;
typedef CGAL::Polygon_with_holes_2 Polygon_with_holes_2;
typedef CGAL::Polygon_set_2 Polygon_set_2;

typedef CGAL::Arr_segment_traits_2 Traits_2;
typedef Traits_2::Point_2 Point_2;
typedef Traits_2::X_monotone_curve_2 Segment_2;
typedef CGAL::Arrangement_2<Traits_2> Arrangement_2;

static Polygon_with_holes_2 GetPolygonWithHoles( const char* filename )
{
Polygon_2 boundary;
std::vector<Polygon_2> holes;
Polygon_with_holes_2 pwh;
Arrangement_2 arr;
int numContours;

FILE* fp = fopen( filename, "r" );
fscanf( fp, "%d\n", &numContours );

// as we generate a Polygon_2 from the contour - also generate an arrangement - 
// to verify we only have the correct number of faces ( no self intersecting contours )
for ( int i=0; i<8; i++ ) {       
    char        contourType[32];
    int         numNodes;
    std::vector<Segment_2> curves;        
    Polygon_2   P;

    fscanf( fp, "%s %d\n", contourType, &numNodes );
    std::cout << "read contour type " << contourType << " with " << numNodes << " nodes " << std::endl;

    double origin_x, origin_y, src_x, src_y, trg_x, trg_y;
    fscanf( fp, "%lf, %lf\n", &origin_x, &origin_y );

    src_x = origin_x;
    src_y = origin_y;
    P.push_back (Point_2(src_x, src_y));

    for ( int j=0; j<numNodes-1; j++ ) {                        
        fscanf( fp, "%lf, %lf\n", &trg_x, &trg_y );
        P.push_back (Point_2(trg_x, trg_y));

        std::cout << "  add segment from (" << src_x << "," << src_y << ") to (" << trg_x << "," << trg_y << ")" << std::endl;
        curves.push_back( Segment_2( Point_2( src_x, src_y ), Point_2( trg_x, trg_y ) ) );

        src_x = trg_x;
        src_y = trg_y;
    }

    // last segment is last target to source 0
    P.push_back (Point_2(origin_x, origin_y));
        std::cout << "  add segment from (" << src_x << "," << src_y << ") to (" << origin_x << "," << origin_y << ")" << std::endl;
    curves.push_back( Segment_2( Point_2( src_x, src_y ), Point_2( origin_x, origin_y ) ) );
     face
    // first - verify number of faces
    CGAL::insert( arr, curves.begin(), curves.end() );
    std::cout << "Number of faces is " << arr.number_of_faces() << std::endl;

    CGAL::Orientation orient = P.orientation();

    // do we need to reverse the curve?
    if ( strcmp( contourType, "boundary" ) == 0 ) {
        // boundaries are counter clockwise
        if ( orient == CGAL::CLOCKWISE) {
            std::cout << "Need to reverse orientation of boundary polygon " << std::endl;
            P.reverse_orientation();
        } else {
            std::cout << "Orientation of boundary polygon is already correct " << std::endl;
        }
        boundary = P;
    } else {
        // holes are clockwise
        if ( orient == CGAL::COUNTERCLOCKWISE) {
            std::cout << "Need to reverse orientation of hole polygon " << std::endl;
            P.reverse_orientation();
        } else {
            std::cout << "Orientation of hole polygon is already correct " << std::endl;                
        }
        holes.push_back( P );
    }            
}

if ( holes.empty() ) {
    pwh = Polygon_with_holes_2( boundary );
} else {
    pwh = Polygon_with_holes_2( boundary, holes.begin(), holes.end() );        
}

return pwh;

}

int main(int argc, char **argv)
{
Polygon_set_2 gps;

Polygon_with_holes_2 pwh = GetPolygonWithHoles( "./poly00000.txt" );
gps.insert( pwh );

return 0;

}

Does Straight_skeleton_2 support Exact_predicates_exact_constructions_kernel?

At the bottom of http://doc.cgal.org/latest/Straight_skeleton_2/index.html#title12 in the Advanced section it reads:

Notice how some of the examples above use Exact_predicates_exact_constructions_kernel. In all cases, the straight skeleton is constructed using Exact_predicates_inexact_constructions_kernel.

But in fact none of the examples use exact constructions.

Looking into the test cases I found https://github.com/CGAL/cgal/blob/master/Straight_skeleton_2/test/Straight_skeleton_2/include/CGAL/test_sls_types.h#L25-L46 which seems like someone tested it at one point... but it doesn't seem to work any more.

Here's my test case:

#include <iostream>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/create_straight_skeleton_2.h>
#include <CGAL/Polygon_2.h>

typedef CGAL::Exact_predicates_exact_constructions_kernel K;
// typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_2 Point ;
typedef CGAL::Straight_skeleton_2<K> Ss;
typedef boost::shared_ptr<Ss> SsPtr;

int main( int argc, const char* argv[] )
{
  CGAL::Polygon_2<K> poly;
  poly.push_back( Point( -1, -1 ) );
  poly.push_back( Point( 0, -12 ) );
  poly.push_back( Point( 1, -1 ) );
  poly.push_back( Point( 12, 0 ) );
  poly.push_back( Point( 1, 1 ) );
  poly.push_back( Point( 0, 12 ) );
  poly.push_back( Point( -1, 1 ) );
  poly.push_back( Point( -12, 0 ) );

  SsPtr ss = CGAL::create_interior_straight_skeleton_2(poly);

  std::cout << "Straight skeleton with " << ss->size_of_vertices()
            << " vertices, " << ss->size_of_halfedges()
            << " halfedges and " << ss->size_of_faces()
            << " faces" << std::endl ;
}

Sqrt_extension(double)

Sqrt_extension<NT,...> has implicit constructors taking int or NT. When NT is not a builtin type, trying to implicitly construct Sqrt_extension from double picks the int constructor. -Wconversion gives a warning with gcc/clang, Visual Studio seems to warn as well.

Interior straight skeleton leaks on the exterior with inexact constructions

As reported in #42 (comment) the interior straight skeleton of polygon can end up being outside of the input polygon due to robustness issues when created with exact predicates and inexact constructions kernel.

I've reduced the testcase to this (in WKT form):

POLYGON((1687891.03971877 5401915.74731365,1684030.810026 5402682.520688,
1684000 5402672.31399816,1681298.83486802 5401963.62058474,
1681281.134295 5403807.881624,1683915.838219 5402676.741864,
1684000 5402711.41802501,1684020.618162 5402719.913077,
1687892.11090561 5404508.53561586,1687891.03971877 5401915.74731365))

internal_skeleton_outside1

The artifact happens near segments of the boundary which are relatively short compared to the overall bounding box.

internal_skeleton_outside2

Running the skeleton builder with exact constructions kernel gives the correct answer.
Is it expected ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.