# libigl - Google Summer of Code 2015 Project Ideas

## Automatic Generation of Python/MATLAB bindings

Libigl is a C++ library, but its functional interface make it very friendly to wrapping individual functions for popular scripting languages like Python or MATLAB. Since many libigl functions have the form “mesh in” –> “mesh out” or “mesh with scalar field in” –> “scalar field out”, we would like to develop an automatic routine for generating Python and MATLAB bindings for libigl functions. This project has three parts: 1) determining the necessary mark up (e.g. comments) inside libigl header files to determine the Python interface, 2) writing a program to parse this mark up and generate valid Python bindings and compilation instructions, and 3) validating and testing these results on a variety of functions in the library.

Student: apply

Mentors: Alec Jacobson & Daniele Panozzo

## Topological Mesh Operations

Libigl avoids complicated mesh data-structures to ensure that its interface is clean and easy to port into users’ existing projects. Our mesh format is a simple list of vertices and list of face indices to those vertices: `V` and `F`. We have a number of functions for deforming a mesh: that is, modifying the entries in `V`, but currently lack functions for modifying the mesh’s topology: that is, modifying `F` and/or modifying the size of `V`. This project entails implementing efficient routines for: edge collapse, edge splitting, and edge flipping. The project will culminate in a routine combining these core functions for surface remeshing.

Student: apply

Mentors: Alec Jacobson & Daniele Panozzo

## Contact

Google Summer of Code projects with libigl are mentored by Alec Jacobson and Daniele Panozzo. Please contact us if you have questions, comments or other ideas for a fun summer of hacking on libigl.