首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何操作Python中的笛卡尔坐标?

如何操作Python中的笛卡尔坐标?
EN

Stack Overflow用户
提问于 2014-05-29 18:34:04
回答 4查看 9.2K关注 0票数 4

我有一个基本的笛卡尔坐标集合,我想用Python来操作它们。例如,我有以下框(坐标显示为角):

0,4-4,4

0,0-4,0

我希望能够找到以(0,2)开头,然后转到(4,2)的行。我是否需要将每个坐标分解成单独的X和Y值,然后使用基本数学,还是有方法将坐标处理为(x,y)对?例如,我想说:

代码语言:javascript
复制
New_Row_Start_Coordinate = (0,2) + (0,0)
New_Row_End_Coordinate = New_Row_Start_Coordinate + (0,4)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-29 18:58:15

听起来你在找点课。这里有一个简单的例子:

代码语言:javascript
复制
class Point:
  def __init__(self, x, y):
    self.x, self.y = x, y

  def __str__(self):
    return "{}, {}".format(self.x, self.y)

  def __neg__(self):
    return Point(-self.x, -self.y)

  def __add__(self, point):
    return Point(self.x+point.x, self.y+point.y)

  def __sub__(self, point):
    return self + -point

然后你可以这样做:

代码语言:javascript
复制
>>> p1 = Point(1,1)
>>> p2 = Point(3,4)
>>> print p1 + p2
4, 5

您可以根据需要添加任意数量的其他操作。有关可以实现的所有方法的列表,请参见Python文档

票数 6
EN

Stack Overflow用户

发布于 2014-05-29 18:49:13

根据您想要处理的坐标,您还可以滥用络合数字:

代码语言:javascript
复制
import cmath

New_Row_Start_Coordinate = (0+2j) + (0+0j)
New_Row_End_Coordinate = New_Row_Start_Coordinate + (4+0j)

print New_Row_End_Coordinate.real
print New_Row_End_Coordinate.imag
票数 1
EN

Stack Overflow用户

发布于 2014-05-29 18:38:15

Python本机不支持列表上的元素操作;您可以通过列表理解或map来实现它,但是对于这个用例来说,这有点笨重。如果你做了很多这样的事情,我建议你看看NumPy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23940493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档