{"repo":"MattiaMontanari/openGJK","free":true,"listed":false,"github":"https://github.com/MattiaMontanari/openGJK","clone":"git clone https://github.com/MattiaMontanari/openGJK.git","description":"Fast and reliable implementation of the Gilbert-Johnson-Keerthi (GJK) algorithm for C, C++, C#, Go, Matlab, Octave, Python and Zig","language":"C++","stars":206,"topics":["collision","convex-polytopes","gjk","gilbert-johnson-keerthi","algorithm","c","golang","python","cython","octave"],"license":"GPL-3.0","category":"game-templates","readme_excerpt":"OpenGJK A fast and robust implementation of the Gilbert-Johnson-Keerthi (GJK) algorithm and Expanding Polytope Algorithm (EPA) for convex collision detection. Available in three flavors: - Scalar ( scalar/ ): Portable C implementation of GJK (minimum distance) and EPA (penetration depth, contact normal, witness points), with interfaces for C#, Go, Matlab, Python, and Zig - SIMD ( simd/ ): High-performance C++ implementation using Google Highway for automatic SIMD acceleration (SSE4, AVX2, AVX-512, NEON) - GPU ( gpu/ ): CUDA implementation with warp-level parallelism for batch collision detection on NVIDIA GPUs, including GJK and EPA A Unity Plug-in is also available in another repository. Useful links: API references, documentation and automated benchmarks. Getting started On Linux, Mac or Windows, install a basic C/C++ toolchain - for example: git, compiler and cmake. Prerequisites Required: - Git - C/C++ compiler (GCC, Clang, or MSVC) - CMake (version 3.5 or higher) Recommended for faster builds: - Ninja build system (provides 60% faster compilation) Next, clone this repo: Then use these commands to build and run an example: The successful output should be: Distance between bodies 3.653650 However, if you do get an error - any error - please file a bug. Support requests are welcome. CMake Options OpenGJK supports several build options to customize compilation. Use them by passing -D = to cmake: Global Options (root CMakeLists.txt) Option Default Type Description -------- --","default_branch":null,"files":null,"tree":[],"storefront":"/r/MattiaMontanari","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/MattiaMontanari/openGJK/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}