您好我需要在学校为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);
答案 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)
具有边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)) {