2024-04-25 01:56:09 发布
网友
我如何找到一个坐标系使用笛卡尔坐标系只是一个索引?在
我不喜欢网格的顺序,但如果可能的话,我想用索引来命名这个位置,而不是冠冕。在
我正在尝试为游戏平铺创建一个网格。在
也许我读得太少了,但是一个元组字典有什么问题呢,其中键是索引,元组包含坐标。在
假设坐标为:
那么
(x,y) -> x + N*y n -> (x,y) = (n%N, n/N)
另请参阅:this wikipedia picture以了解处理非有限范围的方法。 这是一个Excel图像。Excel是一个很好的计算原型工具。你可以一眼看到计算的每一步。在
显然,您可以很容易地将其映射到代码中;它处理无限四分之一网格的情况。在
您要寻找的是一个pairing function,其中(x,y)映射到某个整数N,反之亦然(函数是一对一的,并且是on)。基思的第一个答案(对于有限范围)很接近,但要求你知道正方形的最大尺寸,实际上是在配对函数中添加了另一个参数。他的Excel截图(无限范围)显示了它是如何完成的,但我想补充一些解释。在
给定要映射到坐标(x,y)的值:
首先,我们确定它属于哪一层。一个图层是Keith在他的Excel列D中显示的,其内容如下:
1 2 5 10 -> '1 2 3 4 4 3 6 11 -> 2 '2 3 4 9 8 7 12 -> 3 3 '3 4 16 15 14 13 -> 4 4 4 '4
你可以通过
给定层,找到对应于对角线的整数(上面用a'表示,第1、2、3、4层的值为1、3、7、13;基思的答案中的H列)
diagonal = (layer^2) - layer + 1
现在有了对角线,我们可以找到x和y的值(Keith列I和J):
if (N < diagonal): x = layer y = N - ((layer-1)^2) + 1 elif (N == diagonal): x = layer y = layer else: x = (layer^2) - N + 1 y = layer
我的公式看起来和基思的有点不同,但它们最终都是从同一个地方推导出来的。我独立地做了计算,然后把它们和基思的做了比较,发现它们几乎完全相同。在
也许我读得太少了,但是一个元组字典有什么问题呢,其中键是索引,元组包含坐标。在
假设坐标为:
那么
另请参阅:this wikipedia picture以了解处理非有限范围的方法。 这是一个Excel图像。Excel是一个很好的计算原型工具。你可以一眼看到计算的每一步。在
显然,您可以很容易地将其映射到代码中;它处理无限四分之一网格的情况。在
您要寻找的是一个pairing function,其中(x,y)映射到某个整数N,反之亦然(函数是一对一的,并且是on)。基思的第一个答案(对于有限范围)很接近,但要求你知道正方形的最大尺寸,实际上是在配对函数中添加了另一个参数。他的Excel截图(无限范围)显示了它是如何完成的,但我想补充一些解释。在
给定要映射到坐标(x,y)的值:
首先,我们确定它属于哪一层。一个图层是Keith在他的Excel列D中显示的,其内容如下:
你可以通过
^{pr2}$给定层,找到对应于对角线的整数(上面用a'表示,第1、2、3、4层的值为1、3、7、13;基思的答案中的H列)
现在有了对角线,我们可以找到x和y的值(Keith列I和J):
我的公式看起来和基思的有点不同,但它们最终都是从同一个地方推导出来的。我独立地做了计算,然后把它们和基思的做了比较,发现它们几乎完全相同。在
相关问题 更多 >
编程相关推荐