无法将索引转换为行

时间:2018-06-13 23:26:12

标签: math matrix indices

我无法将索引编号转换为相应的列/行。表就像这样

table

图表在每个维度中缩放。每个广场周围都有一个空白区域。我需要将平方数转换为x / y坐标

我已经找到了专栏,但这一行仍然在逃避我。

这就是我现在所拥有的:

#define IDtoX(n, w) ((2*(n%w))+1)
#define IDtoY(n, h) ((2*(n/h))+1)

IDtoX按预期工作。 IDtoY没有。

输出应如下:

宽度为7且高度为5的网格:

n  y
0   3
1   3
2   3
3   1
4   1
5   1

宽度为9且高度为7的网格:

0   5
1   5
2   5
3   5
4   3
5   3
6   3
7   3
8   1
9   1
10  1
11  1

1 个答案:

答案 0 :(得分:0)

您使用函数IDtoY(n, h)失败的主要原因是结果还取决于w的值。因此,您必须将签名更改为IDtoY(n, w, h)。要看到这一点,请尝试使用相同的h但不同w来绘制更多数组,您会发现每个id的{​​{1}}也会发生变化。您被n的成功函数所迷惑,该函数确实不依赖IDtoX,而只依赖于hn。现在,如果你的w s从顶部开始为零,那么它们将不依赖于id,但是当你绘制数组时,它们会这样做。

我找到了多个有效的公式,但没有一个是漂亮的。这里有两个 - 如果你不喜欢它们,你可以找到一些等效的公式。

w

或者

#define IDtoY(n, w, h) (h - 2 - 2 * n // (w - 1) * 2)

其中#define IDtoY(n, w, h) (h - 2 - n // (w // 2) * 2) 运算符是整数除法。您没有说明您使用的是哪种计算环境 - 简单的//运算符可能适合您。