The public CGAL repository, see the README below

Overview

Build Status

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

Issues
  • CGAL header-only: step 1

    CGAL header-only: step 1

    Technical feature https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/CGAL_header_only

    Step 1 where we keep the current configuration of cgal with cmake.

    TODO:

    • [x] Allow make install
    • [x] Handle pathes to qrc/moc files, and resources, when CGAL is installed
    • [x] Set include dirs dans 3rd party libraries for Qt5 and ImageIO.
    • [x] Add something in the Installation/changes.html.
    • [x] document minimum cmake version for header-only to be available
    • [x] 4.X -> 4.9 in documentation
    • [x] Once tested remove the switch ON for header-only
    feature accepted feature Tested 
    opened by gdamiand 141
  • New packages: Hyperbolic_triangulation_2 / Periodic_4_hyperbolic_triangulation_2

    New packages: Hyperbolic_triangulation_2 / Periodic_4_hyperbolic_triangulation_2

    Summary of Changes

    Creating a pull request for this branch as indicated by Mael. This is part of the review process for two new packages submitted for integration in CGAL: Hyperbolic_triangulation_2 and Periodic_4_hyperbolic_triangulation_2. Both packages are hosted on the same branch (because one depends on the other), this is why I am creating a single PR.

    Release Management

    TODO:

    • [x] Modify CHANGES.md
    • [x] Filter branch, current weight is 4498kB (please notify @sloriot when it is the last item to be done)

    TODO (web):

    • [x] Post this: https://gist.github.com/MaelRL/b161f890b318aa4b05853d0754de7ddf when the PR is integrated
    feature accepted feature Tested rm only: release blocker Pkg::Hyperbolic_triangulation_2 Pkg::Periodic_4_hyperbolic_triangulation_2 Merged_in_4.14 Merged_in_4.13.2 
    opened by imiordanov 101
  • Regroup data: scripts and function updates

    Regroup data: scripts and function updates

    Please use the following template to help us managing pull requests.

    Summary of Changes

    Start to regroup all data in a same global directory (for now only for LCC package). Add a global function that computes the name of a data file using either a macro defined by cmake, or an environement variable.

    Plan for Data

    • Move all data of examples in the directory Data/data/XXX (XXX being meshes, polylines, points_2, points_3)

    Release Management

    • Affected package(s): LCC (for now)
    • Link to small feature here -- pre-approval date: 2021/01/18

    TODOs

    • [x] Try to remove .cmd files in examples
    • [x] Write a script detecting duplicated files and moving them + updating examples/tests using them
    • [x] write get_data_file_path() that will warn the user when the file does not exists + print CGAL_DATA_DIR
    small feature accepted small feature Tested cleaning Merged_in_5.4-beta1 Merged_in_5.4 
    opened by gdamiand 97
  • Add Octree Package

    Add Octree Package

    Summary of Changes

    New feature adding an Octree package to CGAL

    This PR adds a new package Octree. This is a tree data structure which subdivides 3d space, similar to kD_tree. The package will replace the Octree used in Shape Detection's RANSAC algorithm. When used with a 2d point type, the Octree becomes a Quadtree. See the GSoC wiki page for more information.

    Note: this is a Google Summer of Code Project

    Release Management

    • Affected package(s): Octree
    • Issue(s) solved (if any): none
    • Feature/Small Feature (if any): Features/Octree
    • Link to compiled documentation (obligatory for small feature): Manual
    • License and copyright ownership: GPL v3, GeometryFactory

    CHANGES.md

    ### [Quadtree, Octree and Orthtree](https://doc.cgal.org/5.3/Manual/packages.html#PkgOrthree) (new package)
    
    -   This package implements a tree data structure in which each node
        encloses a hypercubic section of space and each non-leave node has
        hypercubic children whose edge lengths are half its edge
        length. Such a data structure is known as a quadtree in 2D, an
        octree in 3D and is generalized as an "orthtree" in higher
        dimensions.
    

    TODO

    • [x] Replace RANSAC octree
    • [x] Complete documentation
    • [x] Feature page
    • [x] Remove large data file used for benchmarking
    • [x] Add Quadtree functionality
    • [x] @sloriot: check branch size
    feature accepted feature Tested gsoc gsoc-2020 Merged_in_5.3-beta1 Merged_in_5.3 
    opened by JacksonCampolattaro 82
  • Add basic viewers

    Add basic viewers

    Summary of Changes

    Add a global function CGAL::draw allowing to visualize a data structure. This function is only available with cgal-qt5 and if qglviewer is found.

    Release Management

    • Affected package(s): TDS_2, TDS_3, Surface_mesh, Polyhedron_3, Linear_cell_complex

    • Feature/Small Feature (if any): Basic_viewers

    • Fix #2611

    small feature accepted small feature Tested Merged_in_4.13 
    opened by gdamiand 77
  • Periodic_3_mesh_3, new package

    Periodic_3_mesh_3, new package

    Summary of Changes

    This feature introduces a new package to generate periodic meshes. This is achieved by creating an interface between the existing packages Mesh_3 and Periodic_3_triangulation_3.

    Feature developed with @MoniqueTeillaud, @aympelle .

    Release Management

    • Affected package(s): Mainly Kernel_23, Mesh_3, Periodic_3_mesh_3, Periodic_3_triangulation_3, Triangulation_3
    • Issue(s) solved (if any): fix #2134 , fix #570, fix #1927, fix #3040, fix #3011, fix #3175
    • Feature/Small Feature (if any): Features/Periodic_3_mesh_3
    Pkg::Mesh_3 feature accepted feature Tested Pkg::Periodic_3_mesh_3 Merged_in_4.13 
    opened by MaelRL 77
  • Surface mesh topology (new package)

    Surface mesh topology (new package)

    Please use the following template to help us managing pull requests.

    Summary of Changes

    Add a new package: surface mesh topology.

    This feature introduces a new package to compute topological invariants on surfaces. The first method provides allows to test if two cycles on a surface are homotopic. This method is used to provide two more functions: a first one to test if a cycle is contractible, a second one to test if two paths are based points homotopic.

    TODO:

    • [ ] Code review (?)
    • [x] Update CHANGES.md
    • [x] Check branch size
    • [ ] News entry

    Release Management

    • Affected package(s): Surface_mesh_topology
    • Feature: https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Surface_mesh_topology
    • License and copyright ownership: GPL; CNRS and Liris establishements
    feature accepted feature Tested Merged_in_5.1 
    opened by gdamiand 76
  • Polygon Mesh Processing triangulate hole with CDT 2

    Polygon Mesh Processing triangulate hole with CDT 2

    Summary of Changes

    This PR extends the solution for the issue #4464 that was proposed in the PR #4483.

    I have updated the Maxime's code and added simplicity and planarity checks. If the hole's boundary is near planar and its projection in 2D is simple, we use CDT2 to close the hole, otherwise we revert back to the original solution with the DT3.

    Release Management

    • Affected package(s): Polygon_mesh_processing
    • Issue(s) solved (if any): fix #4464, PR #4483
    • Feature/Small Feature (if any): Small Feature
    • Link to compiled documentation (obligatory for small feature): docs
    • License and copyright ownership: no changes
    bug small feature accepted small feature Tested Pkg::PMP Merged_in_5.3-beta1 Merged_in_5.3 
    opened by danston 73
  • Stream support: VTP and VTU writing functions

    Stream support: VTP and VTU writing functions

    Summary of Changes

    Add functions to write surface meshes, c3t3 and cdt to vtp and vtu format, without using the VTK lib, which avoids having to use intermediary structures.

    Release Management

    • Affected package(s):Mesh_2, Mesh_3
    • Small feature: https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/2D_and_3D_Mesh_Generation/VTK_output
    • Pre-approval date: 2018/01/17
    small feature accepted small feature Tested Pkg::Stream_support Merged_in_4.14 Merged_in_4.13.2 
    opened by maxGimeno 72
  • New package 'Polygonal Surface Reconstruction' and an extension of 'Solver Interface'

    New package 'Polygonal Surface Reconstruction' and an extension of 'Solver Interface'

    Summary of Changes

    • Polygonal Surface Reconstruction (New package).
    • Solver Interface. Added concepts and models for solving Mixed Integer Programming (MIP) problems with or without constraints. Documentation and examples are added accordingly.

    Some minor changes (to other packages)

    • In Alpha_shapes_2/include/CGAL/Alpha_shape_2.h, the following member functions are changed from private to protected (the implementation of the new package Polygonal Surface Reconstruction extended the Alpha_shapes_2 by inheriting from it). void initialize_interval_face_map(); void initialize_interval_edge_map(); void initialize_interval_vertex_map() void initialize_alpha_spectrum();
    • Added a missing header file, i.e., #include <boost/property_map/property_map.hpp> in Stream_support/include/CGAL/IO/PLY.h. Oherwise the code won't compile on Windows using MS compilers.

    Release Management

    Todo after merge

    • [x] news entry for cgal.org
    feature accepted feature Tested Pkg::Solver_interface Merged_in_5.0 
    opened by LiangliangNan 71
  • Mesh_3: Add weighted images

    Mesh_3: Add weighted images

    Summary of Changes

    Add 3D weighted images. For the moment I am not sure we want to document that, because we have no way to create the weighted images.

    TODO

    • [x] The API is not final.
    • [x] Documentation?
    • [x] Small feature
    • [x] filter the branch to remove the added and removed images (for @sloriot)

    Results

    Click to see

    Before

    Screenshot_20210408_181644

    After

    Screenshot_20210408_181702

    Release Management

    • Affected package(s): Mesh_3
    • Feature/Small Feature (if any): here, pre-approved by @lrineau 2021/10/01, see https://github.com/CGAL/cgal/pull/5597#pullrequestreview-768936887
    • Link to compiled documentation here
    • License and copyright ownership: unchanged
    Pkg::Mesh_3 small feature accepted small feature Tested Merged_in_5.4-beta1 Merged_in_5.4 
    opened by lrineau 66
  • Testsuite - Update Windows testing platforms

    Testsuite - Update Windows testing platforms

    Summary of Changes

    Sosno, Gauguin and Picasso no more are testing platforms for Windows. All the Windows testsuites have been moved to Christo and the setup is kept in a new repository cgal-testsuite-christo

    Release Management

    • Affected package(s): Maintenance
    cleaning Testsuite 
    opened by janetournois 0
  • egrep -> grep -E

    egrep -> grep -E

    https://github.com/CGAL/cgal/blob/9c9139ba50daa19bab71ea4a6e07b1ec11754807/Scripts/scripts/cgal_create_cmake_script#L62

    (picking one random occurence) https://lists.gnu.org/archive/html/grep-commit/2021-08/msg00050.html egrep and fgrep now produce a warning, it would be a good idea to replace them with grep -E / grep -F.

    opened by mglisse 1
  • Bad Interval_nt forward declaration in 5.4.x-branch

    Bad Interval_nt forward declaration in 5.4.x-branch

    https://github.com/CGAL/cgal/blob/017614c1f09020d90aac5a7b9837df41c7ae507a/Number_types/include/CGAL/NT_converter.h#L20-L22

    Interval_nt is forward declared, but in the wrong namespace. This was fixed in #6120. Without backporting the whole PR, I wonder if we could backport just this tiny piece to 5.4.x-branch, moving the declaration a few lines below.

    #ifndef NOBUG
    #include <CGAL/NT_converter.h>
    #endif
    #include <CGAL/Epeck_d.h>
    
    int main(){
      boost::multiprecision::mpq_rational q = 42;
      CGAL::NT_converter<boost::multiprecision::mpq_rational,CGAL::Interval_nt<>> c;
      c(q);
    }
    

    fails to compile with 5.4 and would be fixed by such a change.

    bug Has Pull Request 
    opened by mglisse 0
  • Add an overload of `repair_polygon_soup()` for ranges of arrays

    Add an overload of `repair_polygon_soup()` for ranges of arrays

    Summary of Changes

    This overload does not call functions that are meaningless for arrays (changing the size and splitting facets).

    Release Management

    • Affected package(s): PMP
    • Issue(s) solved (if any): fix #6693
    • Feature/Small Feature (if any): --
    • License and copyright ownership: no change
    enhancement Pkg::PMP 
    opened by MaelRL 0
