2017-01-11 1 views
-2

J'ai écrit un cercle pour encercler la fonction de collision mais je pense que j'ai fait une petite erreur et je ne peux pas voir pour le trouver.Cercle à la fonction de collision de cercle Javascript

function testCollisionArc(arc1,arc2){ 
 
    return arc1.x + arc1.r + arc2.r > arc2.x 
 
    && arc1.x < arc2.x + arc1.r + arc2.r 
 
    && arc1.y + arc1.r + arc2.r > arc2.y 
 
    && arc1.y < arc2.y + arc1.r + arc2.r 
 
}

+0

Quel est le problème que vous voyez? Et pouvez-vous ajouter un exemple qui produit ce résultat? – Joffutt4

+0

S'il vous plaît expliquer où avez-vous cette erreur, ou ce qui se passe mal –

+0

il devrait être relativement évident pour quiconque capable de répondre à cette question que le code en question ressemble plus à un test d'intersection de boîte qu'un test de cercle – Alnitak

Répondre

1

Un cercle bords hasnt et des bordures (: 0). Vous devez obtenir la distance entre les deux:

var distance=Math.sqrt(Math.pow(arc1.x-arc2.x,2)+Math.pow(arc1.y-arc2.y,2));//the 'sentence of Pythagoras' as we say in German 
return arc1.r+arc2.r>distance; 
+0

'^ 2' isn 't correct javascript (c'est légal, mais pas correct dans ce contexte) – Alnitak

+1

et maintenant votre code est réellement incorrect – Alnitak

+0

Vous pouvez utiliser '**' pour augmenter à la puissance, mais seulement sur les navigateurs modernes. (Chrome, Firefox) ou utilisez babel. Ainsi 2 à la puissance 4 est '2 ** 4' et la racine cubique de 2 est' 2 ** (1/3) '. Il y a aussi la fonction mathématique 'Math.hypot (x, y)' retourne l'hypoténuse et supporte plusieurs dimensions 'Math.hypot (x, y, z, w)' retourne la longueur du vecteur 4D '{x, y, z, w} ' – Blindman67