Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Image 在平铺集中获取平铺的左上角位置_Image_Algorithm_Tile - Fatal编程技术网

Image 在平铺集中获取平铺的左上角位置

Image 在平铺集中获取平铺的左上角位置,image,algorithm,tile,Image,Algorithm,Tile,我有一个tileset(一个充满其他小图像的图像)。我想得到一个叫做tile的小图片,这样我就可以用它做点什么了。我知道每个瓷砖的大小(它们都是相同的大小)。 我有两个方程式: x = (i % tiles_hor) * tile_h y = (i % tiles_ver) * tile_w x = (i % tiles_hor) * tile_w y = (i / tiles_hor) * tile_w 其中i表示我想要得到的磁贴索引 tiles\u hor是水平方向上的瓷砖数量 til

我有一个tileset(一个充满其他小图像的图像)。我想得到一个叫做tile的小图片,这样我就可以用它做点什么了。我知道每个瓷砖的大小(它们都是相同的大小)。 我有两个方程式:

x = (i % tiles_hor) * tile_h
y = (i % tiles_ver) * tile_w

x = (i % tiles_hor) * tile_w
y =  (i / tiles_hor) * tile_w
其中i表示我想要得到的磁贴索引
tiles\u hor是水平方向上的瓷砖数量
tiles\u ver是垂直方向上的瓷砖数量
tile_wtile_h分别是瓷砖集中每个瓷砖的宽度和高度

分幅按顺序接收其索引,如下所示:

01 02 03 04 05 
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
因此,每对数字都是tileset中一个tile的索引。 假设我想得到瓷砖04(假设每个瓷砖的尺寸为32x32): 对于第一个等式:

x=(4%5)*32=128。所以它在图像中的x位置是128
y=(4%5)*32=0。所以图像中的y是0

使用第二个等式:
x=(4%5)*32=128。所以它在图像中的x位置是128
y=(4/5)*32=0。这里是0,因为我们首先要将第一个表达式四舍五入到最接近的小号(我不知道我的表达式是否正确。如果不正确,请更正)

请注意,我们正在考虑一个完美的方形瓷砖集(在本例中为5x5)

我的问题是:
第二种方法适用于大多数情况。第一个停止工作时,没有完美的正方形瓷砖集的和高的高度。 那我做错了什么


还有,一个释放出一个非常重要的值(tiles\u ver和tile\u h)的方程怎么可能是正确的?我错过了什么?

如果不考虑TILYH,那就不用考虑了,就像在帖子里所做的那样。这会在短期或长期给我带来什么?如果tile\u w==tile\u h,那么你可以使用tile\u w。否则,你需要同时考虑它们。瓦卢。我想举一个例子,不考虑瓷砖会影响结果。你能看到吗?当然,如果tile_h是1,tile_w是32,如果你想计算tile 25,你的方程没有一个是有效的。因为y=(25/32)* 32=0*32=0,如果不是考虑TILYH,根本就不考虑,就像在帖子中所做的那样。这会在短期或长期给我带来什么?如果tile\u w==tile\u h,那么你可以使用tile\u w。否则,你需要同时考虑它们。瓦卢。我想举一个例子,不考虑瓷砖会影响结果。你能看到吗?当然,如果tile_h是1,tile_w是32,如果你想计算tile 25,你的方程没有一个是有效的。原因y=(25/32)*32=0*32=0
x = ((i - 1) % tiles_hor) * tile_w
y = ((i - 1) / tiles_hor) * tile_h