Releases(v5.4.1)
Owner
The CGAL Project
CGAL is a software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library.
The CGAL Project
This repository is a study repository to implement the LCD 16x2 in my project below

This repository is a study repository to implement the LCD 16x2 in my project below. Index ?? About ?? Functionalities ?? Deploy ?? Requirements ?? Pi

Rickelme Dias 3 Jun 7, 2022
A headers only high performance C++ middleware framework/lib. See README for details.

# README # hmbdc is an open source headers only C++ framework and library built on top of various real-world tested lockfree algorithms that facilit

null 11 Jun 1, 2022
A basic C++ cryptocurrency/block-chain. Includes a basic wallet system. See README.md for all the inclusions and future additions.

Cryptocurrency Project C++ cryptocurrency/block-chain. Mostly basic blockchain for now. New Additions are in the works(see below). This file details w

null 2 Dec 23, 2021
Half-Life Singleplayer SDK 2.3, updated to compile with Visual Studio 2019. Provided as-is with no further support. See the README for more information.

Half Life 1 SDK LICENSE Half Life 1 SDK Copyright© Valve Corp. THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE CORPORATION (“Valve”). PLEASE

Sam Vanheer 5 Apr 9, 2022
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.3k Jun 27, 2022
Point in Polygon with 'CGAL'

