Rebonds entre 2 cercles (ou deux boules)

Soyez le premier à donner votre avis sur cette source.

Vue 6 108 fois - Téléchargée 611 fois

Description

Suite à une question sur le forum, j'ai décider de poster ce code qua j'avais fait il y a quelques temps. Je l'ai arangé un peu, et ça fonctionne nikel.

Pour tester la collision, on teste tout simplement si la distance entre le centre des cercles est infèrieur à la taille de leurs rayons.

Pour calculer la distance, on utilise pythagore ( d = x² + y² ).

Ensuite, on inverse ou non les vecteur de directions en fonction du type de collisions.

Conclusion :


Le fonction peut surement être encore amélioré, mais ça suffit comme ça je trouve.

Note : jai mis initié, car il faut quelques connaissances en math... Mais le code est très simple.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
26 août 2004

[re-mea culpa]
j'avais aussi zappé le /2 de la première partie, avant le < ...

bref mieux vaut tout simplement supprimer le /2 de chaque côté

moins il y a de code mieux les vaches sont gardées :)
Messages postés
3
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
26 août 2004

[mea culpa]
pour la rectif, je voulais bien sûr dire
if (f * f) + (g * g) < (c1.Width*c1.width) / 4

et non pas /2 comme avant

c'est pas moi c'est le C-c C-v !
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
4
oui, mon code est pour les surfaces courbes, je suis aller trop loin faut croire lol

sauf pythagore fonctionne quand tu as toutes les dimention, sauf là, il t,en manque

bof au pire, la loie des Sin va pouvoir fonctionner pour trouver les angles
Messages postés
1468
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
1
oui ripounet, tu as bien raison...
Il faut que je change ça aussi. je le fais dès que jarrive chez moi ;-)
Messages postés
3
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
26 août 2004

[utilisation de pythagore]
Hop hop hop on se calme avec les racines carrées! ça coute cher en cycles processeur et pour les jeux c'est pas négligeable!

scalp, ton code est environ :
if Sqr((f * f) + (g * g)) / 2 < c1.Width / 2

alors que celui-ci serait tellement moins couteux:
if (f * f) + (g * g) < (c1.Width*c1.width) / 2


bref en règle générale, il vaut mieux travailler avec
z² = x² + y²

que avec
z = sqr(x²+y²)
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.