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.5
Or using the Package Manager:
Install-Package OpenGJKSharp -Version 0.0.5
Here 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: true
The following image illustrates the collision between the two cubes: