C'est plus simple de calculer l'intersection entre 2 capsules que 2 cylindres. Sinon, tu penses bien que le cylindre aurait remplacé la capsule dans les moteurs physiques.
Tu procèdes petit à petit:
Tu as 2 capsules avec une matrice de transformation local->globlal, un rayon, une demi hauteur, l'axe est y et la capsule est centrée dans le repère local.
Tu vérifies si les cylindres infinis sont en contact:
distance entre les 2 droites < somme des rayons des 2 capsules; non -> pas collision
matrice_transformation*[0,0,0,1] donne centre dans repère global
matrice_transformation*[0,1,0,0] donne direction axe capsule dans global
donc tu déduis les vecteurs directeurs des axes des capsules.
Après c'est trop compliqué à expliquer avec des mots:

Si les 2 segments colorés 1D sont distants de moins de la somme des 2 rayons ainsi que les centres des sphères (tester cette dernière propriété après pour gagner en temps de calcul), alors collision, d'ou l'avantage des extremités hemisphériques !
Donc la tu sais si tu as collision entre les 2 capsules.
Pour la direction des contacts, vu que tes balles vont vite et que tes capsules seront TRES interpenetrées, tu peux l'approximer sans produire d'abération physique avec l'axe du vecteur calculé pour le calcul des distances entre les deux axes des capsules (vecteur le plus "court" qui lie les 2 droites).
Si ce n'est pas très clair, fait le moi savoir.