9
votes

Collision de cercle en JavaScript

Pour l'école, je dois faire un programme en JavaScript indiquant si les cercles avaient une collision.

Il n'a pas besoin d'être montré graphiquement.

Je l'ai essayé, mais mon code ne semble pas fonctionner. Comment puis-je résoudre le problème?

Voici le code que j'ai produit: xxx


4 commentaires

Tu n'as pas manqué quelque chose dans tes formules ici?


Et vous pouvez modifier votre déclaration de retour à juste retour (A> (x * x) + (y * y)); plutôt que d'utiliser un si pour retourner vrai ou faux, car c'est ce que c'est la condition déjà est. Ou mieux, stockez la condition dans une variable nommée var iSCollision = (A> (x * x) + (y * y)); et retour ISCollision; il fait juste il est plus facile de lire. Et ne réutilisez pas de noms de variables comme la collision pour deux choses.


Relire la formule de distance. Vous l'avez presque fait, mais il manque une partie.


Un bon moyen de déboguer des problèmes est de passer à travers le code.


3 Réponses :


0
votes

la longueur d'un triangle ayant des côtés dx et dy (c'est-à-dire la distance entre les points (x1, y1) et ( x2, y2) dx = x2 - x1 et dy = y2 - y1 ) est égal à: xxx

Donc, vous voulez probablement: xxx


0 commentaires

11
votes

Votre chèque doit être si (a> math.sqrt ((x * x) + (y * y))) code> http://cgp.wikidot.com/circle-a-circle-collision- Détection

donc le code complet est p>

p>

const checkCollision = (p1x, p1y, r1, p2x, p2y, r2) => ((r1 + r2) ** 2 > (p1x - p2x) ** 2 + (p1y - p2y) ** 2)

var collision = checkCollision(5, 500, 10, 1000, 1500, 1500);
console.log(collision);


0 commentaires

3
votes

Dans votre relevé si em>, essayez cela à la place:

if ( a * a > (x * x + y * y) ) {
    ...
} else {
    ...
}


0 commentaires