首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有更简单的方法来划分图像吗?

有更简单的方法来划分图像吗?
EN

Stack Overflow用户
提问于 2020-10-20 18:50:29
回答 1查看 81关注 0票数 1

我有一个带有脚本的HTML文件,该脚本给出了一个包含扇区的映射。就像A1,B2,但是每个部门都有1-9个子部门.例如,A1-5,B2-9,等等。到目前为止,我对每个子扇区都有一堆IF语句。下面是一个例子

代码语言:javascript
复制
if (x > 2093-161/3 && x < 2093 && y < 1932-161*2/3 && y > 1771) {
    var isnumber = "9";
    }
  if (x > 2093-161*2/3 && x < 2093-161/3 && y < 1932-161*2/3 && y > 1771) {
    var  isnumber = "8";
    }
  if (x > 1932 && x < 2093-161*2/3 && y < 1932-161*2/3 && y > 1771) {
    var  isnumber = "7";
    }
  if (x > 2093-161/3 && x < 2093 && y < 1932-161*1/3 && y > 1932-161*2/3) {
    var  isnumber = "6";
    }
  if (x > 2093-161*2/3 && x < 2093-161/3 && y < 1932-161*1/3 && y > 1932-161*2/3) {
    var  isnumber = "5";
    }
  if (x > 1932 && x < 2093-161*2/3 && y < 1932-161*1/3 && y > 1932-161*2/3) {
    var  isnumber = "4";
    }
  if (x > 2093-161/3 && x < 2093 && y < 161*12 && y > 1932-161*1/3) {
    var  isnumber = "3";
    }
  if (x > 2093-161*2/3 && x < 2093-161/3 && y < 161*12 && y > 1932-161*1/3) {
    var  isnumber = "2";
    }
  if (x > 1932 && x < 2093-161*2/3 && y < 161*12 && y > 1932-161*1/3) {
    var  isnumber = "1";
    }

有更简单的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-20 19:53:53

首先,我们需要获得相对于每个扇区的xy坐标,这意味着我们需要将坐标转换为0161之间的相对坐标。就像这样:

代码语言:javascript
复制
var xRelativeToSector = x % 161;
var yRelativeToSector = y % 161;

然后,我们需要将这些相对坐标转换为列和行索引,我们有3个可能的列和3个可能的行,因此:

代码语言:javascript
复制
var column = Math.floor(3 * xRelativeToSector / 161);
var row = Math.floor(3 * yRelativeToSector / 161);

最后,我们使用columnrow来计算这个公式row * numberOfColumns + column的个数。请注意,本例中的行是从下到顶排序的,因此我们使用(2 - row)而不是row。我们还需要将1添加到结果中,因为公式给出了一个基于0的索引,我们需要一个基于1的索引。就像这样:

代码语言:javascript
复制
var isnumber = 3 * (2 - row) + column + 1;

因此,您可以简单地将这些代码分组到一个函数中,并使用它获取子扇区编号:

代码语言:javascript
复制
function getSubSectorNumber(x, y) {
    var xRelativeToSector = x % 161;
    var yRelativeToSector = y % 161;

    var column = Math.floor(3 * xRelativeToSector / 161);
    var row = Math.floor(3 * yRelativeToSector / 161);

    return 3 * (2 - row) + column + 1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64451589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档