Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有更简单的方法来分割图像?_Javascript_Html - Fatal编程技术网

Javascript 有没有更简单的方法来分割图像?

Javascript 有没有更简单的方法来分割图像?,javascript,html,Javascript,Html,我有一个HTML文件,其中包含一个脚本,该脚本提供了一个带有扇区的映射。与A1、B2类似,但存在子部门,每个部门1-9个。例如,A1-5、B2-9等。截至目前,我为每个子部门提供了一系列IF语句。这里有一个例子 if(x>2093-161/3&&x2093-161*2/3&&x1932&&x2093-161/3&&x2093-161*2/3&&x1932&&x2093-161/3&&x2093-161*2/3&&x1932&&x

我有一个HTML文件,其中包含一个脚本,该脚本提供了一个带有扇区的映射。与A1、B2类似,但存在子部门,每个部门1-9个。例如,A1-5、B2-9等。截至目前,我为每个子部门提供了一系列IF语句。这里有一个例子

if(x>2093-161/3&&x<2093&&y<1932-161*2/3&&y>1771){
var isnumber=“9”;
}
如果(x>2093-161*2/3&&x<2093-161/3&&y<1932-161*2/3&&y>1771){
var isnumber=“8”;
}
如果(x>1932&&x<2093-161*2/3&&y<1932-161*2/3&&y>1771){
var isnumber=“7”;
}
如果(x>2093-161/3&&x<2093&&y<1932-161*1/3&&y>1932-161*2/3){
var isnumber=“6”;
}
如果(x>2093-161*2/3&&x<2093-161/3&&y<1932-161*1/3&&y>1932-161*2/3){
var isnumber=“5”;
}
如果(x>1932&&x<2093-161*2/3&&y<1932-161*1/3&&y>1932-161*2/3){
var isnumber=“4”;
}
如果(x>2093-161/3&&x<2093&&y<161*12&&y>1932-161*1/3){
var isnumber=“3”;
}
如果(x>2093-161*2/3&&x<2093-161/3&&y<161*12&&y>1932-161*1/3){
var isnumber=“2”;
}
如果(x>1932&&x<2093-161*2/3&&y<161*12&&y>1932-161*1/3){
var isnumber=“1”;

}
数学的基本思想,使用除法和mod得到剩余的

var宽度=2160;
var-sectorW=161;
职能部门(x){
var sectorX=数学楼层(x/sectorW);
var sub=x-(扇区w*sectorX%x);
var子部门X=数学层(子部门/(部门W/3))
返回{
sectorX:sectorX,
界别分组:界别分组
}
}
控制台日志(100,getSector(100))

log(180,getSector(180))
基本思想,使用除法和mod得到剩余部分

var宽度=2160;
var-sectorW=161;
职能部门(x){
var sectorX=数学楼层(x/sectorW);
var sub=x-(扇区w*sectorX%x);
var子部门X=数学层(子部门/(部门W/3))
返回{
sectorX:sectorX,
界别分组:界别分组
}
}
控制台日志(100,getSector(100))

console.log(180,getSector(180))
首先,我们需要获得相对于每个扇区的
x
y
坐标,这意味着我们需要将坐标转换为
0
161
之间的相对坐标。像这样:

var xRelativeToSector = x % 161;
var yRelativeToSector = y % 161;
var isnumber = 3 * (2 - row) + column + 1;
然后我们需要将这些相对坐标转换为列和行索引,我们有3个可能的列和3个可能的行,因此:

var column = Math.floor(3 * xRelativeToSector / 161);
var row = Math.floor(3 * yRelativeToSector / 161);
最后,我们使用
column
row
来计算数字,公式是
row*numberOfColumns+column
。请注意,本例中的行是从下到上排列的,因此我们使用
(2-row)
而不是
。我们还需要将
1
添加到结果中,因为公式给出了一个基于0的索引,我们需要一个基于1的索引。像这样:

var xRelativeToSector = x % 161;
var yRelativeToSector = y % 161;
var isnumber = 3 * (2 - row) + column + 1;
因此,您可以简单地将此代码分组到一个函数中,并使用它获取子部门编号:

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;
}

首先,我们需要得到相对于每个扇区的
x
y
坐标,这意味着我们需要将坐标转换为
0
161
之间的相对坐标。像这样:

var xRelativeToSector = x % 161;
var yRelativeToSector = y % 161;
var isnumber = 3 * (2 - row) + column + 1;
然后我们需要将这些相对坐标转换为列和行索引,我们有3个可能的列和3个可能的行,因此:

var column = Math.floor(3 * xRelativeToSector / 161);
var row = Math.floor(3 * yRelativeToSector / 161);
最后,我们使用
column
row
来计算数字,公式是
row*numberOfColumns+column
。请注意,本例中的行是从下到上排列的,因此我们使用
(2-row)
而不是
。我们还需要将
1
添加到结果中,因为公式给出了一个基于0的索引,我们需要一个基于1的索引。像这样:

var xRelativeToSector = x % 161;
var yRelativeToSector = y % 161;
var isnumber = 3 * (2 - row) + column + 1;
因此,您可以简单地将此代码分组到一个函数中,并使用它获取子部门编号:

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;
}


大概你想做什么?不幸的是,没有更简单的方法。但是请注意,您可以使用“贴图”标记创建img的图像贴图:扇区、正方形和矩形的大小是否相同?如果是这样的话,那么大小是多少?您可以清楚地清理代码,这样它看起来就不会那么重了。如果扇区在维度上是一致的,它似乎可以减少。尺寸是多少?我懒得在这里计算;)@在这张照片上,是的。它们是161像素。然而,我有其他不同大小的图片。也许。你想做什么?不幸的是,没有更简单的方法。但是请注意,您可以使用“贴图”标记创建img的图像贴图:扇区、正方形和矩形的大小是否相同?如果是这样的话,那么大小是多少?您可以清楚地清理代码,这样它看起来就不会那么重了。如果扇区在维度上是一致的,它似乎可以减少。尺寸是多少?我懒得在这里计算;)@在这张照片上,是的。它们是161像素。不过,我还有其他不同尺寸的图片。你能解释一下吗?我有点困惑…第一个计算是你能把多少大的部门挤进这个数字。第二个计算是减去全部扇区后剩下的值。第三,计算子部门,因为你将其分解为3。你能解释一下吗?我有点困惑…第一个计算是你能把多少大的部门挤进这个数字。第二个计算是减去全部扇区后剩下的值。第三,计算子部门,因为你将其分解为3。它没有为isnumber输出任何内容。这只是我的默认值。@Matt_Mack我不明白你的意思?您如何调用函数?我将您的示例代码复制并编辑到我的文件中,但是,它没有更改isnumber变量<代码>函数getSubSectorNumber(x,y){var xRelativeToSector=x%161;var yRelativeToSector=y%161;var列=Math.floor(3*xRelativeToSector/161);var行=Math.floor(3*yRelativeToSector)