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)
您的支票应为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在回答中所显示的那样。
归档时间: |
|
查看次数: |
5660 次 |
最近记录: |