Documentation

The OpenGJK library

OpenGJK comes with extensive documentation.

Overview

OpenGJK is free and received contributions from many people. The development started in 2015 at Oxford University, with the goal of bringing GJK into engineering simulations. However all existing versions of GJK, or similar, algorithms did not provide a sufficient level of accuracy and robustness. An improved method was first published in ACM Transactions of Graphics and the same year was one of the three papers referred for SIGGRAPH 2017. The following year the software was release under the LGPL one year later with a publication on SoftwareX.

Showcases

This page shows how OpenGJK is used, or called, from within Neper, PyBullet and Unity. Get in touch if you know of other case studies that should complete this list. Neper Neper is a software package for polycrystal generation and meshing. It can deal with 2D and 3D polycrystals with a very large number of grains. This software is used extensively to model morphologies obtained from experimental inspections, including X-Rays.

Benchmarks

The OpenGJK library is continuously tested for accuracy and performance. This page shows the result of benchmarks that test the runtime performance of the library. This page is automatically updated each time a new version of the library is released. It serves as a dashboard that quickly summarizes where recent development has led to - in terms of speedup. Latest Run The latest benchmarks ran on a shared virtual machine (GitLab CI runner).

Examples

The GitHub repository contains may examples on how to invoke OpenGJK from various languages and packages. These are listed and briefly described below. C and C++ After cloning the repository, open a terminal window in the parent folder of OpenGJK and type: cmake -E make_directory build cmake -E chdir build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build build cmake -E chdir build/examples/c/ ./example_lib_opengjk_ce If you get an error, make sure you have CMake and a modern C compiler.

Verification

Interactive visualization of cross-validation tests comparing the baseline implementation against a new method under development. S1D Tests S2D Tests S3D Tests Origin Input Simplex Baseline (■) New (●) { "imports": { "three": "https://unpkg.com/three@0.160.0/build/three.module.js", "three/addons/": "https://unpkg.com/three@0.160.0/examples/jsm/" } }