我有以下方法来计算宽度和高度相等的正方形中的象限除以四个三角形:
function getQuadtrant(x, y, width, height){
if(y < width/2 && x < width-y && x > y) {
alert('top triangle');
}
if(y > width/2 && x > width-y && x < y) {
alert('bottom triangle');
}
if(x < height/2 && x < width-y && x < y) {
alert('left triangle');
}
if(x > height/2 && x > width-y && x > y) {
alert('right triangle');
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我有一个矩形,宽度为 249 像素,高度为 404 像素,如何获得象限?上面的代码在当前状态下会给出错误的输出,当我选择三角形的特定区域时,例如顶部三角形,它会警告“底部三角形”。
我会这样做:
function getQ(x, y, w, h) {
var quadrants = [
['left', 'top'],
['bottom', 'right']
];
if (y > h / w * x) {
quadrants = quadrants[0];
} else {
quadrants = quadrants[1];
}
return (y < -h / w * x + h) ? quadrants[0] : quadrants[1];
}
console.log(getQ(10, 20, 20, 20));?
Run Code Online (Sandbox Code Playgroud)
这个解决方案非常简单,并且基于对角线方程。如果y是主对角线之上-那么它要么left或top(quadrants[0])。如果y低于第二对角线 - 则为left,否则为top。底部也一样。
http://jsfiddle.net/zerkms/aCAfw/