计算矩形内三角形的象限
Calculate quadrant for triangles inside a rectangle
我有以下方法来计算宽度和高度相等的正方形中的象限除以四个三角形:
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');
}
}
然而,我有一个宽度为249px、高度为404px的矩形div,如何获得象限?当上面的代码处于当前状态时,会给出错误的输出,当我选择三角形的特定区域时,例如顶部三角形,它会提醒"底部三角形"。
我会这样做:
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));
这个解决方案是非常琐碎的,并且基于对角线方程。如果y
在主对角线上方,则它是left
或top
(quadrants[0]
)。如果y
在次对角线以下,则为left
,否则为top
。底部也是如此。
http://jsfiddle.net/zerkms/aCAfw/
您的前两个测试是比较y
和width/2
,而我认为应该将其与height/2
进行比较。
编辑:这里有一些修改后的代码,适用于所有矩形,而不仅仅是正方形:
function getQuadrant(x,y,width,height) {
var l = {x:x-width/2,y:y-height/2}, // "local" coords - origin at centre
g = l.x/width*height; // "gradient" - position on diagonal
if( l.y < -g && l.y < g) alert("Top");
else if( l.y < -g && l.y >= g) alert("Right");
else if( l.y >= -g && l.y >= g) alert("Bottom");
else if( l.y >= -g && l.y < g) alert("Left");
else alert("Tell Kolink he messed up");
}
相关文章:
- 根据元素和容器大小计算边距
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 可以't计算自定义谷歌地图的js
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- JavaScript计算帮助(乘以时间)
- 如何计算对象文字中的键
- JavaScript循环无法正确计算/显示结果
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- 四舍五入JavaScript计算
- 计算HTML中的页数
- 使用jQuery计算数组中的对象以更改进度条
- 如何在jquery中使用实时计算求和值
- 计算矩形内三角形的象限
- 计算三角形面积-作为变量工作,但不作为函数包装
- 在javascript或jquery中计算三角形的一侧(余弦定律)
- 用Javascript计算三角形的角度
- 从用户输入边计算三角形的面积和周长
- 诺基亚Here地图计算多边形(如三角形)的质心会产生错误的结果