如何将像素转换为索引

How to convert pixels into indices

问题是我需要更改矩阵,我只能访问这些以像素为单位的位置 xy,如何转换 xy 进入索引 ?

例如:

char *map[20][17] = { "WWWWWWWWWWWWWWWW", "WFFFFFFFFFFFFFFW", "WFWWWWWFFWWWWWFW", "WFFFFFFFFFFFFFFW", "WFWWWWWFFWWWWWFW", "WFFFFFFFFFFFFFFW", "WFWWWWWWWWWWWWFW", "WFFFFFFWWFFFFFFW", "WFFFWFFWWFFWFFFW", "WFWWWFFFFFFWWWFW", "WFWFFFWWWWFFFWFW", "WFFFWFFFFFFWFFFW", "WFWWWFWFFWFWWWFW", "WFFFWFWWWWFWFFFW", "WFFFFFFFFFFFFFFW", "WFFFWWWWWWWWFFFW", "WFWFFFFFFFFFFWFW", "WFWWWWWFFWWWWWFW", "WFFFFFFFFFFFFFFW", "WWWWWWWWWWWWWWWW"};

int x_pac = 240, y_pac = 360;

使用 x_pacy_pac 访问 map 上的某个位置,在这种情况下,每个字符的高度 = 30 和宽度 = 30。

您只需将 x-y 个位置除以宽度和高度即可得到索引。 row = y_pac / heightcol = x_pac / width

我想我可以想象你的输入。

所以您有一个包含位图 "image" 个字符集合的地图。 每个位图的大小 "image" 字符可以变化(例如 30x30)。

举个例子:你有 4x4 的字符映射,每个字符的尺寸为 6x6。

如果要访问特定字符中的特定像素,请使用此公式:

// matrix dimension
matrix_row = <row>
matrix_col = <col>

// bitmap dimension
char_row = <char_row>
char_col = <char_col>
num_pixels = char_row * char_col

// get specific "character" in grid
character_index = ((matrix_row - 1)  * matrix_col) * num_pixels

// get specific "pixel" in character
pixel = character_index * ((char_row - 1) * char_col + pixel_offset)