The goal of insidecgal is to provide fast point in polygon lookup with cgal.

diminutive 3 Nov 12, 2021
Public repository for rolling release of main Vector robot code repository.

vector Public repository for rolling release of main Vector robot code repository. This rolling release will be worked to completion until all non-thi

Digital Dream Labs 54 Jun 5, 2022
Implement a program that recovers JPEGs from a forensic image, per the below.

Recover - CS50 Implement a program that recovers JPEGs from a forensic image, per the below. $ ./recover card.raw Background In anticipation of this

Vanessa Bauer 1 Oct 4, 2021
This program allows superheroes to fight against one another. Below is a sample output:

SuperHeroFight This program allows superheroes to fight against one another. This was a fun project that familiarized myself with pointers, dynamic me

null 1 Oct 29, 2021
The given files contains a coded algorithm for a program of "OMR Evaluation" With negative marking below are brief info regarding its feature

OMR-Evalution The given files contains a coded algorithm for a program of "OMR Evaluation" With negative marking below are brief info regarding its fe

Harsh Shrivastava 4 May 14, 2022
https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/

\mainpage json-c Overview and Build Status Building on Unix Prerequisites Build commands CMake options Testing Building with vcpkg Linking to libjson-

json-c 2.5k Jun 22, 2022
Chaste - Cancer Heart And Soft Tissue Environment - main public repository

