我无法将索引编号转换为相应的列/行。表就像这样
图表在每个维度中缩放。每个广场周围都有一个空白区域。我需要将平方数转换为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
答案 0 :(得分:0)
您使用函数IDtoY(n, h)
失败的主要原因是结果还取决于w
的值。因此,您必须将签名更改为IDtoY(n, w, h)
。要看到这一点,请尝试使用相同的h
但不同w
来绘制更多数组,您会发现每个id
的{{1}}也会发生变化。您被n
的成功函数所迷惑,该函数确实不依赖IDtoX
,而只依赖于h
和n
。现在,如果你的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)
运算符是整数除法。您没有说明您使用的是哪种计算环境 - 简单的//
运算符可能适合您。