Skip to content
Mael Rouxel-Labbé edited this page Mar 28, 2024 · 1 revision

Table of Contents

GSoC 2019 Accepted Projects

The CGAL Project was a mentoring organization of the Google Summer of Code 2019. Check out the 9 successful projects there.

GSoC 2019 Projects

Below are the project ideas that were proposed during the Google Summer of Code 2019.

Vector Heat Method

Mentor(s): Keenan Crane and Jane Tournois

This project is the follow up project of the GSoC 2018 project The Heat Method. You should only apply if you are a student in geometry processing and can read this paper. The project is about implementing this publication, so you should also be fluent in C++ and have used CGAL in any of your student projects.

Contact: kmcrane@cs.cmu.edu and jane.tournois@geometryfactory.com

kDOP Tree

Mentor(s): Fehmi Cirak and Andreas Fabri

Project description: The CGAL library offers an axis-aligned bounding box tree as search structure. Axis aligned bounding boxes (AABB) can be generalized to discrete oriented polytopes with k-directions (k-DOP), and the AABB Tree can be generalized to a k-DOP Tree. The goal of this project is to take an implementation developed at the CSMLab of Cambridge University, and to integrate it into the CGAL library. This integration is a transformation of an existing data structure, so that it has the look and feel of CGAL components.

Required Skills: C++, generic programming

Contact: fc286@cam.ac.uk and andreas.fabri@geometryfactory.com

Make OpenGR able to work directly with CGAL point clouds.

Mentor(s): Nicolas Mellado and Simon Giraudot

Project description: A wrapper to the OpenGR for global registration of point clouds was recently added in the CGAL library. In the current version, the memory for storing the point has to be duplicated due to the current API of OpenGR. The goal of this project is to integrate into OpenGR an abstraction layer around the point and normal type so that the CGAL types (among other) can be directly used. The second objective is to have a new wrapper to the pointmatcher library that will provide an ICP method that can be applied after the global registration to a CGAL point cloud.

Required Skills: C++, generic programming

Contact: simon.giraudot@geometryfactory.com

Compute a shortest non-contractible cycle on a surface

Mentors: Guillaume Damiand and Francis Lazarus

Project description: A new package about computation of some topological invariants on surfaces is under development in CGAL. The goal of this project is to add a new method in this package in order to compute a shortest non-contractible cycle on a given surface. The goal is to implement the algorithm described in this paper (Algorithms for the edge-width of an embedded graph, Sergio Cabello, Éric Colin de Verdière, Francis Lazarus, Computational Geometry, Volume 45, Issues 5–6, 2012, Pages 215-224).

Required Skills: Computational geometry, C++, generic programming

Contacts: guillaume.damiand@liris.cnrs.fr and Francis.Lazarus@gipsa-lab.grenoble-inp.fr

Basic viewers in CGAL

Mentor: Guillaume Damiand

Project description: CGAL provides now basic viewers, i.e. global functions allowing to visualize in 3D some CGAL data-structures. These small viewers are very usefull in order to visualize the result of an algorithm, and can help to debug some code. For now, 5 basic viewers exist, for Polyhedron, Surface_mesh, Triangulation_2, Triangulation_3 and Linear_cell_complex. The goal of this project is to develop more basic viewers for other CGAL data-structures.

Required Skills: C++, generic programming

Contact: guillaume.damiand@liris.cnrs.fr

Generalized Global Regularization

Mentor: Dmitry Anisimov

Project description: The goal of this project is to create a new CGAL package that combines the global regularization algorithm from Section 3 in this paper and all other regularization techniques already available in CGAL.

The main task is to create a generic API for the global algorithm above such that it can handle arbitrary input items, connectivity among items, and regularization conditions. When this API is ready, the 2D instance of this algorithm for regularizing 2D lines in a plane should be implemented. If time allows, the student can also work on a 3D version for regularizing planes.

Input: As a starting point for the student, I already have the 2D working and quite well-tested version of the algorithm to use it as a reference when working on the new code.

Support: Concerning me as a mentor, I have some experience with applying different regularization techniques, including the one discussed. I also implemented this algorithm in 2D and have some ideas on how to improve its API. This is my second GSoC as a mentor and so I know the process quite well.

Impact: By implementing this change, the student will make a great impact onto current geometry processing pipelines and, in particular, it will be very useful in the urban reconstruction topic.

Required Skills: C++, generic programming, quadratic programming, basic geometry

Contact: dmitry.anisimov@inria.fr

Enhancing the 2D Arrangement Demo (1)

Mentor: Efi Fogel

Project description: Currently the demo supports (linear) segments, polylines, conic arcs, linear curves, circular arcs, and algebraic curves to some extent. The goal of this project is to enhance the 2D arrangement demo to support additional types of curves, namely, Bezier curves and algebraic curves.