Chaste - Cancer Heart And Soft Tissue Environment - main public repository

Chaste - Cancer Heart and Soft Tissue Environment 89 Jun 26, 2022
Public/backup repository of the GROMACS molecular simulation toolkit. Please do not mine the metadata blindly; we use https://gitlab.com/gromacs/gromacs for code review and issue tracking.

Welcome to the official version of GROMACS! If you are familiar with Unix, it should be fairly trivial to compile and install GROMACS. GROMACS uses o

Gromacs 430 Jun 24, 2022
Public Code Repository of the iRotate Active SLAM for Omnidirectional robots at the Max Planck Institute for Intelligent Systems, Tübingen

iRotate: Active Visual SLAM for Omnidirectional Robots This repository contains the code of iRotate, an active V-SLAM method submitted to RA-L + IROS2

Elia Bonetto 32 May 31, 2022
Public repository for the HPPS course

Syllabus and Material for High Performance Programming and Systems (HPPS) Welcome to the course website for HPPS! While assignment handin is still on

DIKU 18 Apr 2, 2022
This is a public repository which contains various topic wise coding problems on Ds and Algo

This repo will be partcipating in the Hacktoberfest 2021. Readme Credit goes to @Saumya ?? ?? All Noobs and pro PR's Are Welcome ?? ?? This repository

John Abraham 11 Feb 21, 2022
Public repository for Beerbox project.

Beerbox v1.0 - Public Repository This is a public repository for an "IoT Project"-course project called Beerbox. Difference between the private and pu

null 2 Dec 23, 2021
Rp-pppoe - Public repository for RP-PPPoE PPPoE client and server software

RP-PPPoE - a PPPoE client, relay and server for Linux RP-PPPoE is a PPPoE client, relay and server for Linux. It can run completely in user-mode or us

Dianne Skoll 12 Jun 19, 2022
This repo is for competitive coders. In the readme file you will get the list of questions. You can contribute by adding your solutions or by providing the optimized solutions which are answered already.

Hello, Problem Solvers !!! ?? What it's about? ??‍?? This repository is for Competitive Coders to get started with Open-source. ?? We have curated a l

null 2 Oct 22, 2021
Raise Genuine PRs only. Your PRs will be accepted, keep patience. Star This Repo. You aren't allowed to Update README.md

Welcome To Hacktoberfest 2021 Link To HacktoberFest 2021 Event details : Hacktoberfest® is open to everyone in our global community. Whether you’re a

null 4 Feb 17, 2022
Go through the readme... fork ....add....send a pull request .... get yourself in the contribution list...Plant the tree

Hacktoberfest 2021 Follow the README below to get started! Table of contents Getting Started The Process The Process star this repo Fork this reposito

Aditya Deshmukh 6 Jan 5, 2022
Hello, Welcome to this repo. don't forget to read guidelines in readme.md

Hacktoberfest_2021 If you looking for your first contribution, we are here to help. Just create a simple program using any language you like in our fo

Wafa Rifqi Anafin 119 Jun 26, 2022
Raise Genuine PRs only. Your PRs will be accepted, keep patience. Star This Repo. You aren't allowed to Update README.md

Hacktoberfest 2021 Link To HacktoberFest 2021 Event details : Hacktoberfest® is open to everyone in our global community. Whether you’re a developer,

null 26 Dec 24, 2021
Please consider reading the README.md

cs50xweek4 Hi my name is ali and im graduated from cs50xharvard (Introduction to computer science) Please consider that all the contents are for educa

Juice Wrld 1 Dec 22, 2021
Please consider reading the README.md

cs50xweek5 Hi my name is ali and im graduated from cs50xharvard (Introduction to computer science) Please consider that all the contents are for educa

Juice Wrld 1 Dec 22, 2021
C++ (with python bindings) library for easily reading/writing/manipulating common animation particle formats such as PDB, BGEO, PTC. See the discussion group @ http://groups.google.com/group/partio-discuss

Partio - A library for particle IO and manipulation This is the initial source code release of partio a tool we used for particle reading/writing. It

Walt Disney Animation Studios 400 Jun 20, 2022