Je suis conscient de la façon de vérifier si deux cercles se croisent les uns des autres. Cependant, parfois, les cercles se déplacent trop rapidement et finissent par éviter la collision sur la trame suivante. p>
Ma solution actuelle au problème est de vérifier la collision de cercle de cercle une quantité arbitraire de fois entre la position précédente et sa position actuelle. p>
Y a-t-il une manière mathématique de trouver le temps qu'il faut pour les deux cercle de collision? Si je pouvais obtenir cette valeur de temps, je pourrais déplacer le cercle vers la position à ce moment-là, puis la collecter à ce point. p>
EDIT: VELOCITÉ CONSTANT P>
3 Réponses :
Vous pouvez prédire la collision en utilisant le vecteur et la vitesse de la direction, cela vous donne les étapes suivantes et quand elles feront une collision (s'il y aura). P>
Vous avez juste besoin de vérifier l'algorithme de croisement de la ligne pour détecter que ... p>
Eh bien, j'ai la position, la vitesse et la direction toutes accessibles pour utiliser n'importe quel algorithme dont j'ai besoin. Je peux déjà détecter suffisamment les collisions circulaires. C'est juste que mon projet met à jour tous les 1 / 60e d'une seconde.
Je suppose que le mouvement des cercles est linéaire. Disons que la position du centre de Circle A est donnée par l'équation de vecteur De même pour Cercle B's Center: alors vous voulez trouver t telle que Staring des deux côtés: à partir de celui que vous devriez obtenir un polynôme quadratique que vous pouvez résoudre pour T (si un tel T existe). P> ca = oa + t * da code> où p>
ca = (CAX, CAY) code> est la position actuelle de
oa = (ouax, oay) code> est la position de départ de
t code> est le temps écoulé
da = (DAX, jour) code> est le déplacement par unité de temps (vitesse). P>
CB = OB + T * DB CODE>. P>
|| ca - cb || = (RA + RB) code> où
ra code> et
rb code> sont les rayi de cercles A et B respectivement. p>
|| CA-CB || ^ 2 = (RA + RB) ^ 2 Code>
et en expansion:
(Oax + T * DAX - OBX - T * DBX) ^ 2 + (oay + t * jour - oby - t * dby) ^ 2 = (RA + RB) ^ 2 code> p> P>
Merci beaucoup! Travaillé comme un charme.
C'est une excellente équation .. mais malheureusement, mon algèbre est rouillée. Comment réorganiserait-on que l'équation à résoudre pour T dans un cycle est tombé en couple?
@Mattkenefick Voir ici .
Voici un moyen de résoudre l'équation dans l'excellente réponse d'Andrew Durward.
Pour simplement brancher des valeurs, on peut passer au bas. P>
(a != 0) && (b^2 >= 4ac)
C'est un peu vague. Quel est le modèle de mouvement de vos cercles? vitesse constante ??
Vélocité constante, oui. Désolé, je ne suis pas à 100% comment poser cette question. J'ai cherché de nombreux résultats uniquement pour me rappeler que je ne suis pas le meilleur de la physique.
Oui il y a un moyen. Oui, je suis sûr que c'est un calcul simple. Cependant, je n'ai aucune idée de ce que c'est :( Je sais que c'est un calcul assez basique cependant.
Zut. Eh bien, si vous avez des conseils, faites le moi savoir. :)