This is a perfect project for GSoC. A developer that commits to pursue the goals of this project will learn to use the "2D Arrangement" package, other components of CGAL, and other libraries, such as QT. The purpose of the CGAL demos is to demonstrate the potential of the various components of CGAL using visual effects. The excitement and satisfaction, a developer of an application experience, are always enhances when visual effects are exploited. Demo programs of CGAL show the capabilities of the library and help the community evaluating it. A potential user can quickly determine whether a specific component of CGAL can be used to solve a problem she or he may have and how to go about it.

Required Skills: Computational geometry, C++, generic programming, 3D Graphics.

Contacts: efifogel@gmail.com

Enhancing the 2D Arrangement Demo (2)

Mentor: Efi Fogel

Project description: Currently the demo supports only arrangements in the plane. The goal of this project is to enhance the 2D arrangement demo to support 2D arrangements not only embedded in the plane, but also embedded in certain surfaces in space, e.g., arrangements of arcs of great circles embedded in the sphere. This is an upcoming feature of the "2D Arrangements" package.

Like the project above, this is also a perfect project for GSoC. A developer that commits to pursue the goals of this project will learn to use a significant upcoming feature of the "2D Arrangements" package that supports 2D arrangements on 3D surfaces. Similar to the project above, the developer will learn to use other components of CGAL, and other libraries, such as QT. The purpose of the CGAL demos is to demonstrate the potential of the various components of CGAL using visual effects—an enjoyable side effect of developing such applications especially when 3D graphics is involved. Demo programs of CGAL show the capabilities of the library and help the community evaluating it. A potential user can quickly determine whether a specific component of CGAL can be used to solve a problem she or he may have and perhaps how to go about it.

Required Skills: Computational geometry, C++, generic programming

Contacts: efifogel@gmail.com

Enhancing the 2D Regularized Boolean Set Operations Demo

Mentor: Efi Fogel

Project description: The "2D Regularized Boolean Set Operations" package consists of the implementation of Boolean set-operations on point sets bounded by x-monotone curves in 2-dimensional Euclidean space. In particular, it contains the implementation of regularized Boolean set-operations, intersection predicates, and point containment predicates. The demo program demonstrates all operations of this package and later on of the 2D Minkowski sum package as well.

This project is an excellent project for a brilliant student who wishes to gain experience with developing applications from an early stage using CGAL, Boost, and Qt5 (among the other). The demo was developed as a project of GSoC last year, and it is in its diapers, sort of speaking, so there is plenty of room for forward thinking without to much uprooting.

Required Skills: Computational geometry, C++, generic programming

Contacts: efifogel@gmail.com

Implementing a Fast Distance Computation between Triangle Meshes

Mentor: Young J. Kim and Sebastien Loriot

Project description: Based on TANG, Min, LEE, Minkyoung, et KIM, Young J. Interactive Hausdorff distance computation for general polygonal models. In : ACM Transactions on Graphics (TOG). ACM, 2009. p. 74., this project consists in implement a fast and bounded error of the Hausdorff distance between two triangle meshes. As an extension, the minimal distance between two triangle meshes will also be implemented using the same method. Existing CGAL components will be used internally to perform the various operations described in the research article (AABB-Tree, BGL, ...). The function will ultimately replace/complement the existing one in the Polygon Mesh Processing package.

Required Skills: Geometry Processing, C++, generic programming

Contacts: sebastien.loriot@cgal.org

Information Candidates Should Supply

The application process has several steps. Before contacting anybody verify that you are eligible, that is that you are enrolled as student, don't get a tuition fee, etc. The next step is to contact the mentor of the project you are interested in. You have to convince him that you are the right person to get the job done. The next step is to work out more details and to contact the mentoring organization by providing the following information by email to gsoc-cgal@inria.fr:

  • Project:

    • Select a project in the list and provide your personal and detailed description. If you wish to work on another idea of your own, we are pretty open as long as this serves the goal of consolidating CGAL as a whole.
    • Provide a proposal of a technical solution with your envisioned methodology. The more detailed the better.
    • Explain how the solution will be available to the user, in which form. Do not forget the documentation, unitary tests and cross-platform aspects.
    • Provide a realistic schedule with objectives (one every two weeks for example) and deadlines. Focus on mid-term objectives as well as on the final evaluation.
    • Provide a formal commitment that you will be involved full time on the GSoC. This is absolutely mandatory.
  • Personal data:

    • First name, last name, affiliation and geographical location.
    • A brief list of the main studies and programming courses attended, with ranking.
    • List of the most important software projects contributed and success.
    • Which are your best skills in terms of programming and scientific computing?
    • In general what is your taste in terms of programming? language, methodology, team work, etc.
    • Is there anything that prevents you from working full time on the project during the program period?
    • How do you see your involvement after the program ends? Do you see yourself pushing the project further, or do you see yourself contributing to other CGAL projects?
    • Are you more interested in the theory/scientific aspect of CGAL, or do you feel more like a hacker?
    • What are your long-term wishes in terms of job?

Previous Project Ideas and Successful Projects

Clone this wiki locally