圆碰撞Javascript

时间:2011-11-30 18:49:38

标签: javascript detection geometry

您好我需要在学校为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 个答案:

答案 0 :(得分:3)

您的支票应为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);

答案 1 :(得分:2)

在你的if语句中,请尝试这样做:

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

答案 2 :(得分:0)

具有边dxdy的三角形的长度(即点(x1, y1)(x2, y2)之间的距离dx = x2 - x1dy = y2 - y1 )等于:

sqrt(dx^2 + dy^2)

所以你可能想要:

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