JavaScript函数:确定点是否在矩形之间

3
我有一个JavaScript函数,但它没有返回我期望的结果。我正在尝试确定一个x,y点是否存在于基于另外2个x,y点的矩形中。在我的代码中,x和y是问题中原始的点。z1和z2是矩形的左上角坐标,z3和z4是右下角坐标。
function isInside(x,y,z1,z2,z3,z4){
x1 = Math.min(z1, z3);
x2 = Math.max(z1, z3);
y1 = Math.min(z2, z4);
y2 = Math.max(z2, z4);
if ((x1 <= x <= x2) && (y1 <= y <= y2)) {
 console.log (x1 + "," + x + "," + x2); 
 console.log (y1 + "," + y + "," + y2);
 return true;
} else {
 return false;
};
};

如果我运行isInside(110,175,50,50,100,100)函数,结果会返回true。这是意外的,因为点(110,175)并不存在于矩形(50,50)和(100,100)之内。希望能得到帮助。

2个回答

5

(x1 <= x <= x2)在Javascript中不会按照你想象的方式运行:你需要使用x1 <= x && x <= x2

如果你将实际数字代入这些变量,并在Chrome的控制台中尝试,你会发现整个语句总是返回true:

1 <= 3 <= 5
true
9 <= 3 <= 5
true

没错。第一条语句的执行顺序不正确。 (50 <= 117 <= 100) 的计算结果为 (true <= 100) - 这将返回 true。 - MildlySerious
我尝试过使用 if ((x1 <= x && x <= x2) && (y1 <= y && y <= y2)) {,但结果相同。 - SystemX17
以下是关于编程的内容,请将其从英语翻译成中文。只返回已翻译的文本:(尝试,因为我认为这就是你说的,而之前我没有发布) - SystemX17
@SystemX17 试着在 x1<=xx<=x2 周围加上括号。虽然不应该必要。 - John Dvorak

3

here is the answer

function isInside(x, y, z1, z2, z3, z4) {
    x1 = Math.min(z1, z3);
    x2 = Math.max(z1, z3);
    y1 = Math.min(z2, z4);
    y2 = Math.max(z2, z4);
    if ((x1 <= x ) && ( x <= x2) && (y1 <= y) && (y <= y2)) {
        console.log(x1 + "," + x + "," + x2);
        console.log(y1 + "," + y + "," + y2);
        return true;
    } else {
        return false;
    };
};

如果您需要检查x是否在ab之间,您需要像与计算机交流一样进行操作:

如果x大于a且小于b,那么它将给出正确的结果。

if(x >= a && x <= b){
   // true
}

1
谢谢。如果四边形的四个角落有四个坐标可用,该怎么办? - sj_959

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接