Wikipedia谈到极坐标:
在数学中,极坐标系是二维坐标系,其中平面上的每个点由距参考点的距离和距参考方向的角度确定。
这似乎非常适合描述六角形网格。以以下六角形网格为例:
A B C
D E F G
H I J K L
M N O P
Q R S
我们的参考点将是六边形('J')的中心,我们的参考角将是六边形('A')的左上角。但是,我们将根据从该点开始围绕六边形外部的顺时针台阶数(而不是角度)来描述角度。因此,我们将其称为“步数”而不是角度。
例如,“ C”在(2,2)处,因为它的半径为2(因为距中心“ J”有两个环),并且步数为2(从“ A”向前顺时针走了2个步) ')。类似地,“ O”位于(1、3),因为它距中心一圈,并且从“ E”(在参考角上)向前顺时针走了三步。
为了完整起见,“ J”位于(0,0),因为您需要0步和顺时针0步才能到达。
现在,您还可以使用笛卡尔坐标来描述六边形,但是由于偏移,这有点奇怪。就像极坐标一样,我们将中心设为(0,0)。每个空间也占据一个坐标,因此“ K”位于(2,0),而不是(1,0)。这会将“ A”置于(-2,2),将“ O”置于(1,-1)。
挑战
给定极坐标六边形坐标,以笛卡尔坐标输出相同的坐标。您可以采用这些坐标,并以任何合理的格式输出答案。这意味着您可以根据需要颠倒输入的顺序。这也意味着您可以将坐标输出为(Y,X),但是如果这样做,请在答案中提及这一点以避免混淆。
您不必处理负半径,但可能会遇到负角,或者角度超过六边形完整一圈。例如,您可能会收到(1,10)或(1,-2)作为输入。这些都将对应于我们先前的六角形中的“ N”。你不是要处理非整数输入。
样品IO
#Polar #Cartesian
(0, 0) (0, 0)
(1, 2) (2, 0)
(6, 0) (-6, 6)
(2, -3) (-3, -1)
(4, 23), (-5, 3)
(5, -3), (-8, 2)
(10, 50), (-20, 0)
(6, 10), (10, 2)
(8, 28), (0, -8)
(8, -20), (0, -8)