使用python计算笛卡尔坐标

时间:2012-05-06 12:07:07

标签: python math cartesian

自高中以来没有使用过笛卡尔图,我实际上发现它们需要与现实生活相关。这可能是一个奇怪的需要,但我必须将数据分配到笛卡尔图上的点,这可以通过调用笛卡尔坐标来访问。图表上需要有无限点。对于例如。

                       ^
 [-2-2,a ][ -1-2,f ][0-2,k ][1-2,p][2-2,u]
 [-2-1,b ][ -1-1,g ][0-1,l ][1-1,q][1-2,v]
<[-2-0,c ][ -1-0,h ][0-0,m ][1-0,r][2-0,w]>
 [-2--1,d][-1--1,i ][0--1,n][1-1,s][2-1,x]
 [-2--2,e][-1--2,j ][0--2,o][1-2,t][2-2,y]
                       v

实际值并不重要。但是,假设我在变量m上,这将在笛卡尔图上为0-0。如果我向上移动一个空格,我需要计算笛卡尔坐标,这将使我保持在l。

理论上,假设我有一个python变量==(“0-1”),我相信我需要将它拆分为 - ,这将留下x = 0,y = 1。然后,我需要执行(int(y)+1),然后将x重新附加到y,中间带有“ - ”。

我想要做的是调用带有参数(x + 1,y + 0)的函数,并让程序执行上述操作,然后返回它计算出的笛卡尔坐标。

我实际上不需要检索空间的值,只需要检索笛卡尔坐标。我想我可以使用re.sub(),但是我不知道如何正确地格式化这个函数来分割' - ',我也不确定如何正确地执行计算。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

要表示无限格,请使用将元组(x,y)映射到值的字典。

grid[(0,0)] = m
grid[(0,1)] = l

print(grid[(0,0)])

答案 1 :(得分:1)

我不确定我是否完全理解这个问题,但我建议使用列表列表来获得2D结构。

然后查找特定值,你可以coords[x-minX][y-minY],其中x,y是你想要的整数索引,minX和minY是最小值(在你的例子中为-2)。

您可能还想查看NumPy,它提供了更加灵活的n-dim对象数组类型,允许您“切片”每个轴或获取子范围。如果您不熟悉这样的数组,NumPy文档可能会有所帮助。

编辑: 要将0-1之类的字符串拆分为可以使用的组成整数:

s = '0-1'
[int(x) for x in s.split('-')]

答案 2 :(得分:0)

您想要在变量名称和坐标之间创建双向映射,然后您可以按变量名称查找坐标,将函数应用于它,然后使用函数生成的新坐标集找到下一个变量。

您可以将函数应用到的数字元组之间的映射,以及可用作dict中的键的字符串,以及后面的字符串很容易。