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

Comments
  • 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
  • SMDS_3: Mesh_data_structure_3 - new package for C3T3

    SMDS_3: Mesh_data_structure_3 - new package for C3T3

    Summary of Changes

    This PR introduces a new package "Tetrahedral Mesh Data Structure 3" (TMDS_3 for short) that compiles existing code and concepts about the Mesh_complex_3_in_triangulation_3.

    With this change, the package Tetrahedral_remeshing does not depend on Mesh_3 anymore, but only on TMDS_3.

    Release Management

    • Affected package(s): Mesh_3, TMDS_3
    • Issue(s) solved (if any): fix #4810, #4125, #5789
    • Feature/Small Feature (if any): https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Add_new_MDS_3_package
    • Link to compiled documentation : SMDS_3
    • License and copyright ownership: unchanged (Inria)

    ToDo :

    • [x] keep the Surface_patch_index's from c3t3 to surface mesh in facets_in_complex_3_to_triangle_mesh()
    • [x] add figures in the user manual
    • [x] reduce branch size (@sloriot)
    • [ ] handle rewrite_rules after the release of the doc (the after merge ToDo is to add a ToDo in the release issue)
    • [x] fix #6098
    Pkg::Mesh_3 small feature accepted small feature Tested cleaning TODO after merge 
    opened by janetournois 94
  • 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
  • Ms 2 missed hole efif

    Ms 2 missed hole efif

    Summary of Changes

    Fixed a bug in Minkowski_sum_2. In particular, fixed the function get_point_in_face()

    Release Management

    • Affected package(s): Minkowski_sim_2
    • Issue(s) solved (if any): fix #5830
    • Feature/Small Feature (if any): NA
    • Link to compiled documentation (obligatory for small feature): NA
    • License and copyright ownership: Tel Aviv Univ.
    opened by efifogel 1
  • Mesh_3 - fix initialization of labeled images

    Mesh_3 - fix initialization of labeled images

    Summary of Changes

    When feature detection is enabled, and that all the features lie in a common plane (e.g. one of the faces of the bbox), the triangulation has dimension 2 before looking for connected components in the labeled image. This should be checked for.

    Release Management

    • Affected package(s): Mesh_3
    • License and copyright ownership: unchanged
    bug Pkg::Mesh_3 
    opened by janetournois 0
  • Fix seed computation in SLS offset computation

    Fix seed computation in SLS offset computation

    Summary of Changes

    When inputs have some collinear segments and an e0-e2 collinearity configuration appears, seed computation was wrongly assumed to simply always be the middle point between the two (collinear) segments.

    A first fix was done https://github.com/CGAL/cgal/pull/5213.

    Once the seed is known and the node has been created, the trisegment history takes care of reproducing the correct geometrical position during construction of the skeleton. However, when constructing an offset, we previously lost trisegment trees and only kept triedge information. Without the trisegment history, the code wrongly took the middle point again as seed.

    This PR makes it so we keep this history in mind (it's simply a boost intrusive pointer) rather than just the triedge.

    Release Management

    • Affected package(s): Straight_skeleton_2
    • Issue(s) solved (if any): fix #7149
    • Feature/Small Feature (if any): N/A
    • License and copyright ownership: no change
    bug Pkg::Straight_skeleton_2 Ready to be tested 
    opened by MaelRL 0
  • Polyhedron demo - display C3t3 of dimension < 3

    Polyhedron demo - display C3t3 of dimension < 3

    Issue Details

    Opening with the demo a c3t3.binary.cgal file that contains a Triangulation_3 of dimension 2 (or lower) does not display anything, even if it has vertices, edges, and in my case Mesh_3 protecting balls. It would be handy to be able to visualize it, whatever the intrinsic dimension is.

    Example data for a Triangulation_3 of dimension 2 mesh_after_protect_features.binary.cgal.zip

    Environment

    • CGAL version: master
    feature request CGAL 3D demo 
    opened by janetournois 0
  • PMP Hausdorff bug

    PMP Hausdorff bug

    Issue Details

    PMP bounded Haussdorf distance computation still has some issues, see e.g. https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-5.6-Ic-150/Alpha_wrap_3/TestReport_Christo_MSVC2017-Debug-64bits.gz.

    bug Pkg::PMP 
    opened by MaelRL 0
  • Triangulation_3: Memory leak in T_3 parallel (TBB)

    Triangulation_3: Memory leak in T_3 parallel (TBB)

    On https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-5.5.2-I-132/Triangulation_3/TestReport_lrineau_Fedora-Release.gz, asan complains about memory leaks for test_delaunay_3 and test_regular_3.

    Originally posted by @MaelRL in https://github.com/CGAL/cgal/issues/7115#issuecomment-1368871335

    bug Pkg::Triangulation_3 Parallel_tag 
    opened by lrineau 0
Releases(v5.5.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 15 Nov 6, 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 6 Oct 10, 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.6k Jan 8, 2023
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 63 Dec 19, 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 5 Oct 16, 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.6k Dec 31, 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 98 Dec 14, 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 487 Jan 7, 2023
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 36 Nov 25, 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 16 Oct 18, 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 10 Nov 3, 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