Circle collision in JavaScript

Your check should be if (a > Math.sqrt((x*x) + (y*y))) http://cgp.wikidot.com/circle-to-circle-collision-detection

So the complete code is

function collision(p1x, p1y, r1, p2x, p2y, r2) {
  var a;
  var x;
  var y;

  a = r1 + r2;
  x = p1x - p2x;
  y = p1y - p2y;

  if (a > Math.sqrt((x * x) + (y * y))) {
    return true;
  } else {
    return false;
  }
}
var collision = collision(5, 500, 10, 1000, 1500, 1500);
console.log(collision);


and for a less computational implementation (using ES7 syntax for the snippet) use

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);

as Darek Rossman shows in his answer.


In your if statement, try this instead:

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