Détection de collisions 2D
✦ Description
- Environnement: C++, OpenGL
- Contexte: Projet de recherche
- Contexte: Projet de recherche
- Durée: 2 mois a mi-temps
- Equipe: Seul
- Durée: 2 mois a mi-temps
Ce projet de recherche avait pour but de me former sur la détection de collisions.
Le projet c’est déroulé en plusieurs parties :
- La Broad phase dans un premier temps, elle consiste a identifier les polygones potentiellement en collision en partitionnant l’espace de manière a grouper les polygones 2 par 2.
L’algorithme utilisé est « Bounding Volume Hierarchies » (BVH).
- La Broad phase dans un premier temps, elle consiste a identifier les polygones potentiellement en collision en partitionnant l’espace de manière a grouper les polygones 2 par 2.
![](https://www.lucasbenard.com/wp-content/uploads/2020/09/BVHBroadPhase-768x484.gif)
- La Narrow Phase ensuite pour déterminer si oui ou non ces paires de polygones sont en collision.
Pour cela j’ai utilisé l’algorithme de Minkowski pour obtenir la « somme des deux polygones » (en rose ci dessous).
Puis l’algorithme « GJK » pour connaitre, si il y en a, le point et le distance de collision.
- La Narrow Phase ensuite pour déterminer si oui ou non ces paires de polygones sont en collision.
![](https://www.lucasbenard.com/wp-content/uploads/2020/09/GJKNarrowPhase-768x447.gif)
![](https://www.lucasbenard.com/wp-content/uploads/2020/09/GJKNarrowPhaseDebug.gif)
- Et pour finir j’ai pu implémenté un début de réponse de collision (linéaire uniquement)
![](https://www.lucasbenard.com/wp-content/uploads/2020/09/Collision_Detection-768x432.gif)
![](https://www.lucasbenard.com/wp-content/uploads/2020/09/SimpleCollisionResponse.gif)