Tester la collision entre deux cercles (shape)

Signaler
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009
-
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009
-
Bonjour,

J'aimerais tester la collision entre deux shape (2 cercles).

Merci
Orélien.

2 réponses

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Salut,

Il y a collision si la distance entre les centres est inférieure à la somme des rayons. Pareil avec les carrés des distances

procedure TForm1.Initialisation;
begin
  Rayon1 := Shape1.Height / 2;
  Rayon2 := Shape2.Height / 2;
  DeltaRayon := Rayon2-Rayon1;
  Limite := Sqr(Rayon1 + Rayon2); //carré de la somme des rayons
end;

Function TForm1.Contact : boolean;
var
  x : real;
begin
  DeltaLeft := Shape2.Left - Shape1.Left;
  DeltaTop  := Shape2.Top  - Shape1.Top;
  DeltaX := DeltaLeft+DeltaRayon; // Ecart horizontal
  DeltaY := DeltaTop+DeltaRayon; // Ecart vertical
  x := Sqr(DeltaX) + Sqr(DeltaY);   // Carré de la distance
  Result := x < Limite;
end;


Il faut bien sûr que les propriétés Height et Width de chaque TShape soit égales.

Kénavo

Code, Code, Codec !
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009

Salut,

Merci beaucoup, c'est ce que je voulais !

Merci !
Orélien.