OpenGJKSharp is a C# native implementation of the GJK (Gilbert-Johnson-Keerthi) algorithm, designed for efficient collision detection between convex polyhedra in 3D space. This project is inspired by the original openGJK (written in C) and reimagined for the .NET ecosystem.
You can install OpenGJKSharp via NuGet:
dotnet add package OpenGJKSharp --version 0.0.5Or using the Package Manager:
Install-Package OpenGJKSharp -Version 0.0.5Here is an example of detecting a collision between two overlapping cubes:
using OpenGJKSharp;
// Cube 1
var a = new Vector3[]
{
new(0, 0, 0),
new(1, 0, 0),
new(0, 1, 0),
new(1, 1, 0),
new(0, 0, 1),
new(1, 0, 1),
new(0, 1, 1),
new(1, 1, 1),
};
// Cube 2
var b = new Vector3[]
{
new(0.5f, 0.5f, 0),
new(1.5f, 0.5f, 0),
new(0.5f, 1.5f, 0),
new(1.5f, 1.5f, 0),
new(0.5f, 0.5f, 1),
new(1.5f, 0.5f, 1),
new(0.5f, 1.5f, 1),
new(1.5f, 1.5f, 1),
};
bool hasCollision = OpenGJKSharp.HasCollision(a, b);
Console.WriteLine($"Collision detected: {hasCollision}"); // Outputs: trueThe following image illustrates the collision between the two cubes:
