圆碰撞Javascript

RR_*_*990 6 javascript geometry detection

您好,我需要为学校编写一个用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);
Run Code Online (Sandbox Code Playgroud)

Gab*_*oli 6

您的支票应为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);
Run Code Online (Sandbox Code Playgroud)


并为较少的计算实现(使用es7语法作为代码段)使用

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);
Run Code Online (Sandbox Code Playgroud)

正如Darek Rossman在回答中所显示的那样。

/sf/answers/583202231/