Java 如何从螺旋线获得坐标

Java 如何从螺旋线获得坐标,java,coordinates,spiral,Java,Coordinates,Spiral,假设我有一个这样的螺旋 8 1-2 | | | 7 0 3 | | 6-5-4 它继续循环到无穷远。 就共同义务而言: 0 at (0, 0), 1 at (0, 1), 2 at (1, 1), 3 at (1, 0), 4 at (1, -1), 5 at (0, -1), 6 at (-1, -1), 7 at (-1, 0), 8 at (-1, 1) 等等 从另一个角度来看,螺旋上升1,右1,下降2,左2,上升3,右3,下降4,左4,等等 所以问题是,给定一个数字n,它代表螺旋

假设我有一个这样的螺旋

8 1-2
| | |
7 0 3
|   |
6-5-4
它继续循环到无穷远。 就共同义务而言:

0 at (0, 0),
1 at (0, 1),
2 at (1, 1),
3 at (1, 0),
4 at (1, -1),
5 at (0, -1),
6 at (-1, -1),
7 at (-1, 0),
8 at (-1, 1)
等等

从另一个角度来看,螺旋上升1,右1,下降2,左2,上升3,右3,下降4,左4,等等

所以问题是,给定一个数字n,它代表螺旋中的一个位置,我如何得到螺旋中该位置的坐标


我知道如何使用for循环来实现这一点,但随着数字越来越大,这会变得效率低下。

这难道不能用a来解决吗?你可以阅读很多不同的螺旋。我已经看过你之前指定的第二个链接,但我不知道如何在不使用循环的情况下实现这一点。你必须进行第一次传递,并在运行时索引坐标。不管怎样,我都会这样做。@DejaVuSansMono你说的第一次传球是什么意思?绕过螺旋线并存储所有值?当n达到数十亿时,这就不起作用了。