GJK

C++ DirectX 11 Tech Demo [3D] (2022)
3D Collision Detection

What Is GJK?


The Gilbert, Johnson and Keerthi algorithm (GJK) is a fast simplex-based algorithm for detecting collision in multiple dimensions. This project is an implementation of GJK in 3D using DirectX 11 and C++ that illustrates how GJK works with an interactive GUI using ImGui.

Tell Me More!


The program can determine convex collision for any two objects to a high degree of accuracy while being ran in real-time, making it suitable for 3D games. This was done as my final year project for Computer Games Programming where I researched many different collision detection algorithms for 3D games.

What I Learned/Achieved


This project showed me the value of in-depth research into a topic rather than finding the nearest resource in a web search and stopping there. The project gave me the opportunity to focus exclusively on the algorithm and learn what makes the majority of 3D collision detection algorithms in terms of mathematics. Additionally, I was able to explore creating an illustration of an algorithm for the first time. This gave not only educational value to the program but also allowed for visual debugging during unexpected results. This became very useful when I encountered floating point precision problems during development.

What Could Be Improved?


This project is just an interactive demo and GJK could be used in an actual application like a 3D game. If GJK and the application were separated to make an open-source collision library, it would increase the usefulness of the project.

Conclusion


My first time doing academic research yielded a neat application showcasing GJK in 3D.

Back
GitHub LinkedIn
© 2023 Arrien Bidmead