Python 如何使用只有索引的笛卡尔坐标系查找坐标?
如何使用只有索引的笛卡尔坐标系查找坐标Python 如何使用只有索引的笛卡尔坐标系查找坐标?,python,math,Python,Math,如何使用只有索引的笛卡尔坐标系查找坐标 例如,4分对1,2,9分对1,3 假设块始终围绕1,1 我不同意网格的顺序,但如果可能的话,我想通过索引而不是冠来调用位置 我正在尝试为游戏瓷砖创建网格 假设坐标为: 纯整数 有限的,比如说在一个尺寸为“N”的正方形中 然后 另请参见:了解处理非有限范围的方法。 这是一个Excel图像。Excel是一个很好的计算原型工具。您可以一眼看到计算的每个步骤 显然,您可以很容易地将其映射到代码中;它处理无限四分之一网格的情况。假设坐标为: 纯整数 有限的
- 例如,4分对1,2,9分对1,3李>
- 假设块始终围绕1,1
假设坐标为:
- 纯整数
- 有限的,比如说在一个尺寸为“N”的正方形中
显然,您可以很容易地将其映射到代码中;它处理无限四分之一网格的情况。假设坐标为:
- 纯整数
- 有限的,比如说在一个尺寸为“N”的正方形中
显然,您可以很容易地将其映射到代码中;它处理无限四分之一网格的情况。在这里做一些假设,但您可以将其作为线性方程进行求解:
9 = 1x + 3y
4 = 1x + 2y
-----------
5 = 0x + 1y
-> 5 = y
-> -6 = x, by plugging y back into one of the two linear equations
现在您已经有了(x,y)
,可以将任何坐标对(x',y')
转换为索引:
newIndex = -6x' + 5y
如果你需要换位思考,使用一个模数。在这里做一些假设,但你可以将其作为线性方程求解:
9 = 1x + 3y
4 = 1x + 2y
-----------
5 = 0x + 1y
-> 5 = y
-> -6 = x, by plugging y back into one of the two linear equations
现在您已经有了(x,y)
,可以将任何坐标对(x',y')
转换为索引:
newIndex = -6x' + 5y
如果你需要环绕,使用一个模数。也许我对这个读得太少,但是元组字典有什么问题,其中键是索引,元组包含坐标。也许我对这个读得太少,但是元组字典有什么问题,其中键是索引,元组中包含坐标。你想要的是a,其中(x,y)映射到某个整数N,反之亦然(函数是一对一的)。Keith的第一个答案(对于有限范围)很接近,但需要知道正方形的最大大小,实际上是在配对函数中添加了另一个参数。他的Excel屏幕截图(无限范围)显示了它是如何完成的,但我想补充一些解释 给定要映射到坐标(x,y)的值N: 首先,我们定位它所属的层。一个图层是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
您可以通过以下方式找到N层所属的层
layer = math.floor(math.sqrt(N - 1)) + 1
给定层,找到对应于对角线的整数(上面用a'表示,层1、2、3、4的值为1、3、7、13;列H)
现在有了对角线,我们可以找到x和y的值(基思的列I和J):
if(N<对角线):
x=层
y=N-((第1层)^2)+1
elif(N=对角线):
x=层
y=层
其他:
x=(层^2)-N+1
y=层
我的公式看起来和基思的有点不同,但它们最终是从同一个地方推导出来的。我独立进行了计算,然后将它们与Keith的进行了比较,发现它们几乎完全相同。你喜欢的是所谓的a,其中(x,y)映射到某个整数N,反之亦然(函数是一对一和一对上的)。Keith的第一个答案(对于有限范围)很接近,但需要知道正方形的最大大小,实际上是在配对函数中添加了另一个参数。他的Excel屏幕截图(无限范围)显示了它是如何完成的,但我想补充一些解释 给定要映射到坐标(x,y)的值N: 首先,我们定位它所属的层。一个图层是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
您可以通过以下方式找到N层所属的层
layer = math.floor(math.sqrt(N - 1)) + 1
给定层,找到对应于对角线的整数(上面用a'表示,层1、2、3、4的值为1、3、7、13;列H)
现在有了对角线,我们可以找到x和y的值(基思的列I和J):
if(N<对角线):
x=层
y=N-((第1层)^2)+1
elif(N=对角线):
x=层
y=层
其他:
x=(层^2)-N+1
y=层
我的公式看起来和基思的有点不同,但它们最终是从同一个地方推导出来的。我独立进行了计算,然后将它们与基思的进行了比较,发现它们几乎完全相同。“只有一个索引”是什么?这是家庭作业吗?我想你需要澄清索引是如何映射到坐标的。例如,使用你给出的两个例子,坐标可能是
(1,sqrt(index))
——但我怀疑这是真的。哦,这听起来像是个家庭作业问题。你最好给出完整的问题,你到目前为止尝试过的,以及一个或多个具体的问题,而不是试图让别人为你做所有的事情。这不是一个家庭作业问题,但如果你知道我在哪里可以读到这方面的内容,我希望有这样的参考。“只有一个索引”指向什么?这是家庭作业吗?我想你需要澄清索引是如何映射到坐标的。例如,使用你给出的两个例子,坐标可能是(1,sqrt(index))
——但我怀疑这是真的。哦,这听起来像是个家庭作业问题。你最好给出完整的问题,到目前为止你已经尝试了什么,以及