Fermer2
Pim89Le 13/02/2007 à 14:57
Bonjour à tous (ça fait un bail),

j'imagine que le sujet à déjà été traité 10 fois mais je n'arrive pas à mettre la main dessus en cherchant dans les archives.

Je cherche un moyen rapide de détecter une collision 2D entre un cercle (définit par son centre xc, yc et son rayon r par exemple) et un rectangle qu'on connait par son coin supérieur gauche et son coin inférieur droit.
La collision doit être parfaite ! pas question d'approximer le cercle par un rectangle.

La méthode que j'ai pour l'instant est un peu longue:
- si le centre se trouve "compris" entre les extrémités d'une face, je regarde la distance R du centre à cette face, pour voir si R <= r

___O
______
|_____|

ce cas correspond au collision brute vers le bas, ou haut, ou gauche ou droite
- si le centre est situé en "dehors" des faces, je test si une des distances au 4 coins est inférieure à r

O -______
__|

ce cas correspond aux collisions dans les angles que ne gère pas le test précédant.

Merci.

PS: évidemment on peut ne pas se lancer dans tout ces tests en regardant au préalable si la distance entre le centre du cercle et le centre du rectangle sont espacées de plus de rayon_balle + grand_côté_rect/2. mais ça c'est une optimisation à part.