在网格螺旋上返回 X 或 Y 的公式,但只有方向改变?

Formula for returning X or Y on a grid spiral, but only the direction changes?

我正在尝试从 n 输入中找到 return X 或 Y 的两个公式。这些坐标应该在一个螺旋网格模式上,类似于Ulam螺旋,但是n表示的不是螺旋上的位置,而是方向的变化。

n = 1, return 0,1;
n = 2, return 1,1;
n = 3, return 1,-1;
n = 4, return -1,-1;
n = 5, return -1,2;
n = 6, return 2,2;
n = 7, return 2,-2;
n = 8, return -2,-2;

应该是两个离散公式,只需提供 n 并得到 X,再提供一个得到 Y。有效地 this 仅在 X 或 Y 的单行中以 n 作为循环位置输入。

查看 X 值:

0 1 1 -1 -1 2 2 -2 -2 3 3 -3 -3 ...

进行明显的分组并与n:

进行比较
n: 1   2  3  4  5   6  7  8  9   10 ...
x: 0   1  1 -1 -1   2  2 -2 -2    3 ...

再增加一行k = (n+2)/4(四舍五入,我不知道ascii中的floor函数怎么表示)和m = n mod 4 :

k: 0   1  1  1  1   2  2  2  2    3 ...
m: 1   2  3  0  1   2  3  0  1    2

这应该足以说明如何用您最喜欢的语言呈现 x。

然后y很简单:y(n) = x(n+1)