Круг Столкновение Javascript - PullRequest
4 голосов
/ 30 ноября 2011

Здравствуйте, мне нужно сделать для школы программу на Javascript, в которой говорится, что круги столкнулись. Это не должно быть показано в графическом виде.

Я попробовал, но мой код не работает.

Надеюсь, вы поможете мне с сценарием.

Вот мой код, который я произвел.

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 > (x*x) + (y*y)) {
        return true;
    } else {
        return false;
    }   
}
var collision = collision(5, 500, 10, 1000, 1500, 1500);
alert(collision);

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

Ваш чек должен быть if (a > Math.sqrt((x*x) + (y*y)))
http://cgp.wikidot.com/circle-to-circle-collision-detection

Итак, полный код

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);
2 голосов
/ 30 ноября 2011

В своем утверждении if попробуйте вместо этого:

if ( a * a > (x * x + y * y) ) {
    ...
} else {
    ...
}
0 голосов
/ 30 ноября 2011

Длина треугольника со сторонами dx и dy (т.е. расстояние между точками (x1, y1) и (x2, y2), где dx = x2 - x1 и dy = y2 - y1) равна:

sqrt(dx^2 + dy^2)

Так что вы, вероятно, хотите:

if(a > Math.sqrt(x*x + y*y)) {
...