【问题标题】:Is there a numpy function to perform coordinate transformations?是否有一个 numpy 函数来执行坐标转换?
【发布时间】:2015-03-29 17:48:11
【问题描述】:

我正在 ipython 笔记本中开发一些关于数值方法的讲义,我需要包含一些坐标变换函数。我已经编写了这些函数(如下),但细节并不是主题的基础,如果我可以调用预先编写的函数,它将简化讲座。

我看到scipy图像旋转功能,但我只需要坐标平移和旋转。即

# transform from global to panel coordinates
def transformXY( self, x, y ):
    xp = x-self.xc
    yp = y-self.yc
    xpp = xp*self.sx+yp*self.sy
    ypp = yp*self.sx-xp*self.sy
    return [ xpp, ypp ]

# rotate velocity back to global coordinates
def rotateUV( self, u, v):
    up = u*self.sx-v*self.sy
    vp = v*self.sx+u*self.sy
    return [ up, vp ]  

其中,sxsy 是单位切向量分量。

【问题讨论】:

  • 您还可以将自己的函数移动到单独的 .py 文件中,然后从那里导入它们。这样他们的内部就隐藏在笔记本中了。
  • 我想说@PeterE 的评论应该是一个可以接受的答案
  • @weymouth in this answer 它展示了我如何使用 NumPy 实现通用笛卡尔坐标系转换
  • @weymouth 这些方法是类的吗?如果不是,您可能不应该使用名称self
  • @Roland。是的,他们是。

标签: python numpy


【解决方案1】:

从之前的评论复制和扩展:

您还可以将自己的函数移动到单独的 .py 文件中,然后从那里导入它们。这样他们的内部就隐藏在笔记本中了。 如果将它们放在名为例如的文件/模块中transformation.py 并将该文件放在您的笔记本文件旁边,然后您可以使用 from transformation import * 导入您的函数

正如现在已删除的答案中所建议的那样,我建议使用矩阵进行任何转换,尤其是旋转。在我看来,这比元素方面的修改要清晰得多。

编辑: Afaik 在 numpy 中没有预定义的坐标变换函数。在 sympy 中有something,但我不确定它有多大用处,对于简单的转换来说它有点接缝。 对于通过矩阵进行的转换,谷歌找到了我这个module,这似乎很全面。

【讨论】:

  • 使用import * 通常是bad idea
  • @ali_m 确实如此。我的观点更多地是关于笔记本所在的文件夹被搜索以查找要导入的模块。
  • 是的,我想这对我有用。对于后代 - 是我的问题的答案,“不”。
  • 如果你使用homogeneous coordinates,你也可以应用矩阵的翻译(基本上all affine transformations)。
猜你喜欢
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
相关资源
最近更新 更多